QKeyEvent 处理非拉丁布局

QKeyEvent handling non-latin layouts

如何处理Qt按下的非拉丁键?

例如,对于 'W' 按下的键 QKeyEvent::key() returns 87,但对于 'Ц' - 俄语布局中的相同键 - 它 returns 1062.

所以我不能使用像 Qt::Key_W 这样的常量来检查按下了哪个键:如果用户切换布局,它们将不起作用。

谢谢

按键的含义取决于当前选择的布局。你观察到的是正确的。如果您在任何其他应用程序中按下该键,您将不会得到 W,而是 Ц (C)。

给定的键仅当其位于生成罗马 W.

的布局中时才表示 Qt::Key_W

如果您打算引用物理按键,可以尝试使用QKeyEvent::nativeScanCode() and/or QKeyEvent::nativeVirtualKey()。当然,这些值取决于平台。