【发布时间】:2012-11-11 19:27:38
【问题描述】:
我使用的是 Mac OS X 10.6,我的键盘输入选择器菜单中有 Dvorak、US Extended 和挪威语,而我使用的是 US Extended。
当我使用键盘输入运行 Pygame 程序时,pygame 似乎认为我在使用 dvorak 无论实际选择了什么。
这是接受键盘输入的代码部分:
# Check for events
for event in pygame.event.get():
if event.type == KEYDOWN:
# Change the keyboard variables
if event.key == K_LEFT or event.key == ord('a'):
moveRight = False
moveLeft = True
if event.key == K_RIGHT or event.key == ord('d'):
moveLeft = False
moveRight = True
if event.key == K_UP or event.key == ord('w'):
moveDown = False
moveUp = True
if event.key == K_DOWN or event.key == ord('s'):
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.key == K_LEFT or event.key == ord('a'):
moveLeft = False
if event.key == K_RIGHT or event.key == ord('d'):
moveRight = False
if event.key == K_UP or event.key == ord('w'):
moveUp = False
if event.key == K_DOWN or event.key == ord('s'):
moveDown = False
if event.key == ord('x'):
player.top = random.randint(0, WINDOWHEIGHT - player.height)
player.left = random.randint(0, WINDOWWIDTH - player.width)
箭头键可以正常工作,但 WASD 键以与 Dvorak 一致的方式分布在键盘上。因此,“A”在两种布局上的位置相同,“W”在 QWERTY 的逗号键上,依此类推。如果我更改代码以查找 a、e、, 和 o 键,则一切正常。
如何让 Pygame 使用正确的布局?
【问题讨论】:
-
你为什么使用 ord() 而不是 pygame 给出的 KEYS?
-
代码来自 Invent Your Own Computer Games with Python 一书。 (inventwithpython.com) 我不知道作者为什么选择 ord() 而不是 KEYS。我可能会在下一章或续集 Invent [...] with Pygame 中了解这一点。
-
不好意思,续集其实叫《用 Python & Pygame 制作游戏》
标签: python pygame keyboard-events dvorak