将 CapsLock+hjkl 绑定到方向键

将 CapsLock+hjkl 绑定到方向键

我想将Caps Lock+ H /  J /  K / 绑定L到箭头键。我发现两种方法各有一些问题:

解决方案1

使用xkb:编辑/usr/share/X11/xkb/symbols/us第一个块。

            # replace Caps with AltGr
            key <CAPS> { [ ISO_Level3_Shift            ] };
            # Add vim cursor keys to be accessed with AltGr
            key <AB02> { [ x, X, Delete, Delete        ] };
            key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
            key <AC03> { [ d, D, Next, Next            ] };
            key <AC04> { [ f, F, BackSpace, BackSpace  ] };
            key <AC06> { [ h, H , Left, Left           ] };
            key <AC07> { [ j, J, Down, Down            ] };
            key <AC08> { [ k, K, Up, Up                ] };
            key <AC09> { [ l, L, Right, Right          ] };
            key <AD07> { [ u, U, Prior, Prior          ] };
            key <AE03> { [ 3, section, Home, Home      ] };
            key <AE04> { [ 4, dollar, End, End         ] };

但这个答案在Java程序(例如IntelliJ)中不起作用,所以我应该使用解决方案2。

解决方案2

使用xmodmap:创建~/.xmodmap包含以下内容的文件:

keycode 66 = Mode_switch
keysym h = h H Left
keysym l = l L Right
keysym k = k K Up
keysym j = j J Down
keysym u = u U Prior
keysym i = i I Home
keysym o = o O End
keysym p = p P Next

然后运行xmodmap ~/.xmodmap命令。

问题:该解决方案打破了其他布局。它可以用英语工作,但是当我切换其他布局(例如切换为俄语)时,我无法在这些键上键入字母,并且Caps+ H /  J /  K / L也不起作用,直到我切换回英语。我怎么解决这个问题?

答案1

在Linux上,我强烈推荐密钥
示例配置 会达到比你想要的更多(但如果需要,你可以手动修剪它)

# Goal:
#
# To create a vi like navigation layer accessible by pressing H J K L while having capslock pressed
# otherwise behave like the control key (when held) and escape when tapped.
#
# In essence we want:
#
#  - capslock+h = left
#  - capslock+j = down
#  - capslock+k = up
#  - capslock+l = right
#
#  - capslock+shift+h = C-left
#  - capslock+shift+l = C-right
#  - capslock+shift+j = C-down
#  - capslock+shift+k = C-up
#
#  - capslock = escape (when tapped)
#
# In all other instances capslock should behave as normal control:
#
#  - capslock+a = C-a
#  - capslock+b = C-b
#  - capslock+c = C-c
#  ...
#  - capslock+shift+i = C-S-i
#  - capslock+shift+k = C-S-k
#  ....

克莫纳德将是一个替代方案

答案2

请参阅此处的示例https://wiki.archlinux.org/index.php/X_keyboard_extension#Caps_hjkl_as_vimlike_arrow_keys

它应该可以在所有应用程序中完美运行。

我将尝试详细阐述这个答案,并稍后提交更完整的示例。

相关内容