如何根据每个键盘指定大写锁定和控制键映射?

如何根据每个键盘指定大写锁定和控制键映射?

我有一个外接键盘,我在家里的 Ubuntu 17.10 台式机和笔记本电脑上使用,在工作时在我的 RHEL 6.8 机器上使用同类型的键盘。但在我的 Ubuntu 17.10 笔记本电脑上,我大部分时间都使用内置键盘,但其他时候我需要将前面提到的外接键盘连接到它。因此,我需要 Capslock 和 Control 键的行为对内置键盘和外接键盘都具有相同的作用。

这款外接键盘具有其定制的固件,其中包括交换左侧大写锁定键和左侧控制键。

我正在寻找的行为是这样的:

  1. 拔下外接键盘后,请交换大写锁定键和控制键,因为内置键盘正在使用中。
  2. 当我连接外接键盘时,我想停止交换大写锁定键和控制键,因为键盘已经这样做了。
  3. 我希望在以下所有条件下实现这种行为:
    1. 当我在 Ubuntu 17.10 下使用 Gnome 登录时
    2. 当我在 RHEL 6.8 下使用 Gnome 登录时
    3. 当我使用非 X 终端(控制台)时。
  4. 我希望通过可以从我自己的主目录控制的脚本完成所有这些操作,而不必在 root 用户下安装特殊软件包,因为我需要它在 RHEL 和 Ubuntu 下都能工作(就软件包安装和配置而言,我可以控制后者,但不能控制前者)。

我现在拥有的大部分功能都已运行:我有一个从启动应用程序运行的脚本,它可以检测键盘并运行xmodmap。但这是一种黑客行为,因为 Gnome 或 Xlib 或 Xorg 或其他程序中的某些程序也在摆弄键盘的大写锁定和控制键行为,因此我必须sleep 5在调用之前拥有权限,xmodmap以便 Gnome/whatever 有时间完成其“摆弄”,以便我的调用xmodmap“获胜”。这也是一种黑客行为,因为它不处理拔出和插入键盘。它应该只根据连接的键盘类型来执行此操作,而不是根据登录或退出、锁定或解锁,或者仅在 Linux 启动时执行此操作。此外,我必须进行一些设置来检测桌面的锁定和解锁,然后 Gnome/whatever 会在解锁后再次尝试重置键盘。

这可能吗?

答案1

我曾尝试解决另一个问题,但我认为它可能对你有好处。文章如下: https://github.com/bjohas/Ubuntu-keyboard-map-like-OS-X

我的具体建议是使用 xkb 而不是 xmodmap。xmodmap 似乎是较旧的技术,而且速度很慢。我使用 xkb 取得了更大的成功。有重新映射修饰符的示例。(虽然 xkb 更快,也许更可靠,但不幸的是,它不是真正可由用户配置的。因此,我将配置保留在手边,以便在升级后恢复它。)

希望这可以帮助!

相关内容