[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