如何将组合键ctrl + shift + 9转换为字符串“ctrl +(”在PyGame中?

时间:2012-08-31 10:46:32

标签: python pygame

我之前使用event.unicode执行此任务。如果我按 shift + 9 ,那么按键的事件的unicode属性为'('。如果我按 shift + alt + 9 ,然后按下键的事件的unicode属性为'(',键盘也会为alt键发送一个keydown,所以我知道一个人被压了。

但是,如果按 ctrl + shift + 9 ,则event.unicode == u''。如何从中获取u'('

(类似地,对于 ctrl + shift + a ,我得到'\x01'

3 个答案:

答案 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:`