我event.unicode
以前用于此任务。如果我点击shift+ 9,那么按键事件的 unicode 属性为 '('。如果我点击shift+ alt+ 9,那么按键事件的 unicode 属性为 '(',键盘也会发送一个keydown 用于 alt 键,以便我知道按下了一个。
但是,如果我按ctrl+ shift+ 9,那么event.unicode == u''
. 我如何从中u'('
恢复过来?
(同样,对于ctrl++ ,我得到shift)a'\x01'
好吧,您在按下时查看的所有击键CTRL都是“更改的”,因为这是创建CTRL键的全部意图:发送控制指令而不是简单的文本。
如果您查看ASCII 表,您会看到例如CTRL+如何H映射到控制字符BS (Backspace)
。
'('
因此,您在这里没有机会CTRL仅通过.SHIFT9KEY_DOWN
您必须通过pygame.key.get_pressed()
检查按键。
if e.type == KEYDOWN:
k = pygame.key.get_pressed()
m = pygame.key.get_mods()
if m & KMOD_SHIFT and k[K_9]:
if m & KMOD_CTRL:
print "controlled yay!"
else:
print "yay!"
可能有一种更简单的方法可以做到这一点,但是您可以使用获取键盘上所有键的状态,pygame.key.get_pressed()
然后检查按下的两个键是否是Ctrl、Shift和9键。那么您可以手动返回字符串Ctrl+(而不是从函数中获取它。不确定是否有一种非常优雅的方式来做到这一点。
检查Ctrl+t
`for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
keys = pygame.key.get_pressed()
if keys[pygame.K_LCTRL]:
if event.key == pygame.K_t:`