обнаружить нажатие клавиш в Python?

Я делаю программу типа секундомера на python, и я хотел бы знать, как определить, нажата ли клавиша (например, p для паузы и s для остановки), и мне бы не хотелось, чтобы это было что-то вроде raw_input, который ожидает ввода пользователя перед продолжением выполнения. Кто-нибудь знает, как это сделать в цикле while?

Кроме того, я хотел бы сделать этот кроссплатформенный, но если это невозможно, то моя основная цель разработки — linux


83

У Python есть клавиатура модуль с множеством функций. Установите его, возможно, с помощью этой команды:

  pip3 install keyboard  

Затем используйте его в коде, например:

  import keyboard # using module keyboard while True: # делаем цикл try: # использовал try, чтобы при нажатии пользователем другой клавиши, кроме данной, ошибка не отображалась, если keyboard.is_pressed ('q')  : # если нажата клавиша 'q' print ('Вы нажали клавишу!') break # завершение цикла, кроме: break # если пользователь нажал клавишу, отличную от данной клавиши, цикл прервется  

Улучшите этот ответ
отредактировано 19 ноября ’19 в 19:31
Сообщество ♦
111 серебряных значков
ответил 26 июня ’17 в 06:35
  • 3
    Я не конечно для Linux, но для меня он работает в Windows. — user8167727, 26 июня ’17, 6:52
  • 94
    keyboard очевидно требует root в linux:/- Inaimathi, 14 ноя. 2017, 16:05
  • Я пробовал это решение, но когда я пытаюсь импортировать модуль после его установки, я получаю сообщение «ImportError: Нет модуля с именем «клавиатура», поэтому он не работал. Я заглянул в репозиторий GitHub и обнаружил связанную проблему, но это не решает проблему. Затем я попытался загрузить репо и выполнить некоторые из его примеров, но получаю сообщение «ImportError: вы должны быть пользователем root, чтобы использовать эту библиотеку в Linux», как ранее прокомментировал @Inaimathi. По-видимому, это полный модуль для управления клавиатурой с помощью Python, но требование root — большой недостаток 🙁 — Ivanhercaz 16 мая 2018 г., 14:36 ​​
  • 3
    «Чтобы избежать зависимости от X, части Linux читают необработанные файлы устройств (/dev/input/input *), но для этого требуется root. «- Жруки, 06 августа 2018 г., 13:39
  • 8
    Я не понимаю, почему попытка: except: может быть полезной. — TypicalHog 26 сен 2018 в 21:04
| показать 5 дополнительных комментариев

Python имеет модуль keyboard с много функций. Установите его, возможно, с помощью этой команды:

  pip3 install keyboard  

Затем используйте его в коде, например:

  import keyboard # using module keyboard while True: # делаем цикл try: # использовал try, чтобы при нажатии пользователем другой клавиши, кроме данной, ошибка не отображалась, если keyboard.is_pressed ('q')  : # если нажата клавиша 'q' print ('Вы нажали клавишу!') break # завершение цикла, кроме: break # если пользователь нажал клавишу, отличную от данной клавиши, цикл прервется  

58

Для тех, кто использует окна и изо всех сил пытается найти рабочий ответ вот мой: pynput

  из pynput.keyboard import Key, Listenerdef on_press (key): print ('{0} Press'.format (key)) def on_release  (key): print ('{0} release'.format (key)) if key == Key.esc: # Остановить прослушиватель return False # Собирать события до тех пор, пока они не будут выпущены с помощью Listener (on_  press = on_press, on_release = on_release) в качестве слушателя: listener.join ()  

Вышеупомянутая функция напечатает любую нажатую клавишу, а также начнет действие, когда вы отпустите ‘esc’ ключ. Документация по клавиатуре здесь для более разнообразного использования.

Маркус фон Броади выделил потенциальную проблему, а именно: Этот ответ не требует, чтобы вы были в текущем окне, чтобы этот скрипт был активирован, решение в окна:

  from win32gui import GetWindowText, GetForegroundWindowcurrent_window = (GetWindowText (GetForegroundWindow ())) желаемый_window_name = "Секундомер" # Каким бы ни было имя вашего окна # Бесконечное  циклы опасны. while True: # Не слишком полагайтесь на эту строку кода и обязательно адаптируйте ее к своему проекту.  если current_window == желаемое_имя_окна: со слушателем (on_press = on_press, on_release = on_release) в качестве слушателя: listener.join ()  

Улучшите этот ответ
отредактировано 18 января ’20 в 14:50
ответил 8 ноября 2018 в 15:03
  • 8
    @ nimig18 … и не требуется root 🙂 — cz 23 августа ’19 в 7:50
  • 1
    Есть проблема с этим решением (не уверен в альтернативах): клавишу не нужно нажимать внутри окна консоли, чтобы она вступила в силу. Представьте, что у вас есть сценарий, который выполняет некоторую работу до тех пор, пока не будет нажата клавиша ESC, а затем вы нажмете ее в другой программе. — Маркус фон Броуди, 14 сен. ’19 в 9:04
  • 1
    @MarkusvonBroady Я предполагаю, что win32gui будет достаточно, чтобы решить эту проблему, я отредактировал свой ответ таким образом, чтобы потенциально решить эту проблему, по крайней мере, для пользователей Windows. — Митрек 4 окт. ’19 в 20:33
  • @Mitrek Я пробовал это, но мой код останавливает дальнейшее выполнение и застревает здесь. Он работает как input (). У меня есть код, выполняющийся в selenium, firefox, но как только эта последовательность встречается, дальнейших действий нет. — Лакшми Нараянан 17 окт., В 07:43
  • 1
    Должен был быть принятый ответ, поскольку он работает как в Linux, так и в Windows — Акаш Карнатак, 22 апр.2020, 09:34
| показать 1 дополнительный комментарий

Для тех, кто работает с окнами и изо всех сил пытался найти рабочий ответ здесь mine: pynput

  из pynput.keyboard import Key, Listenerdef on_press (key): print ('{0} loaded'.format (key)) def on_release (key):  print ('{0} release'.format (key)) if key == Key.esc: # Остановить прослушиватель return False # Собирать события до тех пор, пока они не будут выпущены с помощью Listener (on_press = on_press, on_release = on_release) как listener: listener.join ()   

Приведенная выше функция будет печатать, какую бы клавишу вы ни нажимали, а также запускать действие, когда вы отпускаете клавишу «esc». Документация по клавиатуре здесь для более разнообразного использования.

Маркус фон Броади выделил потенциальную проблему, а именно: Этот ответ не требует, чтобы вы были в текущем окне, чтобы этот скрипт был активирован, решение в окна:

  from win32gui import GetWindowText, GetForegroundWindowcurrent_window = (GetWindowText (GetForegroundWindow ())) желаемый_window_name = "Секундомер" # Каким бы ни было имя вашего окна # Бесконечное  циклы опасны. while True: # Не слишком полагайтесь на эту строку кода и обязательно адаптируйте ее к своему проекту.  если current_window == желаемое_имя_окна: со слушателем (on_press = on_press, on_release = on_release) в качестве слушателя: listener.join ()  

42

Больше возможностей можно сделать с помощью модуля keyboard . Вы можно установить этот модуль с помощью pip install keyboard Вот некоторые из методов:


