如何在X11中显示所有修饰键的状态?

如何在X11中显示所有修饰键的状态?

我通过 NX 客户端 (Remmina) 从本地机器 (Ubuntu 12.04) 到远程 Linux 机器 (CentOS 5.3) 进行远程连接,没有 root 权限,并且它仅具有严格限制的互联网访问权限。

通常,我在一台显示器上全屏显示远程桌面,在另一台显示器上全屏显示本地桌面。然后我遇到这样的问题,有时,如果我切换到本地桌面然后切换回远程,远程将表现得好像我的ShiftControlAlt(甚至可能是mod4)键被按下一样,例如显示右键单击菜单当我简单地在桌面上单击鼠标左键时,或者当我尝试滚动时跳得太多。这可能会变成真的如果我必须在几分钟内来回切换几次,这很烦人。

那么有没有一种方法可以像在一个微小的浮动窗口中一样始终显示所有修饰键的状态?我不确定我是否在任何地方见过这种应用程序,也许键盘概览图就可以,但它会占用太多空间。

我正在尝试自己深入研究 X11 编程,但我想知道是否已经有一些东西了。

答案1

嗯,有一些辅助工具可以做到这一点。当粘滞键功能处于活动状态或鼠标停留时通常需要。

与它们相关的不便在于它们依靠桌面环境和基于它的 GUI 来显示指示器。

  • xkbwatch使用纯 Xlib,在任何运行 Xorg 的 DE 上工作
  • plasma-widget-kbstate使用 KDE 核心,但可以在任何 DE 上使用plasma-windowed
  • xkbmod-indicatorUbuntu/Unity,加上使用代理的 Gnome-shell,例如appindicator-support

用于拉取状态的主要函数是XkbGetState.如果你想为此编写一个小工具。这是一个旧示例,因此您不必从头开始:

参考:https://askubuntu.com/q/402315/26246

注意:我在这里写了链接参考的一些部分,只是我对可访问性的主题感兴趣。我还编写了一个 gnome-shell 扩展,Keyboard Modifiers Status(支持 xorg 和 wayland),但它依赖于 Gnome 技术,例如 GDK 或 Clutter。

相关内容