Numpad不在pygame中工作

时间:2013-12-29 17:50:08

标签: python python-3.x pygame

我需要通过数字usb键盘将数字输入到pygame脚本的框中。如果我使用普通键盘,我可以输入键盘上部区域的数字。如果我尝试使用小键盘,我会收到数字1的“à”字母。如果我尝试只使用小键盘(Lindy)我 无法得到任何东西。实际上,我的脚本正在获取密钥:

def get_key():
  while 1:
    event = pygame.event.poll()
    if event.type == KEYDOWN:
      return event.key

    else:
      pass

我错在哪里,为什么不能从小键盘中获取数字? 谢谢你的帮助

1 个答案:

答案 0 :(得分:3)

Pygame KEYDOWN事件存储48-57(0x30 - 0x39)范围内的字母数字区号,应该如此。但是,无论是否切换了numlock,报告的小键盘按下的范围为256 - 265(0x100 - 0x109)。

将Numpad 1的值打印输出显示为“à”的原因是Numpad 1的键值为257,在Unicode中为à(U + 0101)。

这是一个快速片段,应该将numpad press转换为等效的ASCII键值(不转换其他小键盘键,如Enter,+或Delete,它们的值也与键盘上其他位置的值不同): / p>

if (event.key >= 0x100 and event.key <= 0x109):
  return event.key - 0xD0
else:
  return event.key