如何从 KeySym 或 KeyCode 构造 Qt::Key?
How to construct Qt::Key out of KeySym or KeyCode?
我有一个接收扫描码的低级按键记录器,没有 QKeyEvent,因为 QApplication 没有焦点。可以使用系统特定的库调用将扫描代码转换为密钥符号。
扫描码对应Qt的QKeyEvent->nativeScanCode(),按键符号对应QKeyEvent->nativeVirtualKey(),但Qt的Qt::Key值似乎是独立映射的。我想获取给定的 Qt::Key 并转换为符号键或扫描码,或者从符号键或扫描码构造 Qt::Key ,以便我可以将捕获的键与预-确定Qt::Key的。
我见过其他项目通过实施大型、不完整的查找来做到这一点 table ref1 ref2。当然,如果 Qt 正在收集扫描代码并从中构建 QtKey,那么它一定有一些内部映射吗?我想要一些方法来避免重复它。是否有任何可访问的 Qt API 从密钥符号或扫描代码构造 Qt::Keys,或任何非 public API 可以复制而不是依赖外部的 Qt 代码项目?
不幸的是,似乎没有简单的方法在 Qt 键和本机键代码之间进行转换。
您可以使用 Qt 用于 X11 的相同映射。我使用 this table 作为 QxtGlobalShortcut 库。
原文table来自qxcbkeyboard.cpp。源文件包含一些用于转换本机键代码以在 Qt 中使用的函数。问题是 QXcb*
类 不是 public,并且从 headers 的外观来看,可能会在次要 Qt 版本之间中断(因此不建议直接使用)。
我有一个接收扫描码的低级按键记录器,没有 QKeyEvent,因为 QApplication 没有焦点。可以使用系统特定的库调用将扫描代码转换为密钥符号。
扫描码对应Qt的QKeyEvent->nativeScanCode(),按键符号对应QKeyEvent->nativeVirtualKey(),但Qt的Qt::Key值似乎是独立映射的。我想获取给定的 Qt::Key 并转换为符号键或扫描码,或者从符号键或扫描码构造 Qt::Key ,以便我可以将捕获的键与预-确定Qt::Key的。
我见过其他项目通过实施大型、不完整的查找来做到这一点 table ref1 ref2。当然,如果 Qt 正在收集扫描代码并从中构建 QtKey,那么它一定有一些内部映射吗?我想要一些方法来避免重复它。是否有任何可访问的 Qt API 从密钥符号或扫描代码构造 Qt::Keys,或任何非 public API 可以复制而不是依赖外部的 Qt 代码项目?
不幸的是,似乎没有简单的方法在 Qt 键和本机键代码之间进行转换。
您可以使用 Qt 用于 X11 的相同映射。我使用 this table 作为 QxtGlobalShortcut 库。
原文table来自qxcbkeyboard.cpp。源文件包含一些用于转换本机键代码以在 Qt 中使用的函数。问题是 QXcb*
类 不是 public,并且从 headers 的外观来看,可能会在次要 Qt 版本之间中断(因此不建议直接使用)。