最近我一直在探讨的一个主题。
还有一件需要检查的事情是,在不同的键盘布局中是否得到正确的值。例如,当你切换到法语-PC布局时,它似乎并不像pygame正确地报告数字键代码。我的建议是使用wxPython。它在RawKeyCode属性中公开了平台特定的键码。
以下是一个演示代码示例:
import logging as log
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(200,100))
self.panel = wx.Panel(self, wx.ID_ANY)
self.panel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.panel.Bind(wx.EVT_KEY_UP, self.OnKeyDown)
self.panel.Bind(wx.EVT_CHAR, self.OnKeyDown)
self.panel.SetFocus()
self.Show(True)
def OnKeyDown(self, event=None):
line_txt = '---------------------'
print(line_txt)
for var in ['RawKeyCode', 'KeyCode', 'UnicodeKey']:
print(var, getattr(event, var))
if var == 'UnicodeKey':
print('char', chr(getattr(event, var)))
print(line_txt)
if __name__ == "__main__":
app = wx.App(False)
gui = MainWindow(None, "test")
app.MainLoop()
例如,当我在我的Mac上按下fn键(仅限于Mac的键)时,我会看到以下记录:
RawKeyCode 63
KeyCode 0
UnicodeKey 0
char
这与
平台特定的按键代码一致。