Обнаружение, удерживается ли ключ - PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение, удерживается ли ключ - Python

Сообщение Anonymous »

мой вариант использования < /h2>
Мне нужно знать, когда нажата и удерживается клавиша (конкретной). В случае использования после обнаружения довольно прост. Когда ключ выпущен, отправьте сигнал, чтобы остановить обратный вызов (который я уже знаю). < /P>
желаемое поведение < /h2>
Вот грубая схема Как выглядит алго: < /p>

Код: Выделить всё

def the_callback():
if key_held == the_hotkey:
someObj.start()  # this class Obj works totally well so no issues here on
elif key_released == the_hotkey:
someObj.stop()
else:
# we don't care. continue looking for Keyboard events

# here any kinda listener or just a loop which passes events to the callback
Я должен упомянуть, что любой вид слушателя, который блокирует выполнение, в порядке, так как он будет работать в своем собственном потоке (уже запустив pynput.keyboard.listener в потоке, так что не Проблема)
Что я попробовал
Я использовал pynput и его pynput.keyboard.listener , чтобы обнаружить ключ -Потремляет и вызовет обратные вызовы, но я не смог бы сделать эту работу, чтобы обнаружить, когда ключ удерживается.

Код: Выделить всё

# not real code. just rough scheme
def on_pressed(key):
if key == my_hotkey:
if running_already:  # this part works well already
obj.stop()
else:
obj.start()
else:
# we don't care

with pynput.keyboard.Listener(on_press=on_pressed) as listener:
listener.join()  # blocking call until SystemExit, `return False` from callback or `listener.stop()`

У меня очень сильное чувство , которое я могу выполнить эту работу, добавив on_release = ore_callback_that_handles_releases (доступно в pynput.keyboard.listener ). < /p>
Возможно, сохранив последний известный нажатый нажатый клавиш, и проверив, была ли выпущенная клавиша такая же, как и горячая клавиша, которая была нажата ранее, но я не уверен, как бы я пошел Это и может ли это работать? Ключи удерживаются. Этот ниже код достигает почти того, что я хочу: < /p>

Код: Выделить всё

import keyboard as kb, time

while 1:
while kb.is_pressed('q'):
print('Key is held')
time.sleep(0.5)  # sleep added just to stop it from spamming the stdout

else:
print('No it\'s Not')
time.sleep(0.5)
< /code>
Проблема с этим решением заключается в том, что она не очень хорошо подходит для OSX и Ubuntu. И у него есть некоторые проблемы, работающие со специальными ключами. Более того, у меня есть Hotkey, хранящаяся как pynput.keyboard.key.f7 
(например, EG) или pynput.keyboard.keycode (char = 's') # для клавиш символов и эти перечисления имеют разные значения чем какая клавиатура использует для сканирования идентификаторов ключей (с помощью keyboard.hook () ).
Окончательный вопрос
Как мне обнаружить ключ, который удерживается. Я бы предпочел достичь этого, используя pynput , поскольку остальная часть базы кода использует его, но 'клавиатура тоже хорошо. > и on_release = ore_callback Это может быть достигнуто, но я не совсем уверен в этом. Наконец, решение предпочтительнее для кросс -платформы (я в порядке с использованием трех разных функций в зависимости от значения платформы. О достижении этого? Это работает почти идеально с всего 1 недостатком. И это то, что он не прислушивается к Keypresess прямо с начала программы. Хорошо, что после того, как он впервые обнаружит клавишу, он работает безупречно.
Чего мне там не хватает?

Подробнее здесь: https://stackoverflow.com/questions/671 ... own-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Обнаружение, если клавиша удерживается нажатой – python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение, если клавиша удерживается нажатой – python
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Какова обычная практика хранения bool, чтобы определить, удерживается ли ключ?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Какова обычная практика хранения bool, чтобы определить, удерживается ли ключ?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Расширения Chrome: какой -нибудь способ сказать, когда нажата и удерживается ключ?
    Anonymous » » в форуме Jquery
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»