Содержание
  1. Метод №1:
  2. Метод № 2:
  3. Метод № 3:
  4. Метод № 4 :
  5. Метод №1:
  6. Метод № 2:
  7. Метод № 3:
  8. Метод № 4 :
  9. /keyboard
  10. Возможности
  11. Использование
  12. Пример
  13. Известные ограничения:
  14. Содержание
  15. клавиатура. = 'down' клавиатура. KEY_UP = 'up' class keyboard. KeyboardEvent KeyboardEvent. устройство KeyboardEvent. event_type KeyboardEvent. is_keypad KeyboardEvent. модификаторы KeyboardEvent. KeyboardEvent. KeyboardEvent. время KeyboardEvent. to_json (self, sure_ascii = False) [source] keyboard. all_modifiers = {'alt', 'alt gr', 'ctrl', 'left alt', 'left ctrl', 'сдвиг влево', 'влево windows ',' right alt ',' right ctrl ',' правый t shift ',' right windows ',' shift ',' windows '} клавиатура. sided_modifiers = {'alt', 'ctrl', 'shift', 'windows'} клавиатура. версия = '0.13.5' keyboard. is_modifier (ключ) [source] Возвращает True, если key — это отсканированный код или имя клавиши-модификатора. keyboard. key_to_scan_codes ( key, error_if_missing = True) [source] Возвращает список кодов сканирования, связанных с этим ключом (имя или код сканирования). keyboard. parse_hotkey (горячая клавиша) [source] Разбирает Предоставленная пользователем горячая клавиша во вложенных кортежах, представляющих анализируемую структуру, причем нижние значения представляют собой списки кодов сканирования. Также принимает необработанные коды сканирования, которые затем заключаются в требуемое количество вложений. Пример: parse_hotkey ("alt + shift + a, alt + b, c") # Ключи: ^ ~ ^ ^ ~~~ ^ ^ ^ ~ ^ ^ ^ # Шаги: ^ ~~~~~~~~ ~ ^ ^ ~~~ ^ ^ # ((alt_codes, shift_codes, a_codes), (alt_codes, b_codes), (c_codes,)) клавиатура. send (hotkey, do_press = True, do_release = True) [source] Отправляет события ОС, которые выполняют данная горячая клавиша горячая клавиша. hotkey может быть либо кодом сканирования (например, 57 для пробела), одиночная клавиша (например, «пробел») или многопозиционная, многоступенчатая горячая клавиша (например, «alt + F4, ввод»). do_press если true, то отправляются события прессы. По умолчанию True. do_release, если true, то отправляются события выпуска. По умолчанию True. send (57) send ('ctrl + alt + del') send ('alt + F4, enter') отправить ('shift + s') Примечание: клавиши отпускаются в порядке, обратном их нажатию. keyboard. нажмите (горячая клавиша) [источник] Нажимает и удерживает горячую клавишу (см. send). клавиатура. выпуск (горячая клавиша) [источник] Отпускает горячую клавишу (см. send) . клавиатура. is_pressed (горячая клавиша) [источник] Возвращает True, если клавиша нажата. is_pressed (57 ) # -> Trueis_pressed ('space') # -> Trueis_pressed ('ctrl + space') # -> True клавиатура. call_later (fn, args = (), delay = 0.001) [source] Вызывает указанную функцию в новом потоке после некоторого ожидания. Полезно для того, чтобы дать системе время для обработки события, не блокируя текущий поток выполнения. keyboard. hook (callback, suppress = False, on_remove = ) [source] Устанавливает глобальный прослушиватель на все доступные клавиатуры, вызывая обратный вызов каждый раз, когда нажимается или отпускается клавиша. Событие, переданное обратному вызову, имеет значение введите keyboard.KeyboardEvent со следующими атрибутами: name: представление символа в Юникоде (например «&») или описание (например, «пробел»). Имя всегда пишется в нижнем регистре. scan_code: число, представляющее физический ключ, например 55. time: отметка времени, когда произошло событие, с точностью, заданной ОС. Возвращает указанный обратный вызов для упрощения разработки. keyboard. on_press (callback, suppress = False) [источник] Вызывает обратный вызов для каждого события KEY_DOWN. Подробнее см. hook. клавиатура. on_release (callback, suppress = False ) [источник] Вызывает обратный вызов для каждого события KEY_UP. Подробнее см. hook. клавиатура. hook_key (клавиша, обратный вызов, подавление = False) [source] Перехватывает события нажатия и нажатия для одной клавиши. Возвращает созданный обработчик события. Чтобы удалить подключенную клавишу, используйте unhook_key (key) или unhook_key (handler). Примечание: эта функция разделяет состояние с горячие клавиши, поэтому clear_all_hotkeys влияет и на него. keyboard. on_press_key (key , callback, suppress = False) [source] Вызывает обратный вызов для события KEY_DOWN, связанного с данным ключом. Подробнее см. hook. клавиатура.. on_release_key (key, callback, suppress = False) [source] вызывает обратный вызов для события KEY_UP, связанного с данным ключом. Подробнее см. hook. клавиатура. отцепить (удалить) [источник] Удаляет ранее добавленную ловушку либо посредством обратного вызова, либо посредством возвращаемого значения hook. keyboard. unhook_all () [source] Удаляет все крючки клавиатуры используемые, включая горячие клавиши, сокращения, прослушиватели слов, записи и wait. путь> клавиатура. block_key (ключ) [источник] Подавляет все ключевые события данной клавиши, независимо от модификаторов . клавиатура. remap_key (src, dst) [источник] При каждом нажатии или отпускании клавиши src, независимо от модификаторов, вместо этого нажмите или отпустите горячую клавишу dst. клавиатура. parse_hotkey_combinations (горячая клавиша) [источник] Анализирует горячую клавишу, предоставленную пользователем. В отличие от parse_hotkey, вместо того, чтобы каждый шаг был списком различных кодов сканирования для каждой клавиши, каждый шаг представляет собой список всех возможных комбинаций этих кодов сканирования. keyboard. add_hotkey (горячая клавиша, обратный вызов, args = (), suppress = False, timeout = 1, trigger_on_release = False) [источник] Вызывает обратный вызов каждый раз, когда нажимается горячая клавиша. Горячая клавиша должна быть в формате ctrl + shift + a, s. Это сработает, когда пользователь одновременно удерживает Ctrl, Shift и «a», отпускает, а затем нажимает «s». Для обозначения буквенных запятых, плюсов и пробелов используйте их имена (‘запятая’, ‘плюс’, ‘пробел’). args — необязательный список аргументов, передаваемых в обратный вызов во время каждого вызова. suppress определяет, должны ли успешные триггеры блокировать отправку ключей в другие программы. timeout — количество секунд, которое может пройти между нажатиями клавиш. trigger_on_release если true, обратный вызов вызывается при отпускании клавиши вместо нажатия клавиши. Возвращается функция обработчика событий. Чтобы удалить вызов горячей клавиши remove_hotkey (горячая клавиша) или remove_hotkey (обработчик). Перед сбросом состояния горячей клавиши. Примечание : горячие клавиши активируются, когда последняя клавиша нажата, а не отпущена. Примечание: обратный вызов выполняется в отдельном потоке, асинхронно. Пример того, как использовать обратный вызов синхронно, см. В разделе wait. Примеры: # Другое, но эквивалентные способы прослушивания нажатия клавиши пробела. add_hotkey ('', print, args = ['пробел был нажат']) add_hotkey ('пробел', print, args = ['пробел был нажат']) add_hotkey ('Пробел', print, args = ['пробел был нажат ']) # Здесь 57 представляет собой код клавиатуры для пробела; поэтому вы будете # нажимать 'пробел', а не '57', чтобы активировать функцию печати. ​​add_hotkey (57, print, args = ['пробел был нажат']) add_hotkey ('ctrl + q', quit) add_hotkey ('ctrl + alt + enter, space ', some_callback) клавиатура. remove_hotkey (hotkey_or_callback) [источник] Удаляет ранее привязанную горячую клавишу. Должен вызываться со значением, возвращенным add_hotkey. keyboard. unhook_all_hotkeys () [source] Удаляет все используемые горячие клавиши клавиатуры, включая сокращения, прослушиватели слов, записи и подождите s. keyboard. remap_hotkey (src, dst, suppress = True, trigger_on_release = False ) [источник] Каждый раз, когда нажимается горячая клавиша src, подавляйте ее и отправляйте dst вместо этого. Пример: remap_hotkey ('alt + w', 'ctrl + up') keyboard. stash_state () [источник] Создает список всех нажатых в данный момент кодов сканирования, отменяет их и возвращает список. Хорошо сочетается с клавиатурой restore_state и restore_modifiers. . restore_state (scan_codes) [source] Данный список scan_codes гарантирует, что эти ключи, и только эти ключи, нажаты. Хорошо сочетается с stash_state, альтернативой restore_modifiers. клавиатуры. restore_modifiers (scan_codes) [source] Как restore_state, но восстанавливает только ключи-модификаторы. keyboard. (text, delay = 0, restore_state_after = True, exact = None) [источник] Отправляет в ОС события искусственной клавиатуры, имитируя набор заданного текста. Символы, недоступные на клавиатуре, вводятся как явные символы Unicode с использованием специфических для ОС функций, таких как alt + codepoint. Для обеспечения целостности текста все нажатые в данный момент клавиши отпускаются до того, как текст будет набран, и модификаторы затем восстанавливаются. delay — это количество секунд ожидания между нажатиями клавиш, по умолчанию — без задержки. restore_state_after может использоваться для восстановления состояния нажатых клавиш после набора текста, то есть нажатия клавиш, которые были отпущены в начале. По умолчанию True. точный принуждает вводить все символы как явный Unicode (например, alt + codepoint или специальные события). Если Нет, используется предлагаемое значение, зависящее от платформы.. клавиатура. wait (hotkey = None, suppress = False, trigger_on_release = False) [источник] Блокирует выполнение программы до тех пор, пока не будет нажата данная горячая клавиша, или, если не задано никаких параметров, блокирует навсегда. keyboard. get_hotkey_name (names = None) [source] Возвращает строковое представление горячей клавиши от заданных названий клавиш или от нажатых в данный момент клавиш, если не указаны. Эта функция: нормализует имена; удаляет префиксы «левый» и «правый»; заменяет «+» имя ключа с «плюсом» во избежание двусмысленности; сначала помещает ключи-модификаторы в стандартизированном порядке; отсортировать оставшиеся ключи; наконец, объединяет все со знаком «+». Пример: get_hotkey_name (['+', ' left ctrl ',' shift ']) # "ctrl + shift + plus" клавиатура. read_event (suppress = False) [source] Блокирует до тех пор, пока не произойдет событие клавиатуры, а затем возвращает это событие. keyboard. read_key (suppress = False) [source] Блокирует до события клавиатуры происходит, затем возвращает имя этого события или, если он отсутствует, его код сканирования. keyboard. read_hotkey (suppress = True ) [source] Аналогично read_key (), но блокируется до тех пор, пока пользователь не нажмет и не отпустит горячую клавишу (или единственную клавишу ), затем возвращает строку, представляющую нажатую горячую клавишу. Пример: read_hotkey () # "ctrl + shift + p" клавиатура. get_typed_strings (events, allow_backspace = True) [источник] При заданной последовательности событий пытается определить, какие строки были набраны. Строки разделяются при нажатии нетекстовой клавиши (например, табуляции или средства ввода). Символы преобразуются в верхний регистр в соответствии со статусом сдвига и блокировки. Если allow_backspace имеет значение True, backspaces удаляет последний набранный символ. Эта функция является генератором, поэтому вы можете передавать бесконечный поток событий и преобразовывать их в строки в реальном время. Обратите внимание, что эта функция является просто эвристической. Windows, например, сохраняет состояние клавиатуры для каждого процесса, такое как раскладка клавиатуры, и эта информация недоступна для наших хуков. get_type_strings (record ()) # -> ['Это what ',' Я записал ',' '] keyboard. start_recording (loaded_events_queue = None) [источник] Начинает запись всех событий клавиатуры в глобальную переменную или заданную очередь, если таковая имеется. Возвращает очередь событий и подключенную функцию. Используйте stop_recording () или unhook (hooked_function) для остановки. клавиатура. stop_recording () [источник] Останавливает глобальную запись событий и возвращает список зафиксированных событий. клавиатура. запись (до = ‘escape’, suppress = False, trigger_on_release = False) [источник] Записывает все события клавиатуры со всех клавиатур, пока пользователь не нажмет данную горячую клавишу. Затем возвращает список записанных событий типа keyboard.KeyboardEvent. Хорошо сочетается с play (events). Примечание: это функция блокировки. Примечание: для получения дополнительных сведений о ловушке клавиатуры и событиях см. крючок. клавиатура. play (events, speed_factor = 1.0) [источник] Воспроизводит последовательность записанных событий с сохранением относительных интервалов времени. Если speed_factor record () . Примечание: текущее состояние клавиатуры очищается в начале и восстанавливается в конце функции. keyboard. add_word_listener (word, callback, triggers = [‘space’], match_suffix = False, timeout = 2) [источник] Вызывает обратный вызов каждый раз, когда набирается последовательность символов (например, «домашнее животное»), за которой следует триггерный ключ (например, пробел). Модификаторы (например, alt, ctrl, shift) игнорируются. word набранный текст, который нужно сопоставить. Например. ‘pet’. callback — это функция без аргументов, вызываемая каждый раз при вводе слова. triggers — это список ключей, по которым будет проверяться соответствие. Если пользователь нажимает некоторую клавишу, которая не является символом (len> 1) и не вызывает интриг, символы до сих пор будут отброшены. По умолчанию для триггера используется только пробел. match_suffix определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова. timeout — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды. Возвращает созданный обработчик событий. Чтобы удалить прослушиватель слов, используйте remove_word_listener (word) или remove_word_listener (обработчик). Примечание: все действия выполняются над ключ вниз. События нажатия клавиш игнорируются. Примечание: совпадения слов чувствительны к регистру. keyboard. remove_word_listener (word_or_handler) [source] Удаляет ранее зарегистрированный прослушиватель слов. Принимает либо слово, используемое во время регистрации (точная строка), либо обработчик событий, возвращаемый функциями add_word_listener или add_abbreviation. клавиатура. add_abbreviation (source_text, replacement_text, match_suffix = False, timeout = 2) [source] Регистрирует горячую клавишу, заменяющую одну набранный текст с другим. Например, add_abbreviation ('tm', u '™') Заменяет каждое «tm», за которым следует пробел, на символ ™ (без пробела). Замена выполняется путем отправки событий возврата. match_suffix определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова. timeout — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды. Подробнее см. add_word_listener. клавиатура. normalize_name (name) [source] Учитывая имя клавиши (например, «LEFT CONTROL»), очистите вверх по строке и преобразовать в каноническое представление (например, «левый ctrl»), если оно известно.
  16. клавиатура. KEY_UP
  17. class keyboard. KeyboardEvent
  18. KeyboardEvent. устройство
  19. KeyboardEvent. event_type
  20. KeyboardEvent. is_keypad
  21. KeyboardEvent. модификаторы
  22. KeyboardEvent. KeyboardEvent. KeyboardEvent. время KeyboardEvent. to_json (self, sure_ascii = False) [source] keyboard. all_modifiers = {'alt', 'alt gr', 'ctrl', 'left alt', 'left ctrl', 'сдвиг влево', 'влево windows ',' right alt ',' right ctrl ',' правый t shift ',' right windows ',' shift ',' windows '} клавиатура. sided_modifiers = {'alt', 'ctrl', 'shift', 'windows'} клавиатура. версия = '0.13.5' keyboard. is_modifier (ключ) [source] Возвращает True, если key — это отсканированный код или имя клавиши-модификатора. keyboard. key_to_scan_codes ( key, error_if_missing = True) [source] Возвращает список кодов сканирования, связанных с этим ключом (имя или код сканирования). keyboard. parse_hotkey (горячая клавиша) [source] Разбирает Предоставленная пользователем горячая клавиша во вложенных кортежах, представляющих анализируемую структуру, причем нижние значения представляют собой списки кодов сканирования. Также принимает необработанные коды сканирования, которые затем заключаются в требуемое количество вложений. Пример: parse_hotkey ("alt + shift + a, alt + b, c") # Ключи: ^ ~ ^ ^ ~~~ ^ ^ ^ ~ ^ ^ ^ # Шаги: ^ ~~~~~~~~ ~ ^ ^ ~~~ ^ ^ # ((alt_codes, shift_codes, a_codes), (alt_codes, b_codes), (c_codes,)) клавиатура. send (hotkey, do_press = True, do_release = True) [source] Отправляет события ОС, которые выполняют данная горячая клавиша горячая клавиша. hotkey может быть либо кодом сканирования (например, 57 для пробела), одиночная клавиша (например, «пробел») или многопозиционная, многоступенчатая горячая клавиша (например, «alt + F4, ввод»). do_press если true, то отправляются события прессы. По умолчанию True. do_release, если true, то отправляются события выпуска. По умолчанию True. send (57) send ('ctrl + alt + del') send ('alt + F4, enter') отправить ('shift + s') Примечание: клавиши отпускаются в порядке, обратном их нажатию. keyboard. нажмите (горячая клавиша) [источник] Нажимает и удерживает горячую клавишу (см. send). клавиатура. выпуск (горячая клавиша) [источник] Отпускает горячую клавишу (см. send) . клавиатура. is_pressed (горячая клавиша) [источник] Возвращает True, если клавиша нажата. is_pressed (57 ) # -> Trueis_pressed ('space') # -> Trueis_pressed ('ctrl + space') # -> True клавиатура. call_later (fn, args = (), delay = 0.001) [source] Вызывает указанную функцию в новом потоке после некоторого ожидания. Полезно для того, чтобы дать системе время для обработки события, не блокируя текущий поток выполнения. keyboard. hook (callback, suppress = False, on_remove = ) [source] Устанавливает глобальный прослушиватель на все доступные клавиатуры, вызывая обратный вызов каждый раз, когда нажимается или отпускается клавиша. Событие, переданное обратному вызову, имеет значение введите keyboard.KeyboardEvent со следующими атрибутами: name: представление символа в Юникоде (например «&») или описание (например, «пробел»). Имя всегда пишется в нижнем регистре. scan_code: число, представляющее физический ключ, например 55. time: отметка времени, когда произошло событие, с точностью, заданной ОС. Возвращает указанный обратный вызов для упрощения разработки. keyboard. on_press (callback, suppress = False) [источник] Вызывает обратный вызов для каждого события KEY_DOWN. Подробнее см. hook. клавиатура. on_release (callback, suppress = False ) [источник] Вызывает обратный вызов для каждого события KEY_UP. Подробнее см. hook. клавиатура. hook_key (клавиша, обратный вызов, подавление = False) [source] Перехватывает события нажатия и нажатия для одной клавиши. Возвращает созданный обработчик события. Чтобы удалить подключенную клавишу, используйте unhook_key (key) или unhook_key (handler). Примечание: эта функция разделяет состояние с горячие клавиши, поэтому clear_all_hotkeys влияет и на него. keyboard. on_press_key (key , callback, suppress = False) [source] Вызывает обратный вызов для события KEY_DOWN, связанного с данным ключом. Подробнее см. hook. клавиатура.. on_release_key (key, callback, suppress = False) [source] вызывает обратный вызов для события KEY_UP, связанного с данным ключом. Подробнее см. hook. клавиатура. отцепить (удалить) [источник] Удаляет ранее добавленную ловушку либо посредством обратного вызова, либо посредством возвращаемого значения hook. keyboard. unhook_all () [source] Удаляет все крючки клавиатуры используемые, включая горячие клавиши, сокращения, прослушиватели слов, записи и wait. путь> клавиатура. block_key (ключ) [источник] Подавляет все ключевые события данной клавиши, независимо от модификаторов . клавиатура. remap_key (src, dst) [источник] При каждом нажатии или отпускании клавиши src, независимо от модификаторов, вместо этого нажмите или отпустите горячую клавишу dst. клавиатура. parse_hotkey_combinations (горячая клавиша) [источник] Анализирует горячую клавишу, предоставленную пользователем. В отличие от parse_hotkey, вместо того, чтобы каждый шаг был списком различных кодов сканирования для каждой клавиши, каждый шаг представляет собой список всех возможных комбинаций этих кодов сканирования. keyboard. add_hotkey (горячая клавиша, обратный вызов, args = (), suppress = False, timeout = 1, trigger_on_release = False) [источник] Вызывает обратный вызов каждый раз, когда нажимается горячая клавиша. Горячая клавиша должна быть в формате ctrl + shift + a, s. Это сработает, когда пользователь одновременно удерживает Ctrl, Shift и «a», отпускает, а затем нажимает «s». Для обозначения буквенных запятых, плюсов и пробелов используйте их имена (‘запятая’, ‘плюс’, ‘пробел’). args — необязательный список аргументов, передаваемых в обратный вызов во время каждого вызова. suppress определяет, должны ли успешные триггеры блокировать отправку ключей в другие программы. timeout — количество секунд, которое может пройти между нажатиями клавиш. trigger_on_release если true, обратный вызов вызывается при отпускании клавиши вместо нажатия клавиши. Возвращается функция обработчика событий. Чтобы удалить вызов горячей клавиши remove_hotkey (горячая клавиша) или remove_hotkey (обработчик). Перед сбросом состояния горячей клавиши. Примечание : горячие клавиши активируются, когда последняя клавиша нажата, а не отпущена. Примечание: обратный вызов выполняется в отдельном потоке, асинхронно. Пример того, как использовать обратный вызов синхронно, см. В разделе wait. Примеры: # Другое, но эквивалентные способы прослушивания нажатия клавиши пробела. add_hotkey ('', print, args = ['пробел был нажат']) add_hotkey ('пробел', print, args = ['пробел был нажат']) add_hotkey ('Пробел', print, args = ['пробел был нажат ']) # Здесь 57 представляет собой код клавиатуры для пробела; поэтому вы будете # нажимать 'пробел', а не '57', чтобы активировать функцию печати. ​​add_hotkey (57, print, args = ['пробел был нажат']) add_hotkey ('ctrl + q', quit) add_hotkey ('ctrl + alt + enter, space ', some_callback) клавиатура. remove_hotkey (hotkey_or_callback) [источник] Удаляет ранее привязанную горячую клавишу. Должен вызываться со значением, возвращенным add_hotkey. keyboard. unhook_all_hotkeys () [source] Удаляет все используемые горячие клавиши клавиатуры, включая сокращения, прослушиватели слов, записи и подождите s. keyboard. remap_hotkey (src, dst, suppress = True, trigger_on_release = False ) [источник] Каждый раз, когда нажимается горячая клавиша src, подавляйте ее и отправляйте dst вместо этого. Пример: remap_hotkey ('alt + w', 'ctrl + up') keyboard. stash_state () [источник] Создает список всех нажатых в данный момент кодов сканирования, отменяет их и возвращает список. Хорошо сочетается с клавиатурой restore_state и restore_modifiers. . restore_state (scan_codes) [source] Данный список scan_codes гарантирует, что эти ключи, и только эти ключи, нажаты. Хорошо сочетается с stash_state, альтернативой restore_modifiers. клавиатуры. restore_modifiers (scan_codes) [source] Как restore_state, но восстанавливает только ключи-модификаторы. keyboard. (text, delay = 0, restore_state_after = True, exact = None) [источник] Отправляет в ОС события искусственной клавиатуры, имитируя набор заданного текста. Символы, недоступные на клавиатуре, вводятся как явные символы Unicode с использованием специфических для ОС функций, таких как alt + codepoint. Для обеспечения целостности текста все нажатые в данный момент клавиши отпускаются до того, как текст будет набран, и модификаторы затем восстанавливаются. delay — это количество секунд ожидания между нажатиями клавиш, по умолчанию — без задержки. restore_state_after может использоваться для восстановления состояния нажатых клавиш после набора текста, то есть нажатия клавиш, которые были отпущены в начале. По умолчанию True. точный принуждает вводить все символы как явный Unicode (например, alt + codepoint или специальные события). Если Нет, используется предлагаемое значение, зависящее от платформы.. клавиатура. wait (hotkey = None, suppress = False, trigger_on_release = False) [источник] Блокирует выполнение программы до тех пор, пока не будет нажата данная горячая клавиша, или, если не задано никаких параметров, блокирует навсегда. keyboard. get_hotkey_name (names = None) [source] Возвращает строковое представление горячей клавиши от заданных названий клавиш или от нажатых в данный момент клавиш, если не указаны. Эта функция: нормализует имена; удаляет префиксы «левый» и «правый»; заменяет «+» имя ключа с «плюсом» во избежание двусмысленности; сначала помещает ключи-модификаторы в стандартизированном порядке; отсортировать оставшиеся ключи; наконец, объединяет все со знаком «+». Пример: get_hotkey_name (['+', ' left ctrl ',' shift ']) # "ctrl + shift + plus" клавиатура. read_event (suppress = False) [source] Блокирует до тех пор, пока не произойдет событие клавиатуры, а затем возвращает это событие. keyboard. read_key (suppress = False) [source] Блокирует до события клавиатуры происходит, затем возвращает имя этого события или, если он отсутствует, его код сканирования. keyboard. read_hotkey (suppress = True ) [source] Аналогично read_key (), но блокируется до тех пор, пока пользователь не нажмет и не отпустит горячую клавишу (или единственную клавишу ), затем возвращает строку, представляющую нажатую горячую клавишу. Пример: read_hotkey () # "ctrl + shift + p" клавиатура. get_typed_strings (events, allow_backspace = True) [источник] При заданной последовательности событий пытается определить, какие строки были набраны. Строки разделяются при нажатии нетекстовой клавиши (например, табуляции или средства ввода). Символы преобразуются в верхний регистр в соответствии со статусом сдвига и блокировки. Если allow_backspace имеет значение True, backspaces удаляет последний набранный символ. Эта функция является генератором, поэтому вы можете передавать бесконечный поток событий и преобразовывать их в строки в реальном время. Обратите внимание, что эта функция является просто эвристической. Windows, например, сохраняет состояние клавиатуры для каждого процесса, такое как раскладка клавиатуры, и эта информация недоступна для наших хуков. get_type_strings (record ()) # -> ['Это what ',' Я записал ',' '] keyboard. start_recording (loaded_events_queue = None) [источник] Начинает запись всех событий клавиатуры в глобальную переменную или заданную очередь, если таковая имеется. Возвращает очередь событий и подключенную функцию. Используйте stop_recording () или unhook (hooked_function) для остановки. клавиатура. stop_recording () [источник] Останавливает глобальную запись событий и возвращает список зафиксированных событий. клавиатура. запись (до = ‘escape’, suppress = False, trigger_on_release = False) [источник] Записывает все события клавиатуры со всех клавиатур, пока пользователь не нажмет данную горячую клавишу. Затем возвращает список записанных событий типа keyboard.KeyboardEvent. Хорошо сочетается с play (events). Примечание: это функция блокировки. Примечание: для получения дополнительных сведений о ловушке клавиатуры и событиях см. крючок. клавиатура. play (events, speed_factor = 1.0) [источник] Воспроизводит последовательность записанных событий с сохранением относительных интервалов времени. Если speed_factor record () . Примечание: текущее состояние клавиатуры очищается в начале и восстанавливается в конце функции. keyboard. add_word_listener (word, callback, triggers = [‘space’], match_suffix = False, timeout = 2) [источник] Вызывает обратный вызов каждый раз, когда набирается последовательность символов (например, «домашнее животное»), за которой следует триггерный ключ (например, пробел). Модификаторы (например, alt, ctrl, shift) игнорируются. word набранный текст, который нужно сопоставить. Например. ‘pet’. callback — это функция без аргументов, вызываемая каждый раз при вводе слова. triggers — это список ключей, по которым будет проверяться соответствие. Если пользователь нажимает некоторую клавишу, которая не является символом (len> 1) и не вызывает интриг, символы до сих пор будут отброшены. По умолчанию для триггера используется только пробел. match_suffix определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова. timeout — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды. Возвращает созданный обработчик событий. Чтобы удалить прослушиватель слов, используйте remove_word_listener (word) или remove_word_listener (обработчик). Примечание: все действия выполняются над ключ вниз. События нажатия клавиш игнорируются. Примечание: совпадения слов чувствительны к регистру. keyboard. remove_word_listener (word_or_handler) [source] Удаляет ранее зарегистрированный прослушиватель слов. Принимает либо слово, используемое во время регистрации (точная строка), либо обработчик событий, возвращаемый функциями add_word_listener или add_abbreviation. клавиатура. add_abbreviation (source_text, replacement_text, match_suffix = False, timeout = 2) [source] Регистрирует горячую клавишу, заменяющую одну набранный текст с другим. Например, add_abbreviation ('tm', u '™') Заменяет каждое «tm», за которым следует пробел, на символ ™ (без пробела). Замена выполняется путем отправки событий возврата. match_suffix определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова. timeout — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды. Подробнее см. add_word_listener. клавиатура. normalize_name (name) [source] Учитывая имя клавиши (например, «LEFT CONTROL»), очистите вверх по строке и преобразовать в каноническое представление (например, «левый ctrl»), если оно известно.
  23. KeyboardEvent.
  24. KeyboardEvent. время
  25. KeyboardEvent. to_json (self, sure_ascii = False)
  26. keyboard. all_modifiers
  27. клавиатура. sided_modifiers
  28. клавиатура. версия
  29. keyboard. is_modifier (ключ)
  30. keyboard. key_to_scan_codes ( key, error_if_missing = True)
  31. keyboard. parse_hotkey (горячая клавиша)
  32. клавиатура. send (hotkey, do_press = True, do_release = True)
  33. keyboard. нажмите (горячая клавиша)
  34. клавиатура. выпуск (горячая клавиша)
  35. клавиатура. is_pressed (горячая клавиша)
  36. клавиатура. call_later (fn, args = (), delay = 0.001)
  37. keyboard. hook (callback, suppress = False, on_remove = )
  38. keyboard. on_press (callback, suppress = False)
  39. клавиатура. on_release (callback, suppress = False )
  40. клавиатура. hook_key (клавиша, обратный вызов, подавление = False)
  41. keyboard. on_press_key (key , callback, suppress = False)
  42. клавиатура.. on_release_key (key, callback, suppress = False)
  43. клавиатура. отцепить (удалить)
  44. keyboard. unhook_all ()
  45. путь> клавиатура. block_key (ключ)
  46. клавиатура. remap_key (src, dst)
  47. клавиатура. parse_hotkey_combinations (горячая клавиша)
  48. keyboard. add_hotkey (горячая клавиша, обратный вызов, args = (), suppress = False, timeout = 1, trigger_on_release = False)
  49. клавиатура. remove_hotkey (hotkey_or_callback)
  50. keyboard. unhook_all_hotkeys ()
  51. keyboard. remap_hotkey (src, dst, suppress = True, trigger_on_release = False )
  52. keyboard. stash_state ()
  53. . restore_state (scan_codes)
  54. клавиатуры. restore_modifiers (scan_codes)
  55. keyboard. (text, delay = 0, restore_state_after = True, exact = None)
  56. клавиатура. wait (hotkey = None, suppress = False, trigger_on_release = False)
  57. keyboard. get_hotkey_name (names = None)
  58. клавиатура. read_event (suppress = False)
  59. keyboard. read_key (suppress = False)
  60. keyboard. read_hotkey (suppress = True )
  61. клавиатура. get_typed_strings (events, allow_backspace = True)
  62. keyboard. start_recording (loaded_events_queue = None)
  63. клавиатура. stop_recording ()
  64. клавиатура. запись (до = ‘escape’, suppress = False, trigger_on_release = False)
  65. клавиатура. play (events, speed_factor = 1.0)
  66. keyboard. add_word_listener (word, callback, triggers = [‘space’], match_suffix = False, timeout = 2)
  67. keyboard. remove_word_listener (word_or_handler)
  68. клавиатура. add_abbreviation (source_text, replacement_text, match_suffix = False, timeout = 2)
  69. клавиатура. normalize_name (name)

