wx.KeyEvent 和非 QWERTY 键盘

wx.KeyEvent and non-QWERTY keyboards

我正在使用 wxPython,wxWidgets 的 Python 桥梁,所以我想 wxWidgets 用户可以回复。我正在玩 KeyEvent class 并且由于我正在其他平台和其他键盘上测试我的代码,我有一个令人难以置信的(对我来说)发现:其他键盘布局似乎得到很好的支持。

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

更技术性地说,KeyDownKeyUp 事件有这个问题。我有一个 AZERTY kleyboard,我按下 2 键,然后报告 2,而 é 写在屏幕上。诚然,Char 事件确实报告了一个 é,但是,如果我理解正确的话,Char 事件在任何情况下都不会触发,而 KeyDown 事件会被触发。也许我在这里遗漏了一些东西,也许这就是我和国际用户的解决方案。

提前感谢您的回复,

Char event is not triggered in any context a KeyDown event is triggered.

错误。

由于每个国家都有自己的键盘布局,当一个键被按下时wxWidgets发送两个事件:一个(键事件)是该键的硬件代码;另一个(字符事件)是 "translated" 代码,通常是 Unicode 点,但如果禁用了 Unicode 支持,则为 ASCII 代码。

如果您只想对 key-down 或 key-up 事件执行某些操作,

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