使用 XCB 获取键盘布局和按键符号

2024-01-09

我正在为 Linux 创建一个集成在简单窗口管理器中的屏幕键盘。我目前正在使用 XCB,现在我想制作假击键。使用 xtest 扩展一切工作正常,除了我无法从我想要放置的键符中获取真实键码的细节之外。

目前我正在使用 xcb_key_symbols_get_keycode,然后我使用 xcb_key_symbols_get_keysym 来了解我需要哪个修饰符来获取该符号。当配置的键盘是美国键盘时,此功能正常。但我有一个西班牙语键盘,这个调用仅返回美国配置。在西班牙语键盘中,可以通过正确的 alt (altgr) 获得多个符号,但以前的调用似乎不支持它。

那么,我怎样才能获得获得任何键符号所需的键码呢?我认为我需要 XKB 扩展,但我一直无法为 XCB 找到它们,而且我不想为 XLib 重写整个窗口管理器。

Thanks.


这可能是一个过时的问题,但我发现它仍然有效。

您可以通过 xcb 启用 xkb 扩展,然后通过 xcb API(或更具体地说,从 xkb 键映射的状态)获取键映射、布局以及该布局的相应键符号。

Links:

  • libxkbcommon 快速入门 https://xkbcommon.org/doc/current/md_doc_quick-guide.html
  • X11支持 https://xkbcommon.org/doc/current/group__x11.html设置 xkb 扩展并获取设备 ID(请参阅前面的链接:在尝试访问任何设备之前,您必须创建扩展)xcb_x11来电)。 (使用设备 ID,您可以调用xkb_x11_keymap_new_from_device返回一个xkb_keymap指针)。
  • xkb_keymap 结构 https://xkbcommon.org/doc/current/structxkb__keymap.html
  • 键盘状态 https://xkbcommon.org/doc/current/group__state.html(更重要的是xkb_state_key_get_sym() https://xkbcommon.org/doc/current/group__state.html#ga47311e7268935dd2fe3e6ef057a82cb0)在这里您可以使用 xkb_state 来获取相应键的 sym。