Метод №1:

Использование функции read_key() :

  import keyboard while True: if keyboard. read_key () == "p": print ("Вы нажали p") break  

Это прервет цикл как ключ p нажата.


Метод № 2:

Использование функции wait :

  import keyboardkeyboard.wait ("p") print ("Вы нажали p")  

Он будет ждать вы должны нажать p и продолжить код по мере его нажатия.


Метод № 3:

Использование функция on_press_key :

  import keyboardkeyboard.on_press_key ("p", lambda _: print (  «Вы нажали p»))  

Нужна функция обратного вызова. Я использовал _ , потому что функция клавиатуры возвращает событие клавиатуры этой функции.

После выполнения она запускает функцию при нажатии клавиши. Вы можете остановить все перехватчики, запустив эту строку:

  keyboard.unhook_all ()  

Метод № 4 :

На этот метод уже ответил user8167727 , но я не согласен с кодом, который они сделали. Он будет использовать функцию is_pressed , но другим способом:

  import keyboard while True: if  keyboard.is_pressed ("p"): print ("Вы нажали p") break  

Он прервет цикл при нажатии p .


  • keyboard будет считывать нажатия клавиш со всей ОС.
  • keyboard требует root в Linux
Улучшить этот ответ
отредактировал 17 ноября ’20 в 7:57
ответил 25 августа ‘ 19 в 8:15
  • 14
    Самый большой НЕГАТИВ использования клавиатуры mo dule — это требование, которое вы запускаете как ROOT-пользователь. Это делает модуль запрещенным в моем коде. Просто для того, чтобы узнать, была ли нажата клавиша, не требуются привилегии root. Я прочитал документ и понимаю, почему ограничение выходит в модуле, но посмотрите в другом месте, если все, что вам нужно, это опросить ключ … — muman 30 авг., 18:19
  • Очень полезная информация поделена, сэр! Я хотел знать, могу ли я использовать keyboard.wait () для ожидания более 1 клавиши и продолжения, если будет нажата какая-либо из них — Приткаран Сингх 19 нояб., 17:19
  • @PreetkaranSingh wait () не предоставляет эту функцию. Вам нужно будет использовать keyboard.read_key () с условием if, упакованным в цикл while. См. Метод №1 — Black Thunder, 19 ноября ’19 в 18:35
  • Спасибо, сэр !, не хотели бы вы пролить свет на использование ключевого слова suppress в keyboard.read_key () , когда его использовать, а когда нет …. — Приткаран Сингх 19 нояб., 18:52
  • @PreetkaranSingh Я бы хотел, но у меня недостаточно информации об аргументе подавления — Black Thunder 19 ноября ‘ 19 в 20:15
