[TOC]
# **pygame.key**
与键盘相关的 Pygame 模块。
## **函数**
* pygame.key.get\_focused() — 当窗口获得键盘的输入焦点时返回 True
* pygame.key.get\_pressed() — 获取键盘上所有按键的状态
* pygame.key.get\_mods() — 检测是否有组合键被按下
* pygame.key.set\_mods() — 临时设置某些组合键为被按下状态
* pygame.key.set\_repeat() — 控制重复响应持续按下按键的时间
* pygame.key.get\_repeat() — 获取重复响应按键的参数
* pygame.key.name() — 获取按键标识符对应的名字
该模块包含处理与键盘操作相关的函数。当键盘按键被按下和释放时,事件队列将获得 pygame.KEYDOWN 和 pygame.KEYUP 事件消息。这两个消息均包含 key 属性,是一个整数的 id,代表键盘上具体的某个按键。
pygame.KYEDOWN 事件还有个额外的属性 unicode 和 scancode。unicode 代表一个按键翻译后的 Unicode 编码,这包含 shift 按键和组合键。scancode 是扫描码,不同键盘间该值可能不同。不过这对于特殊按键像多媒体键的选择是有用的。
温馨提示:当键盘按下的时候,键盘会发送一个扫描码给系统。扫描码是键盘反馈哪一个按键被按下的方式,不同类型的键盘扫描码不同。再由系统调用相应的函数将其转换为统一的 Unicode 编码。
key 属性的值是一个数字,为了方便使用,Pygame 将这些数字定义为以下这些常量:
| **KeyASCII** | **ASCII** | **描述** |
| --- | --- | --- |
| K*BACKSPACE* | \\b | 退格键(Backspace) |
| K\_TAB | \\t | 制表键(Tab) |
| K\_CLEAR | | 清楚键(Clear) |
| K\_RETURN | \\r | 回车键(Enter) |
| K\_PAUSE | | 暂停键(Pause) |
| K\_ESCAPE | ^\[ | 退出键(Escape) |
| K\_SPACE | | 空格键(Space) |
| K\_EXCLAIM | ! | 感叹号(exclaim) |
| K\_QUOTEDBL | “ | 双引号(quotedbl) |
| K\_HASH | # | 井号(hash) |
| K\_DOLLAR | $ | 美元符号(dollar) |
| K\_AMPERSAND | & | and 符号(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 符号(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 | | 0(小键盘) |
| K\_KP1 | | 1(小键盘) |
| K\_KP2 | | 2(小键盘) |
| K\_KP3 | | 3(小键盘) |
| K\_KP4 | | 4(小键盘) |
| K\_KP5 | | 5(小键盘) |
| K\_KP6 | | 6(小键盘) |
| K\_KP7 | | 7(小键盘) |
| K\_KP8 | | 8(小键盘) |
| K\_KP9 | | 9(小键盘) |
| K\_KP\_PERIOD | . | 句号(小键盘) |
| K\_KP\_DIVIDE | / | 除号(小键盘) |
| K\_KP\_MULTIPLY | \* | 乘号(小键盘) |
| K\_KP\_MINUS | \- | 减号(小键盘) |
| K\_KP\_PLUS | + | 加号(小键盘) |
| K\_KP\_ENTER | \\r | 回车键(小键盘) |
| K\_KP\_EQUALS | \= | 等于号(小键盘) |
| K\_UP | | 向上箭头(up arrow) |
| K\_DOWN | | 向下箭头(down arrow) |
| K\_RIGHT | | 向右箭头(right arrow) |
| K\_LEFT | | 向左箭头(left arrow) |
| K\_INSERT | | 插入符(insert) |
| K\_HOME | | Home 键(home) |
| K\_END | | 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 | | 右边的 shift 键(right shift) |
| K\_LSHIFT | | 左边的 shift 键(left shift) |
| K\_RCTRL | | 右边的 ctrl 键(right ctrl) |
| K\_LCTRL | | 左边的 ctrl 键(left ctrl) |
| K\_RALT | | 右边的 alt 键(right alt) |
| K\_LALT | | 左边的 alt 键(left alt) |
| K\_RMETA | | 右边的元键(right meta) |
| K\_LMETA | | 左边的元键(left meta) |
| K\_LSUPER | | 左边的 Window 键(left windows key) |
| K\_RSUPER | | 右边的 Window 键(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) |
还有一个 mod 属性,用于描述组合键状态。
以下是组合键的常量定义:
| **KeyASCII** | **描述** |
| --- | --- |
| KMOD\_NONE | 木有同时按下组合键 |
| KMOD\_LSHIFT | 同时按下左边的 shift 键 |
| KMOD\_RSHIFT | 同时按下右边的 shift 键 |
| KMOD\_SHIFT | 同时按下 shift 键 |
| KMOD\_CAPS | 同时按下大写字母锁定键 |
| KMOD\_LCTRL | 同时按下左边的 ctrl 键 |
| KMOD\_RCTRL | 同时按下右边的 ctrl 键 |
| KMOD\_CTRL | 同时按下 ctrl 键 |
| KMOD\_LALT | 同时按下左边的 alt 键 |
| KMOD\_RALT | 同时按下右边的 alt 键 |
| KMOD\_ALT | 同时按下 alt 键 |
| KMOD\_LMETA | 同时按下左边的元键 |
| KMOD\_RMETA | 同时按下右边的元键 |
| KMOD\_META | 同时按下元键 |
| KMOD\_NUM | 同时按下数字键盘锁定键 |
| KMOD\_MODE | 同时按下模式转换键 |
温馨提示:如果 mod & KMOD\_CTRL 是真的话,表示用户同时按下了 Ctrl 键。
## **函数详解**
### **pygame.key.get\_focused()**
当窗口获得键盘的输入焦点时返回 True。
get\_focused() -> bool
当窗口获得键盘的输入焦点时返回 True,如果窗口需要确保不失去键盘焦点,可以使用 pygame.event.set\_grab(True) 独占所有的输入接口。
温馨提示:注意,这样做你就无法将鼠标移出窗口客户区了,但你仍然可以通过 Ctrl - Alt - Delete 热键“解围”。
### **pygame.key.get\_pressed()**
获取键盘上所有按键的状态。
get\_pressed() -> bools
返回一个由布尔类型值组成的序列,表示键盘上所有按键的当前状态。使用 key 常量作为索引,如果该元素是 True,表示该按键被按下。
使用该函数获取一系列按钮被按下的状态,并不能正确的获取用户输入的文本。因为你无法知道用户按键的被按下的顺序,并且快速的连续按下键盘可能无法完全被捕获(在两次调用 pygame.key.get\_pressed() 的过程中被忽略),也无法将这些按下的按键完全转化为字符值。实现此功能可以通过捕获 pygame.KEYDOWN 事件消息来实现。
### **pygame.key.get\_mods()**
检测是否有组合键被按下。
get\_mods() -> int
返回一个包含所有组合键位掩码的整数。使用位操作符 & 你可以检测某个组合键是否被按下。
温馨提示:假如 pygame.key.get\_mods() 返回值存放在 mods 变量中,如果 mods & KMOD\_CTRL 为 True,表示 ctrl 键正被按下。
### **pygame.key.set\_mods()**
临时设置某些组合键为被按下状态。
set\_mods(int) -> None
创建一个位掩码整数,包含你需要设置为被按下状态的组合键。
温馨提示:比如我们需要设置 ctrl 和 alt 组合键为按下状态,则可以 mods = KMOD\_CTRL | KMOD\_ALT,然后调用 pygame.key.set\_mods(mods),这样尽管用户没有按下 ctrl 和 alt 组合键,它们依然是显示被按下状态。
### **pygame.key.set\_repeat()**
控制重复响应持续按下按键的时间。
set\_repeat() -> None
set\_repeat(delay, interval) -> None
当开启重复响应按键,那么用户持续按下某一按键,就会不断产生同一 pygame.KEYDOWN 事件。delay 参数设置多久后(单位是毫秒)开始发送第一个 pygame.KEYDOWN 事件。interval 参数设置发送两个事件之间的间隔。如果不传入任何参数,表示取消重复响应按键。
### **pygame.key.get\_repeat()**
获取重复响应按键的参数。
get\_repeat() -> (delay, interval)
当开启重复响应按键,那么用户持续按下某一按键,就会不断产生同一 pygame.KEYDOWN 事件。返回值是一个二元组,第一个元素 delay 表示多久后(单位是毫秒)开始发送第一个 pygame.KEYDOWN 事件。第二个元素 interval 表示发送两个事件之间的间隔。
默认情况下重复响应按键是没有开启的。
Pygame 1.8 新增加的。
### **pygame.key.name()**
获取按键标识符对应的名字。
name(key) -> string
获取一个按键标识符对应的字符串描述。
- 一、Python基础
- 1. 序言
- 1.1 Python简介
- 1.2 安装和使用IDE
- 1.3 语言特性和基础概念
- 2. 基本数据类型
- 2.2 字符串型
- 2.2.2 ASCII简介
- 2.2.4 字符串常用函数
- 3. 条件分支
- 3.3 闲聊条件判断和运算符优先级
- 10.正则表达式
- 【降龙十八章】Python小技巧
- 18.1 学习网址
- 18.2 PIP切换源
- 18.3 使用whl来安装
- 【工具优化】IDE优化技巧
- Anaconda
- Jupyter Notebook 的 Markdown 添加大纲
- Jupyter Notebook中图片缩放和居左
- Anaconda设置环境变量
- Pycharm
- PyCharm新建文档配置
- 设置字体和字号
- 设置主题和字体配色
- 保存和导入配置
- 设置对选择内容自动添加引号
- 推荐安装的插件
- Markdown
- 表格格式
- 二、Python进阶
- copy和deepcopy
- 《零基础入门学习 Python 》【小甲鱼版】
- 001.和Python的第一次接触+习题复习
- 002.用Python设计的第一个游戏 +习题复习
- Pygame详解
- Pygame详解:前言
- Pygame详解(一):Color类
- Pygame详解(二):display 模块
- Pygame详解(三):draw 模块
- Pygame详解(四):event 模块
- Pygame详解(五):font 模块
- Pygame详解(六):image 模块
- Pygame详解(七):key 模块
- Pygame详解(八):locals 模块
- Pygame详解(九):mixer 模块
- Pygame详解(十):mouse 模块
- Pygame详解(十一):Rect 对象
- Pygame详解(十二):Surface 对象
- Pygame详解(十三):time 模块
- Pygame详解(十四):music 模块
- Pygame详解(十五):pygame 模块
- Pygame详解(十六):cursors 模块
- Pygame详解(十七):joystick 模块
- Pygame详解(十八):mask 模块
- Pygame详解(二十一):BufferProxy 对象
- Pygame详解(二十三):gfxdraw 模块
- Pygame详解(二十五):Overlay 对象
- Pygame详解(二十八):sndarray 模块
- Pygame详解(三十一):camera 模块
- Pygame详解(三十二):cdrom 模块
- Pygame详解(三十六):version 模块
- pygame rect相关知识
- Tkinter详解
- Tkinter 组件详解(一):Label
- Tkinter 组件详解(二):Button