【问题标题】:Keyboard layout aware combinations in pygamepygame中的键盘布局感知组合
【发布时间】:2018-02-03 19:11:29
【问题描述】:

Pygame 有一个常量,例如感叹号,!。该常量称为pygame.K_EXCLAIM。但是,在我的标准美式键盘布局中,感叹号是通过按 shift 和键 1 产生的。考虑以下两个 sn-ps:

# snippet 1
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_EXCLAIM:
            print('!')
        elif event.key == pygame.K_1:
            print('1')

# snippet 2
pressed = pygame.key.get_pressed()
if pressed[pygame.K_EXCLAIM]:
    print('!')
if pressed[pygame.K_1]:
    print('1')

在这两种情况下,当我按下 Shift+1 时,会产生一个感叹号,pygame 无法识别该组合,只是说按下了 shift 键和 1 键,打印值“1”。这让我有点担心,因为虽然我可以硬编码这样的组合,但它们取决于键盘的布局。

我可以让 pygame 以键盘布局感知的方式生成组合常量(例如 K_EXCLAIMK_AMPERSAND)吗?

【问题讨论】:

    标签: python keyboard pygame keyboard-layout


    【解决方案1】:

    你想要的是event.unicode属性:

    if event.unicode == "!":
         print("!")
    

    【讨论】:

    • 有趣,但它似乎不适用于 Shift+NumPad3 来生成 PageDown。这也能实现吗?
    • @Mephy Untestet!!你能测试和报告吗?
    • 虽然这对键盘布局进行了硬编码,但我试图避免这种情况;)我想 unicode 就足够了。
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 2018-07-21
    • 2010-11-19
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多