我之前使用event.unicode
执行此任务。如果我按 shift + 9 ,那么按键的事件的unicode属性为'('。如果我按 shift + alt + 9 ,然后按下键的事件的unicode属性为'(',键盘也会为alt键发送一个keydown,所以我知道一个人被压了。
但是,如果按 ctrl + shift + 9 ,则event.unicode == u''
。如何从中获取u'('
?
(类似地,对于 ctrl + shift + a ,我得到'\x01'
)
答案 0 :(得分:1)
好吧,你按下 CTRL 时所有按键被“改变”,因为这是创建 CTRL 键的全部意图:发送控制指令而不是简单文本。
如果您查看ASCII table,您会看到例如如何 CTRL + H 映射到控制字符BS (Backspace)
。
所以,你这里没有机会通过{{1}在 CTRL + SHIFT + 9 上接收'('
}。
您必须通过KEY_DOWN
检查按下的按键。
pygame.key.get_pressed()
答案 1 :(得分:0)
可能有一种更简单的方法,但是您可以使用pygame.key.get_pressed()
获取键盘上所有键的状态,然后检查按下的两个键是否为 Ctrl , Shift 和 9 键。然后你可以手动返回字符串 Ctrl + (而不是从函数中获取它。不确定是否有一种非常优雅的方法来执行此操作。
答案 2 :(得分:0)
检查 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:`