pygame.key
pygame module to work with the keyboard
— true if the display is receiving keyboard input from the system
— get the state of all keyboard buttons
— determine which modifier keys are being held
— temporarily set which modifier keys are pressed
— control how held keys are repeated
— see how held keys are repeated
— get the name of a key identifier
— get the key identifier from a key name
— start handling Unicode text input events
— stop handling Unicode text input events
— controls the position of the candidate list

此模块包含处理键盘的功能。

这个 pygame.eventpygame module for interacting with events and queues 队列获取 pygame.KEYDOWN 和 pygame.KEYUP 按下并松开键盘按钮时发生的事件。这两个事件都有 key 和 mod 属性。

  • key :一个 integer ID 代表键盘上的每个键

  • mod :所有对象的位掩码 modifier keys 事件发生时处于按下状态的

这个 pygame.KEYDOWN 事件具有其他属性 unicode 和 scancode 。

  • unicode :作为输入的完全翻译的字符的单个字符串,这会考虑Shift键和合成键

  • scancode :特定于平台的按键代码,不同的键盘可能不同,但对于像多媒体键这样奇怪的键的按键选择很有用

New in pygame 2.0.0: 这个 pygame.TEXTINPUT 事件,而不是 unicode 的属性 pygame.KEYDOWN 。该属性 text 包含输入。

以下是所有常量的列表(从 pygame.localspygame constants )用于表示键盘键。

可移植性注意:在PYGAME 1和PYGAME 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.localspygame constants ),它们可以通过将它们按位或在一起来组装。

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 属性是事件发生时处于按下状态的所有修改键的位掩码。修饰符信息可以使用按位AND(除 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 if the display is receiving keyboard input from the system
get_focused() -> bool

退货 True 当显示窗口具有来自系统的键盘焦点时。如果显示器需要确保不会失去键盘焦点,它可以使用 pygame.event.set_grab()control the sharing of input devices with other applications 获取所有输入。

pygame.key.get_pressed()
get the state of all keyboard buttons
get_pressed() -> bools

返回表示键盘上每个键的状态的布尔值序列。使用键常数值为数组编制索引。一个 True 值表示按钮被按下。

备注

使用此函数获取按下按钮列表不是处理用户文本输入的正确方式。无法知道按键的顺序,并且在两次调用之间可能完全不会注意到快速按下的键 pygame.key.get_pressed() 。也无法将这些按下的键转换为完全转换的字符值。请参阅 pygame.KEYDOWN 世界上发生的事件 pygame.eventpygame module for interacting with events and queues 排队等待此功能。

pygame.key.get_mods()
determine which modifier keys are being held
get_mods() -> int

返回一个整数,该整数表示持有的所有修改键的位掩码。使用按位运算符可以测试特定的 modifier keys 都是按下的。

pygame.key.set_mods()
temporarily set which modifier keys are pressed
set_mods(int) -> None

创建的位掩码 modifier key constants 你想要强加于你的计划。

pygame.key.set_repeat()
control how held keys are repeated
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

Changed in pygame 2.0.0: A ValueError 现在已引发(而不是 pygame.error )如果 delay 或 interval <0。

pygame.key.get_repeat()
see how held keys are repeated
get_repeat() -> (delay, interval)

拿到 delay 和 interval 键盘重复值。参考 pygame.key.set_repeat()control how held keys are repeated 有关这些值的说明,请参见。

New in pygame 1.8.

pygame.key.name()
get the name of a key identifier
name(key) -> string

从键盘按钮id常量中获取按钮的描述性名称。

pygame.key.key_code()
get the key identifier from a key name
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 -- 如果密钥名称未知。

  • NotImplementedError -- 如果与SDL 1一起使用。

New in pygame 2.0.0.

pygame.key.start_text_input()
start handling Unicode text input events
start_text_input() -> None

开始接收 pygame.TEXTEDITING 和 pygame.TEXTINPUT 事件。如果适用,显示屏幕键盘或输入法编辑器。

对于许多语言,按键将自动生成相应的 pygame.TEXTINPUT 事件。特殊键,如退出键或功能键,以及某些键组合将不会生成 pygame.TEXTINPUT 事件。

在其他语言中,输入单个符号可能需要多次按键或特定于语言的用户界面。在这种情况下, pygame.TEXTINPUT 活动最好是比 pygame.KEYDOWN 用于文本输入的事件。

A pygame.TEXTEDITING 事件在IME合成启动或更改时接收。它包含了作文 text , length ,和编辑 start 在合成中的位置(属性 text , length ,以及 start )。当提交合成(或接收到非输入法输入)时, pygame.TEXTINPUT 事件被生成。

默认情况下,文本输入事件处理处于打开状态。

New in pygame 2.0.0.

pygame.key.stop_text_input()
stop handling Unicode text input events
stop_text_input() -> None

停止接收 pygame.TEXTEDITING 和 pygame.TEXTINPUT 事件。如果屏幕上的键盘或输入法编辑器显示为 pygame.key.start_text_input() ,再次隐藏它。

默认情况下,文本输入事件处理处于打开状态。

为了避免在用户在游戏过程中按住某个键时触发输入法编辑器或屏幕键盘,应在文本输入完成或用户在文本框外单击时禁用文本输入。

New in pygame 2.0.0.

pygame.key.set_text_input_rect()
controls the position of the candidate list
set_text_input_rect(Rect) -> None

这将设置用于使用输入法键入的矩形。它控制候选人列表的打开位置(如果支持)。

New in pygame 2.0.0.




Edit on GitHub