| показать 1 дополнительный комментарий

Больше вещей можно сделать с помощью keyboard . Вы можете установить этот модуль с помощью pip install keyboard Вот некоторые из методов:


Метод №1:

Использование функции read_key() :

  import keyboard while True: if keyboard.read_key () == "p": print ("Вы нажали p") break  

Это разорвет цикл как ключ p нажата.


Метод № 2:

Использование функции wait :

  import keyboardkeyboard.wait ("p") print ("Вы нажали p")  

Он будет ждать, пока вы нажмете p и продолжите код по мере его нажатия.


Метод № 3:

Использование функции on_press_key :

  импортировать keyboardkeyboard.on_press_key  ("p", лямбда _: print ("Вы нажали p"))  

Требуется функция обратного вызова. Я использовал _ , потому что функция клавиатуры возвращает событие клавиатуры этой функции.

После выполнения она запускает функцию при нажатии клавиши. Вы можете остановить все перехватчики, запустив эту строку:

  keyboard.unhook_all ()  

Метод № 4 :

На этот метод уже ответил user8167727 , но я не согласен с кодом, который они сделали. Он будет использовать функцию is_pressed , но другим способом:

  import keyboard while True: if  keyboard.is_pressed ("p"): print ("Вы нажали p") break  

Он прервет цикл при нажатии p .


  • keyboard будет считывать нажатия клавиш со всей ОС.
  • keyboard требует root в Linux

