Spec-Zone.ru › Pygame
pygame.key
модуль pygame для работы с клавиатурой

Этот модуль содержит функции для работы с клавиатурой.

Очередь событий pygame.event получает события нажатия и отпускания кнопок клавиатуры. Оба события имеют атрибуты key и mod.

  • key: целочисленный идентификатор, представляющий каждую клавишу на клавиатуре

  • mod: битовая маска всех модификаторов клавиш, которые были нажаты в момент события

Событие pygame.KEYDOWN имеет дополнительные атрибуты unicode и scancode.

  • unicode: строка символов, являющаяся полностью переведённым символом, введённым с учётом клавиш Shift и Compose

  • scancode: платформенно-зависимый код клавиши, который может отличаться от клавиатуры к клавиатуре, но полезен для выбора необычных клавиш, таких как мультимедийные

Новое в pygame 2.0.0: Событие pygame.TEXTINPUT предпочтительнее атрибута unicode у pygame.KEYDOWN. Атрибут text содержит введённый символ.

Ниже приведён список всех констант (из pygame.locals), используемых для представления клавиш клавиатуры.

Примечание по портативности: Целочисленные значения констант клавиш отличаются между pygame 1 и 2. Всегда используйте константы клавиш (K_a) вместо целочисленных значений напрямую (97), чтобы ваш код обработки клавиш работал корректно как в pygame 1, так и в pygame 2.

