wx.KeyEvent和非QWERTY键盘

时间:2019-06-12 16:39:51

标签: python wxpython wxwidgets

我正在使用wxPython,这是wxWidgets的Python桥梁,所以我猜想wxWidgets用户可以回复。我正在玩KeyEvent类,并且由于我正在其他平台和其他键盘上测试代码,因此我发现了一个令人难以置信的发现:其他键盘布局似乎不太理想支持。

这就是我的意思:如果您运行演示(在我的情况下为KeyEvents.py)并使用QWERTY键盘按随机字母,则一切正常。切换到另一种布局,事情仍然可以进行。现在,我有一个主要在法国使用的AZERTY键盘,因此当我按a键(在q的英语位置)时,会报告一个“ a”。到目前为止,一切都很好。但是,如果我按é(英语2键上的键),则会报告2。阅读文档并不能完全帮助我弄清楚发生了什么。自从wx出现后,这是没有人注意到的一种错误吗?我会猜,希望不会,但迟到总比不到我猜想要好。

为了更加技术化,KeyDownKeyUp事件存在此问题。我有一个AZERTY滑板,按2键,报告2,而在屏幕上写一个é。诚然,Char事件确实报告了é,但是,如果我理解正确,则在任何情况下都不会触发Char事件,而会触发KeyDown事件。也许我在这里错过了一些东西,也许那是我和国际用户的解决方案。

提前感谢您的答复,

1 个答案:

答案 0 :(得分:1)

  

Char事件不会在任何上下文中触发,而KeyDown事件是   触发。

错。

由于每个国家/地区都有自己的键盘布局,因此wxWidgets在按下某个键时会发送两个事件:一个(键事件)是该键的某种硬件代码;另一个(char事件)是“翻译的”代码,通常是Unicode点,但是如果禁用了Unicode支持,则是ASCII代码。

如果仅想对按键按下或按键按下事件进行操作,

Keyevent很有用。如果使用字符,则仅使用字符事件。