33

Как OP упоминает о raw_input — это означает, что ему нужно решение cli. Linux: curses — это то, что вы хотите (windows PDCurses ). Curses, это графический API для программного обеспечения cli, вы можете добиться большего, чем просто обнаруживать ключевые события.

Этот код будет обнаруживать клавиши, пока не будет нажата новая строка.

  import cursesimport osdef main (win): win.nodelay (True) key = "" win.clear () win.addstr ("Обнаруженный ключ:"), а 1:  попробуйте: key = win.getkey () win.clear () win.addstr ("Обнаруженный ключ:") win.addstr (str (key)) if key == os.linesep: break except Exception as e: # Нет ввода  передать curses.wrapper (main)  

Улучшить этот ответ
отредактировал 11 февраля ’19 в 3:11
rayryeng
95.2k2020 золотых знаков161161 серебряный знак174174 бронзовых знака
ответ дан 3 сен ’15 в 22:28
  • Это действительно здорово. Пришлось искать вечно, прежде чем наткнуться на это. Кажется намного чище, чем возиться с termios и так далее … — Хью Перкинс, 4 мая 2016, 10:40
  • 5
    необходимо добавить import os , чтобы иметь возможность exit выйти из примера. — malte 04 авг., 21:17
  • Если вы сделаете win.nodelay (False) вместо True , он не будет генерировать миллион исключений в секунду. — Йоханнес Хофф 27 фев, в 18:09
добавить комментарий |

Как OP упоминает о raw_input — это означает, что ему нужно решение cli. Linux: curses — это то, что вы хотите (Windows PDCurses). Curses, это графический API для программного обеспечения cli, вы можете добиться большего, чем просто обнаруживать ключевые события.

Этот код будет обнаруживать клавиши до тех пор, пока не будет нажата новая строка.

  import cursesimport osdef main (win): win.nodelay (True) key = "" win.clear () win.addstr ("Обнаруженный ключ:") пока 1: try: key = win.getkey () win  .clear () win.addstr ("Обнаруженный ключ:") win.addstr (str (key)) if key == os.linesep: break except Exception as e: # Входной проход отсутствует curses.wrapper (main)  

17

Для В Windows вы можете использовать msvcrt следующим образом:

  import msvcrt while True: if msvcrt.kbhit (): key = msvcrt. getch () print (key) # просто чтобы показать результат  

Улучшите этот ответ
отредактировано 12 февраля ’18 в 16:40
Saravanabalagi Ramachandran
6,37666 золотых знаков3636 серебряных знаков7979 бронзовых знаков
ответил 02 авг., 20:16
  • 8
    msvcrt — это модуль только для Windows. — Dunatotatos 21 нояб., 14:44
  • 1
    На самом деле сейчас я использую pynput, это может быть лучшим ответом — Бенджи 5 фев. в 19:50
  • Обратите внимание, что pynput для работы в OS X (не знаю о Linux) должен запускаться с правами root, чтобы работать. Для некоторых это может быть неудачным решением. — Гейб Вайс, 27 февраля 2018 г., в 0:59
  • Я мог бы поклясться, что вопрос касался «кроссплатформенности» или «linux» … — Аарон Манн, 30 янв.2020, 16:58
добавить комментарий |

Для Windows вы можете использовать msvcrt следующим образом:

  import msvcrt while True: if msvcrt.kbhit (): key = msvcrt.getch () print (key) # только для отображения результата  

10

Используйте этот код для поиска нажатой клавиши

  из pynput import keyboarddef on_press (key): try: print ('буквенно-цифровая клавиша {0} нажата'.format (key.char)) except AttributeError: print (' special key {  0} Press'.format (key)) def on_release (key): print ('{0} Release'.format (key)) if key == keyboard.Key.esc: # Остановить прослушиватель return False # Собирать события до тех пор, пока не будет выпущено  keyboard.Listener (on_press = on_press, on_release = on_release) как listener: listener.join ()  

Улучшите этот ответ
ответил 17 января ’19 в 15:35
  • Вот Однако я использую macOS и устанавливаю как pynput, так и клавиатуру отдельно, и программа работает без каких-либо ошибок, но может только обнаруживать (в оболочке python) специальные клавиши. Буквенно-цифровые ключи не обнаруживаются и, наоборот, считаются так, как если бы я писал код в оболочке. Вы знаете, в чем может быть проблема? — Дарио Дениз Эргюн, 11 апр. ’19 в 7:04
  • Тот же код работал у меня в оболочке. Пожалуйста, проверь это. В пакете клавиатуры этот код не требуется. — Маниваннан Муругавел 11 апр. ’19 в 07:11
  • 1
    Это путь в Linux, так как библиотека клавиатуры требует root. — Дэвид, 14 мая ’19 в 13:33
  • 1
    Это решение обнаружит все нажатия клавиш; также те, которые происходят в другом окне терминала. К сожалению, это сильно ограничивает возможные варианты использования. — Serge Stroobandt 06 окт. ’19 в 1:10
