【问题标题】:When processing pygame keyboard events, what does the key mod "pygame.KMOD_MODE" indicate is being pressed?处理 pygame 键盘事件时,键 mod "pygame.KMOD_MODE" 表示正在按下什么?
【发布时间】:2020-04-20 03:23:05
【问题描述】:

为了消遣,我正在编写一个 python pygame 程序。我想添加键盘快捷键作为使用鼠标单击按钮的替代方法。在对此进行调查时,我正在查看可以充当键修饰符的 event.mod 类型(即 alt、ctrl、shift、num lock 等)。除了一个之外,它们非常简单。

我不知道修饰符 pygame.KMOD_MODE 是用来表示正在按下哪个键。这是修饰符列表,也是最后一个。

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     mode

标志的数值是十六进制 0x4000,但这只是一个映射,并不表示触发修饰符标志设置的原因。

我一直在四处寻找,但找不到任何使用或解释其意图的东西。当然我可以忽略它,因为这只是为了好玩而不是“真正的”项目,但我真的很想了解这是什么。

有人知道什么键会触发这个修饰符吗?

【问题讨论】:

  • pygame 文档现已更新为 @user2585435 提供的 AltGr 答案

标签: python pygame


【解决方案1】:

这里不是一个明确的答案,但Simple DirectMedia Layer 将 KMOD_MODE 映射到“AltGr”。 AltGr 似乎与国际\多语言环境键盘有关,尽管某些操作系统似乎有备用击键来实现相同的目的,例如AltGr key not working, instead i have to use Ctrl+AltGr

如果您手边没有带 AltGr 键的键盘,请尝试一些替代键组合,看看 PyGame 是否有相应响应。

【讨论】:

  • 感谢您的回复!这似乎是答案。据我了解,pygame 是 SDL 的包装器,因此 SDL 中的定义也应该转化为 pygame。我现在已经满足了我的需要 :-) 我将把它标记为答案。
  • 我现在已经在 GitHub 上修复了它,但它似乎还没有进入 pygame.org 的在线文档。
猜你喜欢
  • 2014-05-03
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多