pygame 中的键盘布局感知组合
Keyboard layout aware combinations in pygame
Pygame 有一个常量,例如感叹号 !。该常量称为 pygame.K_EXCLAIM
。但是,在我的标准美式键盘布局中,感叹号是通过按下 shift 和键 1 产生的。考虑以下两个片段:
# 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_EXCLAIM
或 K_AMPERSAND
)吗?
你要的是event.unicode
属性:
if event.unicode == "!":
print("!")
Pygame 有一个常量,例如感叹号 !。该常量称为 pygame.K_EXCLAIM
。但是,在我的标准美式键盘布局中,感叹号是通过按下 shift 和键 1 产生的。考虑以下两个片段:
# 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_EXCLAIM
或 K_AMPERSAND
)吗?
你要的是event.unicode
属性:
if event.unicode == "!":
print("!")