добавить комментарий |

Используйте этот код для поиска нажатой клавиши

  из pynput import keyboarddef on_press  (ключ): try: print ('буквенно-цифровая клавиша {0} нажата'. формат (key.char)) except AttributeError: print ('специальная клавиша {0} нажата'. формат (клавиша)) def on_release (key): print  ('{0} Release'.format (key)) if key == keyboard.Key.esc: # Остановить прослушиватель return False # Собирать события до тех пор, пока они не будут выпущены, с помощью keyboard.Listener (on_press = on_press, on_release = on_release) как listener: listener.  join ()  

7

Используйте PyGame, чтобы получить окно, а затем вы можете получить ключевые события.

Для буквы p :

  import pygame, sysimport pygame.localspygame.init () ЧЕРНЫЙ = (0,0,0) WIDTH = 1280HEIGHT = 1024windowSurface = pygame.display.set_mode ((WIDTH, HEIGHT), 0  , 32) windowSurface.fill (ЧЕРНЫЙ), а True: для e  vent в pygame.event.get (): if event.key == pygame.K_p: # замените 'p' на любую клавишу, которую вы хотите нажать pass # Делайте здесь то, что хотите, if event.type == pygame.  locals.QUIT: pygame.quit () sys.exit ()  

Улучшите этот ответ
отредактировано 31 августа ’19 в 10:42
Сообщество ♦
111 серебряный значок
ответил 6 июня ’14 в 3:53
добавить комментарий |

Используйте PyGame, чтобы получить окно, и тогда вы сможете получить ключевые события.

Для буквы p:

  import pygame, sysimport pygame.localspygame. init () BLACK = (0,0,0) WIDTH = 1280HEIGHT = 1024windowSurface = pygame.display.set_mode ((WIDTH, HEIGHT), 0, 32) windowSurface.fill (BLACK) while True: для события в pygame.event.  get (): if event.key == pygame.K_p: # замените 'p' на любую клавишу, которую вы хотите нажать pass # Делайте здесь, что хотите, if event.type == pygame.locals.QUIT: pygame.  quit () sys.exit ()  

2

Итак, я сделал эту … своего рода игру … на основе этого сообщения (с использованием библиотеки msvcr и Python 3.7).

Ниже приводится «основная функция» игры, который определяет нажатые клавиши:

  # Требуемые библиотеки - - - -import msvcrt # - - - - - - - - - - - - -def _secret_key (self)  : # Получите нажатие клавиши пользователем и проверьте, выиграл ли он/она.  bk = chr (10) + "-" * 25 + chr (10) while True: print (bk + "Press any key (s)" + bk) # просит пользователя ввести любую клавишу (s) kp = str (  msvcrt.getch ()). replace ("b '", "") .replace ("'", "") # Сохранить значение ключа.  if r ' xe0' in kp: kp + = str (msvcrt.getch ()). replace ("b '", "") .replace ("'", "") # Рефакторинг переменной в случае многократного нажатия  .  if kp == r ' xe0  x8a': # Если пользователь нажал секретную клавишу, игра завершается.  #  x8a - это CTRL + F12, это секретный ключ.  print (bk + "ПОЗДРАВЛЯЕМ, ВЫ НАЖМИЛИ СЕКРЕТНЫЕ КЛЮЧИ!  a" + bk) print ("Нажмите любую клавишу, чтобы выйти из игры") msvcrt.getch () break else: print ("Вы нажали: '", kp + "  ', это не секретный ключ (и)  n ") if self.select_continue () ==" n ": if self.secondary_options (): self._main_menu () break  

Если вам нужен полный исходный код программы, вы можете увидеть его или загрузить отсюда:

The Secret Key Game (GitHub)

(примечание: секретное нажатие клавиши: Ctrl + F12 )

Надеюсь, вы можете служить примером и помочь тем, кто приходит чтобы ознакомиться с этой информацией.

Улучшите этот ответ
отредактировано 26 августа ’19 в 1:41
eyllanesc
174k1515 золотых знаков7878 серебряных знаков126126 бронзовых знаков
ответил 06 января ’19 в 20:41
добавить комментарий |

Итак, я сделал эту … вид игры … на основе этого сообщения (с использованием библиотеки msvcr и Python 3.7).

Ниже приводится «основная функция» игры, которая определяет нажатые клавиши:

  # Требуемые библиотеки - - - -import  msvcrt # - - - - - - - - - - - - - -def _secret_key (self): # Получите нажатую клавишу пользователем и проверьте, выиграл ли он/она.  bk = chr (10) + "-" * 25 + chr (10) while True: print (bk + "Press any key (s)" + bk) # просит пользователя ввести любую клавишу (s) kp = str (  msvcrt.getch ()). replace ("b '", "") .replace ("'", "") # Сохранить значение ключа.  if r ' xe0' in kp: kp + = str (msvcrt.getch ()). replace ("b '", "") .replace ("'", "") # Рефакторинг переменной в случае многократного нажатия  .  if kp == r ' xe0  x8a': # Если пользователь нажал секретную клавишу, игра завершается.  #  x8a - это CTRL + F12, это секретный ключ.  print (bk + "ПОЗДРАВЛЯЕМ, ВЫ НАЖМИЛИ СЕКРЕТНЫЕ КЛЮЧИ!  a" + bk) print ("Нажмите любую клавишу, чтобы выйти из игры") msvcrt.getch () break else: print ("Вы нажали: '", kp + "  ', это не секретный ключ (и)  n ") if self.select_continue () ==" n ": if self.secondary_options (): self._main_menu () break  

Если вам нужен полный исходный код программы, вы можете увидеть его или загрузить отсюда:

The Secret Key Game (GitHub)

(примечание: секретное нажатие клавиши: Ctrl + F12 )

Надеюсь, вы можете служить примером и помочь тем, кто приходит чтобы ознакомиться с этой информацией.


1

Я бы предлагаю вам использовать PyGame и добавить дескриптор события.

http://www.pygame.org/docs/ref/event.html

Улучшить этот ответ
ответил 6 июня ’14 в 3:51
добавить комментарий |

Я бы посоветовал вам использовать PyGame и добавить дескриптор события.

http://www.pygame .org/docs/ref/event.html


1
  key = cv2.waitKey (1)  

Это из пакета openCV. Он обнаруживает нажатие клавиши без ожидания.

Улучшите этот ответ
отредактировал 26 августа ’19 в 1: 41
eyllanesc
174k1515 золотых знаков7878 серебряных знаков126126 бронзовых знаков
ответил 14 февраля ’19 в 20:32
добавить комментарий |

  key = cv2.waitKey (1)  

Это из пакета openCV. Он обнаруживает нажатие клавиши без ожидания.


0

Вы не упоминаете, если это программа с графическим интерфейсом или нет, но большинство пакетов с графическим интерфейсом включают способ захвата и обработки ввода с клавиатуры. Например, с помощью tkinter (в Py3) вы можете привязаться к определенному событию, а затем обработать его в функции . Например:

  импортировать tkinter как tkdef key_handler (event = None): if event и event.keysym в ('s', 'p'): 'do something'  r = tk.Tk () t = tk.Text () t  .pack () r.bind ('', key_handler) r.mainloop ()  

С указанным выше, когда вы вводите текст в виджет текста, key_handler вызывается для каждой (или почти каждой) клавиши, которую вы нажимаете.

Улучшите этот ответ
ответил 9 января в 06:17
добавить комментарий |

Вы не упоминаете, является ли это программа с графическим интерфейсом пользователя или нет, но большинство пакетов с графическим интерфейсом включают способ захвата и обработки ввода с клавиатуры. Например, с помощью tkinter (в Py3) вы можете выполнить привязку к определенному событию, а затем обработать его в функции. Например:

  импортировать tkinter как tkdef key_handler (event = None): if event и event.keysym in ('s', 'p'): 'do something'r  = tk.Tk () t = tk.Text () t.pack () r.bind ('', key_handler) r.mainloop ()  

С выше, когда вы вводите текст в виджет «Текст», процедура key_handler вызывается для каждой (или почти каждой) клавиши, которую вы нажимаете.



/keyboard

Получите полный контроль над своей клавиатурой с помощью этой небольшой библиотеки Python. Перехват глобальных событий, регистрация горячих клавиш, имитация нажатия клавиш и многое другое.

Возможности

  • Global event hook на всех клавиатурах (захватывает клавиши независимо от фокуса).
  • Listen и send события клавиатуры.
  • Работает с Windows и Linux (требуется sudo), с экспериментальной OS X поддержка (спасибо @glitchassassin!).
  • Pure Python , модули C не должны компилироваться.
  • Нулевые зависимости . Легко установить и развернуть, просто скопируйте файлы.
  • Python 2 и 3 .
  • Поддержка сложных горячих клавиш (например, ctrl + shift + m, ctrl + space ) с управляемым тайм-аутом.
  • Включает API высокого уровня (например, запись и воспроизведение, add_abbreviation ).
  • Отображает ключи в том виде, в каком они на самом деле находятся в вашем макете, с полной поддержкой интернационализации (например, Ctrl + ç ).
  • События автоматически фиксируются в отдельном потоке, не блокируют основную программу.
  • Протестировано и задокументировано.
  • Не нарушает выделение мертвые клавиши (я смотрю на вас, pyHook).
  • Поддержка мыши доступна через мышь проекта ( pip install mouse ).

