0

event.unicode以前用于此任务。如果我点击shift+ 9,那么按键事件的 unicode 属性为 '('。如果我点击shift+ alt+ 9,那么按键事件的 unicode 属性为 '(',键盘也会发送一个keydown 用于 alt 键,以便我知道按下了一个。

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

(同样,对于ctrl++ ,我得到shifta'\x01'

4

3 回答 3

1

好吧,您在按下时查看的所有击键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!"
于 2012-08-31T11:31:21.853 回答
0

可能有一种更简单的方法可以做到这一点,但是您可以使用获取键盘上所有键的状态,pygame.key.get_pressed()然后检查按下的两个键是否是CtrlShift9键。那么您可以手动返回字符串Ctrl+(而不是从函数中获取它。不确定是否有一种非常优雅的方式来做到这一点。

于 2012-09-05T01:34:39.903 回答
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:`
于 2014-06-16T17:59:35.193 回答