wx.KeyEvent 和非 QWERTY 键盘

问题描述 投票:0回答:1

我正在使用 wxPython,它是 wxWidgets 的 Python 桥梁,所以我想 wxWidgets 用户可以回复。我正在使用

KeyEvent
类,并且由于我在其他平台和其他键盘上测试我的代码,我做出了一个令人难以置信的(对我来说)发现:其他键盘布局似乎没有得到很好的支持。

我的意思是:如果您运行演示(在我的例子中是

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

更技术性地说,

KeyDown
KeyUp
事件存在这个问题。我有一块 AZERTY kleyboard,按下 2 键,会报告 2,而屏幕上会显示 é。不可否认,
Char
事件确实报告了 é,但是,如果我理解正确的话,在任何上下文中都不会触发
Char
事件,而会触发
KeyDown
事件。也许我在这里错过了一些东西,也许这就是我和国际用户的解决方案。

提前感谢您的回复,

python wxpython wxwidgets
1个回答
1
投票

在 KeyDown 事件发生的任何情况下都不会触发 Char 事件 触发了。

错误。

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

如果您只想对按键或按键事件执行某些操作,则 Keyevent 非常有用。如果使用字符,则仅使用字符事件。

有关 wxKeyEvent 的 wxWidgets 文档位于 https://docs.wxwidgets.org/trunk/classwx_key_event.html

© www.soinside.com 2019 - 2024. All rights reserved.