Использование

Установите пакет PyPI:

  pip install keyboard  

или клонируйте репозиторий (установка не требуется, исходных файлов достаточно):

  git clone https://github.com/boppreh /клавиатура ode> 

или загрузите и извлеките zip-архив в папку проекта.

Затем проверьте документацию API ниже, чтобы узнать, какие функции доступны.

Пример

 import keyboardkeyboard.press_and_release ('shift + s, space') keyboard.write ('Быстрая коричневая лиса прыгает  над ленивым псом. ') keyboard.add_hotkey (' ctrl + shift + a ', print, args = (' triggered ',' hotkey ')) # Нажмите PAGE UP, затем PAGE DOWN, чтобы ввести "foobar" .keyboard.add_hotkey (  'page up, page down', lambda: keyboard.write ('foobar')) # Блокирует, пока вы не нажмете esc.keyboard.wait ('esc') # Записывайте события, пока не будет нажата 'esc' .recorded = keyboard.record (  until = 'esc') # Затем повторите воспроизведение с трехкратной скоростью .keyboard.play (записано, speed_factor = 3) # Введите @@, затем нажмите пробел, чтобы заменить его на abbreviation.keyboard.add_abbreviation ('@@', 'my.  long.email@example.com ') # Блокировать навсегда, как `while True`.keyboard.wait () 

Известные ограничения:

  • События, сгенерированные в Windows, не сообщают идентификатор устройства ( event.device == None ). # 21
  • Ключи мультимедиа в Linux могут отображаться безымянными (только скан-код) или вообще не отображаться. # 20
  • Подавление/блокировка клавиш доступны только в Windows. # 22
  • Чтобы избежать зависимости от X, части Linux читают необработанные файлы устройств (/dev/input/input * ), но для этого требуется root.
  • В других приложениях, например в некоторых играх, могут регистрироваться перехватчики, которые перехватывают события всех клавиш. В этом случае keyboard не сможет сообщать о событиях.
  • Эта программа не пытается скрыться, поэтому не используйте ее для клавиатурных шпионов или онлайн-игровых ботов. . Будьте ответственны.

Содержание

  • клавиатура. KEY_DOWN
  • клавиатура .
  • клавиатура.
  • keyboard.
  • keyboard. sided_modifiers
  • keyboard. версия
  • keyboard. is_modifier
  • клавиатура. key_to_scan_codes
  • keyboard. parse_hotkey
  • keyboard. send (псевдонимы: press_and_release )
  • клавиатура. нажмите
  • keyboard. release
  • keyboard. is_pressed
  • клавиатура. call_later
  • keyboard. hook
  • keyboard. on_press
  • клавиатура. on_release
  • клавиатура. hook_key
  • клавиатура. on_press_key
  • клавиатура. on_release_key
  • клавиатура . unhook (псевдонимы: unblock_key , unhook_key , unremap_key)
  • клавиатура. unhook_all
  • keyboard.
  • keyboard.
  • клавиатура. parse_hotkey_combinations
  • keyboard. add_hotkey (псевдонимы: register_hotkey )
  • keyboard. remove_hotkey (псевдонимы: clear_hotkey , unregister_hotkey , unremap_hotkey)
  • keyboard. unhook_all_hotkeys ( псевдонимы: clear_all_hotkeys , remove_all_hotkeys , unregister_all_hotkeys)
  • keyboard.
  • keyboard.
  • keyboard. restore_state
  • keyboard. restore_modifiers
  • keyboard. write
  • клавиатура rd. wait
  • keyboard. get_hotkey_name
  • keyboard. read_event
  • keyboard.
  • keyboard.
  • keyboard.
  • keyboard.
  • клавиатура. stop_recording
  • keyboard. record
  • keyboard. play (псевдонимы: replay )
  • keyboard. add_word_listener (псевдонимы: register_word_listener)
  • keyboard. remove_word_listener (псевдонимы: remove_abbreviation )
  • keyboard. add_abbreviation (псевдонимы: register_abbreviation )
  • keyboard. normalize_name

клавиатура.
 = 'down' 

клавиатура. KEY_UP

 = 'up' 

class keyboard. KeyboardEvent

KeyboardEvent. устройство

KeyboardEvent. event_type

KeyboardEvent. is_keypad

KeyboardEvent. модификаторы

KeyboardEvent.

KeyboardEvent.

KeyboardEvent. время

KeyboardEvent. to_json (self, sure_ascii = False)

[source]

keyboard. all_modifiers

 = {'alt', 'alt gr', 'ctrl', 'left alt', 'left ctrl', 'сдвиг влево', 'влево  windows ',' right alt ',' right ctrl ',' правый  t shift ',' right windows ',' shift ',' windows '} 

клавиатура. sided_modifiers

 = {'alt', 'ctrl', 'shift', 'windows'} 

клавиатура. версия

 = '0.13.5' 

keyboard. is_modifier (ключ)

[source]

Возвращает True, если key — это отсканированный код или имя клавиши-модификатора.

keyboard. key_to_scan_codes ( key, error_if_missing = True)

[source]

Возвращает список кодов сканирования, связанных с этим ключом (имя или код сканирования).

keyboard. parse_hotkey (горячая клавиша)

[source]

Разбирает Предоставленная пользователем горячая клавиша во вложенных кортежах, представляющих анализируемую структуру, причем нижние значения представляют собой списки кодов сканирования. Также принимает необработанные коды сканирования, которые затем заключаются в требуемое количество вложений.

Пример:

 parse_hotkey ("alt + shift + a, alt + b, c") # Ключи: ^ ~ ^ ^ ~~~ ^ ^ ^ ~ ^ ^ ^ # Шаги: ^ ~~~~~~~~  ~ ^ ^ ~~~ ^ ^ # ((alt_codes, shift_codes, a_codes), (alt_codes, b_codes), (c_codes,)) 

клавиатура. send (hotkey, do_press = True, do_release = True)

[source]

Отправляет события ОС, которые выполняют данная горячая клавиша горячая клавиша.

  • hotkey может быть либо кодом сканирования (например, 57 для пробела), одиночная клавиша (например, «пробел») или многопозиционная, многоступенчатая горячая клавиша (например, «alt + F4, ввод»).
  • do_press если true, то отправляются события прессы. По умолчанию True.
  • do_release , если true, то отправляются события выпуска. По умолчанию True.
 send (57) send ('ctrl + alt + del') send ('alt + F4, enter') отправить ('shift + s')  

Примечание: клавиши отпускаются в порядке, обратном их нажатию.

keyboard. нажмите (горячая клавиша)

[источник]

Нажимает и удерживает горячую клавишу (см. send ).

клавиатура. выпуск (горячая клавиша)

[источник]

Отпускает горячую клавишу (см. send) .

клавиатура. is_pressed (горячая клавиша)

[источник]

Возвращает True, если клавиша нажата.

 is_pressed (57  ) # -> Trueis_pressed ('space') # -> Trueis_pressed ('ctrl + space') # -> True 

клавиатура. call_later (fn, args = (), delay = 0.001)

[source]

Вызывает указанную функцию в новом потоке после некоторого ожидания. Полезно для того, чтобы дать системе время для обработки события, не блокируя текущий поток выполнения.

keyboard. hook (callback, suppress = False, on_remove = )

[source]

Устанавливает глобальный прослушиватель на все доступные клавиатуры, вызывая обратный вызов каждый раз, когда нажимается или отпускается клавиша.

Событие, переданное обратному вызову, имеет значение введите keyboard.KeyboardEvent со следующими атрибутами:

  • name : представление символа в Юникоде (например «&») или описание (например, «пробел»). Имя всегда пишется в нижнем регистре.
  • scan_code : число, представляющее физический ключ, например 55.
  • time : отметка времени, когда произошло событие, с точностью, заданной ОС.

Возвращает указанный обратный вызов для упрощения разработки.

keyboard. on_press (callback, suppress = False)

[источник]

Вызывает обратный вызов для каждого события KEY_DOWN. Подробнее см. hook.

клавиатура. on_release (callback, suppress = False )

[источник]

Вызывает обратный вызов для каждого события KEY_UP. Подробнее см. hook.

клавиатура. hook_key (клавиша, обратный вызов, подавление = False)

[source]

Перехватывает события нажатия и нажатия для одной клавиши. Возвращает созданный обработчик события. Чтобы удалить подключенную клавишу, используйте unhook_key (key) или unhook_key (handler) .

Примечание: эта функция разделяет состояние с горячие клавиши, поэтому clear_all_hotkeys влияет и на него.

keyboard. on_press_key (key , callback, suppress = False)

[source]

Вызывает обратный вызов для события KEY_DOWN, связанного с данным ключом. Подробнее см. hook.

клавиатура.. on_release_key (key, callback, suppress = False)

[source]

вызывает обратный вызов для события KEY_UP, связанного с данным ключом. Подробнее см. hook.

клавиатура. отцепить (удалить)

[источник]

Удаляет ранее добавленную ловушку либо посредством обратного вызова, либо посредством возвращаемого значения hook .

keyboard. unhook_all ()

[source]

Удаляет все крючки клавиатуры используемые, включая горячие клавиши, сокращения, прослушиватели слов, записи и wait .

путь> клавиатура. block_key (ключ)

[источник]

Подавляет все ключевые события данной клавиши, независимо от модификаторов .

клавиатура. remap_key (src, dst)

[источник]

При каждом нажатии или отпускании клавиши src , независимо от модификаторов, вместо этого нажмите или отпустите горячую клавишу dst .

клавиатура. parse_hotkey_combinations (горячая клавиша)

[источник]

