我需要通过数字usb键盘将数字输入到pygame脚本的框中。如果我使用普通键盘,我可以输入键盘上部区域的数字。如果我尝试使用小键盘,我会收到数字1的“à”字母。如果我尝试只使用小键盘(Lindy)我 无法得到任何东西。实际上,我的脚本正在获取密钥:
def get_key():
while 1:
event = pygame.event.poll()
if event.type == KEYDOWN:
return event.key
else:
pass
我错在哪里,为什么不能从小键盘中获取数字? 谢谢你的帮助
答案 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