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

获取一个按键标识符对应的字符串描述。

Pygame详解(七):key 模块相关推荐

  1. python笔记-Pygame详解(十七):joystick 模块

    感谢:来自江南的你 Pygame详解(十七):joystick 模块 #coding:utf-8 import pygame# Define some colors定义一些颜色 BLACK = ( 0 ...

  2. Pygame详解(十八):mask 模块

    pygame.mask Pygame 中处理图形遮罩的模块. 函数 pygame.mask.from_surface()  --  从指定 Surface 对象中返回一个 Mask pygame.ma ...

  3. SSH服务详解(七)– SSH 连接 Github

    SSH 连接 Github SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录) SSH 服务详解 (三)-- 使用 S ...

  4. Pygame详解:前言

    Pygame官网:https://www.pygame.org Pygame的官网是有详细的文档的:https://www.pygame.org/docs/ 下图是Pygame 的所有类和模块,都有对 ...

  5. PackageManagerService启动详解(七)之扫描系统应用安装目录阶段流程分析

    PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系 ...

  6. Android 动态分区详解(七) overlayfs 与 adb remount 操作

    0. 导读 最开始学习 Android 动态分区源码的时候,比较代码发现 system/core/fs_mgr 目录下多了一个名为 fs_mgr_overlayfs.cpp 的文件,一直不知道什么时候 ...

  7. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  8. python实现日历功能_详解Python日历模块的使用

    calendar模块的函数都是日历相关的,提供了对日期的一些操作方法,和生成日历的方法. calendar模块中提供了三大类: 一.calendar.Calendar(firstweekday=0) ...

  9. Linux字符设备驱动详解七(“插件“设备树实现RGB灯驱动)

    文章目录 系列文章目录 前言 正文 Device Tree Overlays:"插件"设备树 传统设备树 "插件"设备树 使用前提 案例说明 设备树:foo.d ...

最新文章

  1. 五分钟让你搞懂什么是“构造方法”
  2. 5年Python功力,总结了10个开发技巧
  3. SAP QM 质量检验特殊业务需求之方案漫谈
  4. Mysql 字符串处理函数
  5. 20个数据库设计的最佳实践
  6. 【记录】在云服务器安装tomcat部署自己的项目 通过ip无需加端口号直接访问
  7. Unity3D学习笔记之九为场景添加细节(二)
  8. html css js速成_CSS速成课程
  9. img 样式单和属性
  10. java 获取属性值和设置属性值
  11. 软件测试:我该坚持在一个人的岗位还是辞职?
  12. matlab 找椭圆中心点,点差分法matlab解椭圆型偏微分方程
  13. 关于PHP自定义采集图片脚本
  14. libaio在mysql中的作用,ubuntu安裝mysql遇到的坑----解決Mysql報錯缺少libaio.so.1
  15. eNSP-利用单臂路由实现VLAN 间路由
  16. tensorflow如何使用tensorboard将图片文件events.out.tfevents.1618410161.DESKTOP-CLCBFNS展示出来
  17. CSS中设置单机按钮,实现按下效果
  18. C++读入用逗号隔开的数据
  19. python获取工作日_Python的上一个工作日
  20. ReactNative进阶(三十五):应用脚手架 Yo 构建 RN 页面

热门文章

  1. 驱动精灵 v9.61 去广告最终版绿色清爽单文件
  2. mdx词典包_欧路词典—使用体验
  3. 营销值得学:创业做生意如何降维打击?
  4. 转: 雅虎35条优化黄金守则
  5. Android-代码设置TextView字体加粗或者不加粗
  6. 【C#】C#调用Bartender模板打印
  7. 奇特的锡纸海鲜小吃:吃到嗨都不会发胖的辣卤海鲜!值得开一家哦!
  8. 迁移 VMware 虚拟机到 KVM
  9. 2017.10.19 測試總結并今日總結
  10. linux+目录+配额,Linux磁盘配额管理