Анализирует горячую клавишу, предоставленную пользователем. В отличие от parse_hotkey , вместо того, чтобы каждый шаг был списком различных кодов сканирования для каждой клавиши, каждый шаг представляет собой список всех возможных комбинаций этих кодов сканирования.

keyboard. add_hotkey (горячая клавиша, обратный вызов, args = (), suppress = False, timeout = 1, trigger_on_release = False)

[источник]

Вызывает обратный вызов каждый раз, когда нажимается горячая клавиша. Горячая клавиша должна быть в формате ctrl + shift + a, s . Это сработает, когда пользователь одновременно удерживает Ctrl, Shift и «a», отпускает, а затем нажимает «s». Для обозначения буквенных запятых, плюсов и пробелов используйте их имена (‘запятая’, ‘плюс’, ‘пробел’).

  • args — необязательный список аргументов, передаваемых в обратный вызов во время каждого вызова.
  • suppress определяет, должны ли успешные триггеры блокировать отправку ключей в другие программы.
  • timeout — количество секунд, которое может пройти между нажатиями клавиш.
  • trigger_on_release если true, обратный вызов вызывается при отпускании клавиши вместо нажатия клавиши.

Возвращается функция обработчика событий. Чтобы удалить вызов горячей клавиши remove_hotkey (горячая клавиша) или remove_hotkey (обработчик) . Перед сбросом состояния горячей клавиши.

Примечание : горячие клавиши активируются, когда последняя клавиша нажата , а не отпущена. Примечание: обратный вызов выполняется в отдельном потоке, асинхронно. Пример того, как использовать обратный вызов синхронно, см. В разделе wait .

Примеры:

 # Другое, но  эквивалентные способы прослушивания нажатия клавиши пробела. add_hotkey ('', print, args = ['пробел был нажат']) add_hotkey ('пробел', print, args = ['пробел был нажат']) add_hotkey ('Пробел', print, args = ['пробел был нажат  ']) # Здесь 57 представляет собой код клавиатуры для пробела;  поэтому вы будете # нажимать 'пробел', а не '57', чтобы активировать функцию печати. ​​add_hotkey (57, print, args = ['пробел был нажат']) add_hotkey ('ctrl + q', quit) add_hotkey ('ctrl  + alt + enter, space ', some_callback) 

клавиатура. remove_hotkey (hotkey_or_callback)

[источник]

Удаляет ранее привязанную горячую клавишу. Должен вызываться со значением, возвращенным add_hotkey.

keyboard. unhook_all_hotkeys ()

[source]

Удаляет все используемые горячие клавиши клавиатуры, включая сокращения, прослушиватели слов, записи и подождите s.

keyboard. remap_hotkey (src, dst, suppress = True, trigger_on_release = False )

[источник]

Каждый раз, когда нажимается горячая клавиша src , подавляйте ее и отправляйте dst вместо этого.

Пример:

 remap_hotkey ('alt + w', 'ctrl + up') 

keyboard. stash_state ()

[источник]

Создает список всех нажатых в данный момент кодов сканирования, отменяет их и возвращает список. Хорошо сочетается с клавиатурой restore_state и restore_modifiers.

. restore_state (scan_codes)

[source]

Данный список scan_codes гарантирует, что эти ключи, и только эти ключи, нажаты. Хорошо сочетается с stash_state , альтернативой restore_modifiers.

клавиатуры. restore_modifiers (scan_codes)

[source]

Как restore_state , но восстанавливает только ключи-модификаторы.

keyboard. (text, delay = 0, restore_state_after = True, exact = None)

[источник]

Отправляет в ОС события искусственной клавиатуры, имитируя набор заданного текста. Символы, недоступные на клавиатуре, вводятся как явные символы Unicode с использованием специфических для ОС функций, таких как alt + codepoint.

Для обеспечения целостности текста все нажатые в данный момент клавиши отпускаются до того, как текст будет набран, и модификаторы затем восстанавливаются.

  • delay — это количество секунд ожидания между нажатиями клавиш, по умолчанию — без задержки.
  • restore_state_after может использоваться для восстановления состояния нажатых клавиш после набора текста, то есть нажатия клавиш, которые были отпущены в начале. По умолчанию True.
  • точный принуждает вводить все символы как явный Unicode (например, alt + codepoint или специальные события). Если Нет, используется предлагаемое значение, зависящее от платформы..

клавиатура. wait (hotkey = None, suppress = False, trigger_on_release = False)

[источник]

Блокирует выполнение программы до тех пор, пока не будет нажата данная горячая клавиша, или, если не задано никаких параметров, блокирует навсегда.

keyboard. get_hotkey_name (names = None)

[source]

Возвращает строковое представление горячей клавиши от заданных названий клавиш или от нажатых в данный момент клавиш, если не указаны. Эта функция:

  • нормализует имена;
  • удаляет префиксы «левый» и «правый»;
  • заменяет «+» имя ключа с «плюсом» во избежание двусмысленности;
  • сначала помещает ключи-модификаторы в стандартизированном порядке;
  • отсортировать оставшиеся ключи;
  • наконец, объединяет все со знаком «+».

Пример:

 get_hotkey_name (['+', '  left ctrl ',' shift ']) # "ctrl + shift + plus" 

клавиатура. read_event (suppress = False)

[source]

Блокирует до тех пор, пока не произойдет событие клавиатуры, а затем возвращает это событие.

keyboard. read_key (suppress = False)

[source]

Блокирует до события клавиатуры происходит, затем возвращает имя этого события или, если он отсутствует, его код сканирования.

keyboard. read_hotkey (suppress = True )

[source]

Аналогично read_key () , но блокируется до тех пор, пока пользователь не нажмет и не отпустит горячую клавишу (или единственную клавишу ), затем возвращает строку, представляющую нажатую горячую клавишу.

Пример:

 read_hotkey () # "ctrl + shift + p" 

клавиатура. get_typed_strings (events, allow_backspace = True)

[источник]

При заданной последовательности событий пытается определить, какие строки были набраны. Строки разделяются при нажатии нетекстовой клавиши (например, табуляции или средства ввода). Символы преобразуются в верхний регистр в соответствии со статусом сдвига и блокировки. Если allow_backspace имеет значение True, backspaces удаляет последний набранный символ.

Эта функция является генератором, поэтому вы можете передавать бесконечный поток событий и преобразовывать их в строки в реальном время.

Обратите внимание, что эта функция является просто эвристической. Windows, например, сохраняет состояние клавиатуры для каждого процесса, такое как раскладка клавиатуры, и эта информация недоступна для наших хуков.

 get_type_strings (record ()) # -> ['Это  what ',' Я записал ',' '] 

keyboard. start_recording (loaded_events_queue = None)

[источник]

Начинает запись всех событий клавиатуры в глобальную переменную или заданную очередь, если таковая имеется. Возвращает очередь событий и подключенную функцию.

Используйте stop_recording () или unhook (hooked_function) для остановки.

клавиатура. stop_recording ()

[источник]

Останавливает глобальную запись событий и возвращает список зафиксированных событий.

клавиатура. запись (до = ‘escape’, suppress = False, trigger_on_release = False)

[источник]

Записывает все события клавиатуры со всех клавиатур, пока пользователь не нажмет данную горячую клавишу. Затем возвращает список записанных событий типа keyboard.KeyboardEvent . Хорошо сочетается с play (events) .

Примечание: это функция блокировки. Примечание: для получения дополнительных сведений о ловушке клавиатуры и событиях см. крючок .

клавиатура. play (events, speed_factor = 1.0)

[источник]

Воспроизводит последовательность записанных событий с сохранением относительных интервалов времени. Если speed_factor record () .

Примечание: текущее состояние клавиатуры очищается в начале и восстанавливается в конце функции.

keyboard. add_word_listener (word, callback, triggers = [‘space’], match_suffix = False, timeout = 2)

[источник]

Вызывает обратный вызов каждый раз, когда набирается последовательность символов (например, «домашнее животное»), за которой следует триггерный ключ (например, пробел). Модификаторы (например, alt, ctrl, shift) игнорируются.

  • word набранный текст, который нужно сопоставить. Например. ‘pet’.
  • callback — это функция без аргументов, вызываемая каждый раз при вводе слова.
  • triggers — это список ключей, по которым будет проверяться соответствие. Если пользователь нажимает некоторую клавишу, которая не является символом (len> 1) и не вызывает интриг, символы до сих пор будут отброшены. По умолчанию для триггера используется только пробел .
  • match_suffix определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова.
  • timeout — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды.

Возвращает созданный обработчик событий. Чтобы удалить прослушиватель слов, используйте remove_word_listener (word) или remove_word_listener (обработчик) .

Примечание: все действия выполняются над ключ вниз. События нажатия клавиш игнорируются. Примечание: совпадения слов чувствительны к регистру .

keyboard. remove_word_listener (word_or_handler)

[source]

Удаляет ранее зарегистрированный прослушиватель слов. Принимает либо слово, используемое во время регистрации (точная строка), либо обработчик событий, возвращаемый функциями add_word_listener или add_abbreviation .

клавиатура. add_abbreviation (source_text, replacement_text, match_suffix = False, timeout = 2)

[source]

Регистрирует горячую клавишу, заменяющую одну набранный текст с другим. Например,

 add_abbreviation ('tm', u '™') 

Заменяет каждое «tm», за которым следует пробел, на символ ™ (без пробела). Замена выполняется путем отправки событий возврата.

  • match_suffix определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова.
  • timeout — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды.

Подробнее см. add_word_listener .

клавиатура. normalize_name (name)

[source]

Учитывая имя клавиши (например, «LEFT CONTROL»), очистите вверх по строке и преобразовать в каноническое представление (например, «левый ctrl»), если оно известно.

Оцените статью
logicle.ru
Добавить комментарий