如何像 vim 中那样重新映射字符但在整个操作系统中?

如何像 vim 中那样重新映射字符但在整个操作系统中?

在我的vim移动中hjkl,我使用Alt Gr+( wasd) (就像在游戏中一样,但使用 启用它Alt Gr),我喜欢它,请不要试图说服我这是个坏主意,事实并非如此。

事实上,据我所知,无法映射Alt Grin ,我所做的就是映射当您按+( ): łæßðvim时发生的类似希腊字符。Alt Grwas

所以,我觉得这种替换箭头的方式对我的手指来说非常舒服,我真的很喜欢能够在任何地方使用它,不仅在vim,我一直在阅读如何在 Linux 中重新映射按键(我使用 Manjaro),但是看起来你只能将一个键代码映射到另一个键代码,而我想做的是将字符(łæßð)映射到箭头的键代码。

有人知道该怎么做吗?

从我的.vimrc

"movement with a,d,w,s
noremap æ <left>
noremap ð <right>
noremap ß <down>
noremap ł <up>
inoremap æ <left>
inoremap ð <right>
inoremap ß <down>
inoremap ł <up>

发行版:Manjaro(内核:5.6.12-1-MANJARO)
桌面环境:KDE Plasma

答案1

简短回答

xmodmap -e 'keycode 38 = a A a A Left'
xmodmap -e 'keycode 40 = d D d D Right'
xmodmap -e 'keycode 25 = w W w W Up'
xmodmap -e 'keycode 39 = s S s S Down'

在任何图形环境启动脚本中编写这些行。


详细解答

人们可以使用以下命令重新映射键盘事件xmodmap命令。例如,如果要将Altr Gr+重新映射 a 到左箭头,请使用以下命令:

xmodmap -e 'keycode 38 = a A a A Left'

您可以使用以下命令查找特定键的键码xev:按下某个键时,终端将输出包含键码的信息。您可以使用以下命令建筑维基百科仅输出相关信息:

xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'

等信号右边的五个参数对应修饰符:

                               ---> Caps Lock + a = A
                               |
                           ------> Shift + a = A
                           |   |
xmodmap -e 'keycode 38 = a A a A Left' --> Alt. Gr + a = Left 
                         |   |
                         -----> a = a
                             |
                             ----> Ctrl. + a = a

为了在 KDE 启动时运行这些行,您可以在~/.config/autostart/文件夹中添加一个桌面条目。您需要两个文件:一个包含xmodmap设置,另一个用于启动桌面条目。让我们将映射设置写入~/.config/xmodmap/xmodmaprc

keycode 38 = a A a A Left
keycode 40 = d D d D Right
keycode 25 = w W w W Up
keycode 39 = s S s S Down

这是桌面条目文件的示例~/.config/autostart/xmodmap.desktop

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.config/xmodmap/xmodmaprc
Exec=/usr/bin/xmodmap ~/.config/xmodmap/xmodmaprc
Icon=application-default-icon
X-KDE-Autostart-enabled=true
Type=Application

我的系统上没有运行任何桌面环境来尝试此操作,但它应该可以工作。


笔记

  1. xmodmap方法仅适用于图形环境。此映射在 Linux 控制台 ( ) 上不起作用tty。看在 Linux 控制台上重新映射键盘
  2. 请记住,每次布局更改时键盘都会重置。仅建议对单一布局配置使用此方法。
  3. 如果您做错了什么,xmodmap您可以使用 删除所有设置setxkbmap -option

答案2

您可以使用 xmodmap 或 xkbcomp。互联网上有很多如何使其工作的示例。对不起,但我认为复制/粘贴方法没有任何意义。

相关内容