pygame
Constant      ASCII   Description
---------------------------------
K_BACKSPACE   \b      backspace
K_TAB         \t      tab
K_CLEAR               clear
K_RETURN      \r      return
K_PAUSE               pause
K_ESCAPE      ^[      escape
K_SPACE               space
K_EXCLAIM     !       exclaim
K_QUOTEDBL    "       quotedbl
K_HASH        #       hash
K_DOLLAR      $       dollar
K_AMPERSAND   &       ampersand
K_QUOTE               quote
K_LEFTPAREN   (       left parenthesis
K_RIGHTPAREN  )       right parenthesis
K_ASTERISK    *       asterisk
K_PLUS        +       plus sign
K_COMMA       ,       comma
K_MINUS       -       minus sign
K_PERIOD      .       period
K_SLASH       /       forward slash
K_0           0       0
K_1           1       1
K_2           2       2
K_3           3       3
K_4           4       4
K_5           5       5
K_6           6       6
K_7           7       7
K_8           8       8
K_9           9       9
K_COLON       :       colon
K_SEMICOLON   ;       semicolon
K_LESS        <       less-than sign
K_EQUALS      =       equals sign
K_GREATER     >       greater-than sign
K_QUESTION    ?       question mark
K_AT          @       at
K_LEFTBRACKET [       left bracket
K_BACKSLASH   \       backslash
K_RIGHTBRACKET ]      right bracket
K_CARET       ^       caret
K_UNDERSCORE  _       underscore
K_BACKQUOTE   `       grave
K_a           a       a
K_b           b       b
K_c           c       c
K_d           d       d
K_e           e       e
K_f           f       f
K_g           g       g
K_h           h       h
K_i           i       i
K_j           j       j
K_k           k       k
K_l           l       l
K_m           m       m
K_n           n       n
K_o           o       o
K_p           p       p
K_q           q       q
K_r           r       r
K_s           s       s
K_t           t       t
K_u           u       u
K_v           v       v
K_w           w       w
K_x           x       x
K_y           y       y
K_z           z       z
K_DELETE              delete
K_KP0                 keypad 0
K_KP1                 keypad 1
K_KP2                 keypad 2
K_KP3                 keypad 3
K_KP4                 keypad 4
K_KP5                 keypad 5
K_KP6                 keypad 6
K_KP7                 keypad 7
K_KP8                 keypad 8
K_KP9                 keypad 9
K_KP_PERIOD   .       keypad period
K_KP_DIVIDE   /       keypad divide
K_KP_MULTIPLY *       keypad multiply
K_KP_MINUS    -       keypad minus
K_KP_PLUS     +       keypad plus
K_KP_ENTER    \r      keypad enter
K_KP_EQUALS   =       keypad equals
K_UP                  up arrow
K_DOWN                down arrow
K_RIGHT               right arrow
K_LEFT                left arrow
K_INSERT              insert
K_HOME                home
K_END                 end
K_PAGEUP              page up
K_PAGEDOWN            page down
K_F1                  F1
K_F2                  F2
K_F3                  F3
K_F4                  F4
K_F5                  F5
K_F6                  F6
K_F7                  F7
K_F8                  F8
K_F9                  F9
K_F10                 F10
K_F11                 F11
K_F12                 F12
K_F13                 F13
K_F14                 F14
K_F15                 F15
K_NUMLOCK             numlock
K_CAPSLOCK            capslock
K_SCROLLOCK           scrollock
K_RSHIFT              right shift
K_LSHIFT              left shift
K_RCTRL               right control
K_LCTRL               left control
K_RALT                right alt
K_LALT                left alt
K_RMETA               right meta
K_LMETA               left meta
K_LSUPER              left Windows key
K_RSUPER              right Windows key
K_MODE                mode shift
K_HELP                help
K_PRINT               print screen
K_SYSREQ              sysrq
K_BREAK               break
K_MENU                menu
K_POWER               power
K_EURO                Euro
K_AC_BACK             Android back button

Клавиатура также имеет список состояний модификаторов (из pygame.locals), которые можно комбинировать с помощью побитового ИЛИ.

pygame
Constant      Description
-------------------------
KMOD_NONE     no modifier keys pressed
KMOD_LSHIFT   left shift
KMOD_RSHIFT   right shift
KMOD_SHIFT    left shift or right shift or both
KMOD_LCTRL    left control
KMOD_RCTRL    right control
KMOD_CTRL     left control or right control or both
KMOD_LALT     left alt
KMOD_RALT     right alt
KMOD_ALT      left alt or right alt or both
KMOD_LMETA    left meta
KMOD_RMETA    right meta
KMOD_META     left meta or right meta or both
KMOD_CAPS     caps lock
KMOD_NUM      num lock
KMOD_MODE     AltGr

Информация о модификаторах содержится в атрибуте mod событий pygame.KEYDOWN и pygame.KEYUP. Атрибут mod — битовая маска всех клавиш-модификаторов, которые были нажаты в момент события. Информацию о модификаторах можно декодировать, используя побитовое И (кроме KMOD_NONE, которое следует сравнивать с помощью оператора равенства ==). Например:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN or event.type == pygame.KEYUP:
        if event.mod == pygame.KMOD_NONE:
            print('No modifier keys were in a pressed state when this '
                  'event occurred.')
        else:
            if event.mod & pygame.KMOD_LSHIFT:
                print('Left shift was in a pressed state when this event '
                      'occurred.')
            if event.mod & pygame.KMOD_RSHIFT:
                print('Right shift was in a pressed state when this event '
                      'occurred.')
            if event.mod & pygame.KMOD_SHIFT:
                print('Left shift or right shift or both were in a '
                      'pressed state when this event occurred.')
pygame.key.get_focused()
true, если дисплей получает входные данные с клавиатуры от системы
get_focused() -> bool

Возвращает True, когда окно дисплея имеет фокус клавиатуры в системе. Если дисплей должен гарантировать, что не потеряет фокус клавиатуры, он может использовать pygame.event.set_grab(), чтобы захватить все входные данные.

pygame.key.get_pressed()
получить состояние всех кнопок клавиатуры
get_pressed() -> bools

Возвращает последовательность логических значений, представляющих состояние каждой клавиши на клавиатуре. Используйте значения констант клавиш для индексации массива. Значение True означает, что кнопка нажата.

Примечание

Получение списка нажатых кнопок с помощью этой функции не является правильным способом обработки ввода текста от пользователя. Нет способа узнать порядок нажатия клавиш, и быстро нажатые клавиши могут быть полностью пропущены между двумя вызовами функции pygame.key.get_pressed(). Также нет способа преобразовать эти нажатые клавиши в значение полностью переведённого символа. Для этой функциональности см. события pygame.KEYDOWN в очереди pygame.event.

Новое в pygame 2.2.0: Коллекция логических значений, возвращаемых функцией get_pressed, не может быть итерирована, так как индексы внутреннего кортежа не соответствуют кодам клавиш.

pygame.key.get_mods()
определить, какие клавиши-модификаторы удерживаются
get_mods() -> int

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

pygame.key.set_mods()
временно установить, какие клавиши-модификаторы нажаты
set_mods(int) -> None

Создайте битовую маску констант клавиш-модификаторов, которые вы хотите установить в вашей программе.

pygame.key.set_repeat()
контроль повторения удерживаемых клавиш
set_repeat() -> None
set_repeat(delay) -> None
set_repeat(delay, interval) -> None

Когда повторение клавиш включено, удерживаемые клавиши будут генерировать несколько событий pygame.KEYDOWN. Параметр delay — количество миллисекунд, которое пройдёт до отправки первого повторного события pygame.KEYDOWN. После этого событие pygame.KEYDOWN будет отправляться каждые interval миллисекунд. Если задано значение delay, а значение interval не задано или равно 0, то interval будет установлено равным значению delay.

Для отключения повторения клавиш вызовите эту функцию без аргументов или с параметром delay равным 0.

При инициализации pygame повторение клавиш отключено.

Возможные исключения

ValueError -- если delay или interval меньше 0

Изменено в pygame 2.0.0: Теперь возникает исключение ValueError (а не pygame.error) если delay или interval меньше 0.

pygame.key.get_repeat()
получить значения повторения удерживаемых клавиш
get_repeat() -> (delay, interval)

Получить значения задержки delay и интервала interval повторения клавиш. См. pygame.key.set_repeat() для описания этих значений.

Новое в pygame 1.8.

pygame.key.name()
получить имя идентификатора клавиши
name(key, use_compat=True) -> str

Получить описательное имя кнопки по идентификатору клавиши. Возвращает пустую строку ("") если клавиша не найдена.

Если аргумент use_compat имеет значение True (по умолчанию), эта функция возвращает устаревшее имя клавиши, где применимо. Ожидается, что возвращаемое значение будет одинаковым в разных версиях pygame (при условии, что соответствующая константа клавиши существует и уникальна). Если возвращаемое значение передано в функцию key_code, будет возвращена исходная константа.

Экспериментально: Параметр use_compat все ещё находится в стадии разработки для тестирования и обратной связи. Он может измениться. Пожалуйста, оставьте обратную связь по use_compat разработчикам.

Если этот аргумент имеет значение False, возвращаемое имя может быть более привлекательным для отображения и может охватывать более широкий спектр клавиш, чем при использовании use_compat, но нет гарантий, что это имя будет одинаковым в разных версиях pygame. Если возвращённое имя передано в функцию key_code, будет возвращена исходная константа (это деталь реализации, которая может быть изменена позже, не полагайтесь на это).

Изменено в pygame 2.1.3: Добавлен аргумент use_compat и гарантирована стабильность API для него

pygame.key.key_code()
получить идентификатор клавиши по имени
key_code(name=string) -> int

Получить идентификатор клавиши по её описательному имени. Возвращает целое число, соответствующее одному из кодов клавиш K_*. Например:

>>> pygame.key.key_code("return") == pygame.K_RETURN
True
>>> pygame.key.key_code("0") == pygame.K_0
True
>>> pygame.key.key_code("space") == pygame.K_SPACE
True
Возможные исключения

ValueError -- если имя клавиши неизвестно.

Новое в pygame 2.0.0.

pygame.key.start_text_input()
начало обработки событий ввода текста Юникод
start_text_input() -> None

Начать прием pygame.TEXTEDITING и pygame.TEXTINPUT событий. Применимо, показывать экранную клавиатуру или редактор IME.

Для многих языков нажатия клавиш автоматически сгенерируют соответствующее pygame.TEXTINPUT событие. Специальные клавиши, такие как Esc или функциональные клавиши, и определенные комбинации клавиш не будут генерировать pygame.TEXTINPUT события.

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

pygame.TEXTEDITING событие принимается при запуске или изменении составления IME. Оно содержит составление text, length, и редактирование start позиции внутри составления (атрибуты text, length, и start, соответственно). Когда составление подтверждается (или получен ввод без IME), генерируется pygame.TEXTINPUT событие.

Обработка событий ввода текста включена по умолчанию.

Новое в pygame 2.0.0.

pygame.key.stop_text_input()
остановка обработки событий ввода текста Юникод
stop_text_input() -> None

Остановить прием pygame.TEXTEDITING и pygame.TEXTINPUT событий. Если экранная клавиатура или редактор IME были показаны с помощью pygame.key.start_text_input(), скрыть их снова.

Обработка событий ввода текста включена по умолчанию.

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

Новое в pygame 2.0.0.

pygame.key.set_text_input_rect()
управление позицией списка кандидатов
set_text_input_rect(Rect) -> None

Это устанавливает прямоугольник, используемый для набора текста с помощью IME. Он управляет тем, где откроется список кандидатов, если это поддерживается.

Новое в pygame 2.0.0.




Изменить на GitHub

© Pygame Developers.
Licensed under the GNU LGPL License version 2.1.
https://www.pygame.org/docs/ref/key.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API