我必须承认,我实际上并没有完全做到这一点(仅涉及键盘映射/布局/状态)。但这应该足以让您开始。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XCB 获取键盘布局和按键符号 的相关文章

  • 当用户在 Chrome 上按下键盘时,如何检测“删除”和“.”?

    当我按下 它触发了三个事件 keydown keypress and keyup keydown which 190 keyCode 190 keypress which 46 keyCode 46 keyup which 190 keyC
  • 如何检测同一键盘按键仅按下一次

    我正在设计一个键盘类 它只能检测一次键盘按键 但我仍然不知道如何做到这一点 我的目标是仅检查并在持续按下或保持按住同一键时仅执行一次操作 并且当同时按下 2 个操作键时不执行任何操作 例如 当我持续按住 A 键时 操作 1 只会执行一次 然
  • Phonegap:在 Android 中调整键盘显示上的 webview 大小

    我有一个类似的模态 有固定定位 Facebook 在最新的 Android 版本中对 Messenger 中的 feed chat 中的评论有何评论 我想要的看起来类似于 因此 当您专注于输入时 键盘会打开并缩小网络视图 默认情况下它不起作
  • UISearchBar 与 InputView

    我正在为我的应用程序制作自定义键盘 它与 UITextField 配合得很好 但 UISearchBar 不支持 inputView UIView inputView if self keyboard nil self keyboard M
  • 如何为默认的 Android 键盘添加一排额外的按键?

    我一直在摆弄自定义键盘 但无法实现我想要的 我尝试遵循各种教程 比如这个如何实现特殊的软键盘 https stackoverflow com questions 14528178 how can i implement special so
  • iOS 键盘扩展内存崩溃

    我在使用 iOS 键盘扩展时遇到了内存问题 我有一个键盘视图的自定义视图 我将其初始化为loadViewUIInputViewController的 函数 然后将其添加到自我观作为一个孩子 但我有记忆问题 尤其是在 WhatsApp 应用程
  • Android:当焦点位于 EditText 上时自动显示软键盘

    我正在使用显示一个输入框AlertDialog The EditText当我调用时 对话框本身会自动聚焦AlertDialog show 但软键盘不会自动显示 如何让软键盘在对话框显示时自动显示 并且没有物理 硬件键盘 类似于当我按下 搜索
  • 如何在循环期间的任意时刻检查按键按下情况?

    我正在尝试制作一个倒数到 0 然后开始向上计数的计时器 我正在使用时间和键盘模块 这keyboard https pypi org project keyboard来自 PyPi 的模块 一切都按预期进行 我可以按一个按钮关闭程序 但它只在
  • 从另一个 Activity 返回时 SearchView 获得焦点并打开键盘

    当我从另一个活动返回主活动时 searchView 获得焦点并且键盘打开 我设法使用以下方法阻止键盘打开 getWindow setSoftInputMode WindowManager LayoutParams SOFT INPUT ST
  • 按下某个键时仅增加 1

    我想在按下 s 键时将变量 shot pressed 增加一 无论我按下多长时间 但结果是变量不断增大 我按下的时间越长 变量的值就越大 下面是我的代码的一部分 import keyboard shot pressed 0 if keybo
  • 如何编写本地化的屏幕键盘

    我必须为我们公司的程序编写一个屏幕键盘 该程序主要用于具有触摸功能的工业PC 我们不能使用windows默认键盘 因为我们不需要键盘上的所有按键 所以我被要求用 C 编写一个自定义的 我已经找到了这个博客 http www siao2 co
  • 如果没有 sudo,则无法在 Qt 应用程序中使用键盘

    我有一个在 BeagleBone Black 上运行的交叉编译的嵌入式 Qt 应用程序 它工作正常 但有一件事 如果我不直接在 BeagleBone Black 上运行 它不接受键盘输入sudo 这是一个问题 因为 我无法远程调试应用程序并
  • 是否可以在越狱的ios上使用外部键盘模拟触摸事件?

    是否可以在 iOS 越狱以及越狱涉及的所有元素上模拟特定屏幕坐标中的触摸事件 按下物理外部键盘 通过相机连接套件或蓝牙的 USB 上的特定按键 我会用它来用脚按下应用程序 振幅 中的按钮 我想使用键盘作为脚踏开关 仅供私人使用 没有应用商店
  • 从 XGrabKeyboard 中排除一些键

    考虑一个应用程序 需要在聚焦时抓住键盘 以便捕获所有窗口管理器命令 Alt F4 等 进行处理 现在 这有一个缺点 即当键盘被抓住时 用户无法通过键盘切换到另一个应用程序或虚拟桌面 我想要一个用户定义的组合键白名单 例如 用于切换虚拟桌面的
  • WPF 将“菜单”键称为什么?

    我正在查看此处定义的键 http msdn microsoft com en us library system windows input key aspx http msdn microsoft com en us library sy
  • 如何检测 OS X 上是否按下了某个键?

    我正在为 OSX 编写 Spritekit 游戏 如何检查当前是否按下某个键 考虑这个例子 some code this could be e g inside a game loop if is key w pressed move fo
  • 如何在IOS中自定义键盘[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在我的应用程序中为 IOS 创建
  • 如何确定某个键是否被按下,只知道它在美国键盘上的位置?

    考虑一下 对于 Windows 视频游戏 我需要确定在美式英语键盘布局上生成 和 字符的键 通常位于 Escape 键下方并保留为 1 是否已被按下 这听起来似乎是一个微不足道的问题 但对我来说似乎不是一个问题 当Windows发送键盘消息
  • UITextInputMode currentInputMode 已弃用。建议更换?

    在我们的应用程序中 我们想检测当前的键盘语言 例如 如果用户在 设置 gt 常规 gt 键盘 gt 键盘 下设置了多种语言键盘 我们想知道他们正在输入什么语言 并在发生变化时从 NSNotificationCenter 收到通知 void
  • Android KeyBoard.Key 禁用图标 预览特殊键?

    我通过实现 KeyboardView OnKeyboardActionListener 接口来自定义自己的软键盘 按下按键时 将显示预览弹出窗口 我的问题是如何禁用 SHIFT 和 DELETE 等特殊键的预览弹出窗口 我尝试将 andro

随机推荐