Python 如何转动组合键ctrl+;班次+;9,放入字符串“中”;ctrl+;(“在PyGame中?

Python 如何转动组合键ctrl+;班次+;9,放入字符串“中”;ctrl+;(“在PyGame中?,python,pygame,Python,Pygame,我以前使用的是event.unicode来完成此任务。如果我按shift+9,则按键向下的事件具有unicode属性“(”。如果我按shift+alt+9,则按键向下的事件具有unicode属性“(”,键盘还发送一个按键向下,以便我知道按下了一个alt键 但是,如果我按ctrl+shift+9,那么event.unicode==u'。如何从中恢复u'(' (类似地,对于ctrl+shift+a,我得到了'\x01')那么,当按下ctrl时,您回顾的所有击键都会被“更改”,因为这是创建ctrl键的

我以前使用的是
event.unicode
来完成此任务。如果我按shift+9,则按键向下的事件具有unicode属性“(”。如果我按shift+alt+9,则按键向下的事件具有unicode属性“(”,键盘还发送一个按键向下,以便我知道按下了一个alt键

但是,如果我按ctrl+shift+9,那么
event.unicode==u'
。如何从中恢复
u'('


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

那么,当按下ctrl时,您回顾的所有击键都会被“更改”,因为这是创建ctrl键的全部意图:发送控制指令而不是简单的文本

如果查看a,您将看到例如CTRL+H如何映射到控制字符
BS(Backspace)

因此,这里您没有机会通过按下键来接收
按CTRL+SHIFT+9)


您必须通过
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:`