将键盘箭头映射到快捷键

将键盘箭头映射到快捷键

我用十个手指打字,所以我在插入模式下使用Vim 中的Alt+ H( J, K, L) 快捷键来移动光标,这非常酷 :) 我想重新映射 X 中的箭头键(Gnome)在所有 X 应用程序中使用这些快捷方式

所以如果我按下Alt+K它应该可以作为向上箭头。

为了自我折磨 :) 你可以在 .gvimrc 中添加以下几行

inoremap <Left>  <NOP>
inoremap <Right> <NOP>
inoremap <Up>    <NOP>
inoremap <Down>  <NOP>
inoremap <A-h> <Left>
inoremap <A-j> <Down>
inoremap <A-k> <Up>
inoremap <A-l> <Right>

答案1

不完全是你想要的,但差不多……

您可以使用该命令重新映射 X 键盘设置xmodmap。您可以通过运行来查看当前设置xmodmap -pke

每个键码(与键盘上每个键关联的值)最多可以附加 8 个键符(本质上是输出)。它们如下:

  1. 单独按下时
  2. 与 Shift 键同时按下时
  3. 模式开关启用时按下(似乎已过时)
  4. 当按下模式开关和移位键时(似乎已过时)
  5. 当按下 Alt-Gr 时(在 xmodmap 术语中又称为 ISO_Level3_Shift)
  6. 与 Alt-Gr 和 Shift 键同时按下时

所以目前我的“h”键看起来像:

h H h H h行程 H行程

其中 Hstroke 键符号产生 Ħ。

除非您使用 Alt-Gr 输入非 ASCII 字符,否则您可以使用 Alt-Gr 重新映射 h、j、k 和 l 来执行您想要的操作。这将是:

xmodmap -e 'keycode 43 = h H h H Left Hstroke'
xmodmap -e 'keycode 44 = j J j J Up J'
xmodmap -e 'keycode 45 = k K k K Down ampersand'
xmodmap -e 'keycode 46 = l L l L Right Lstroke'

当然,带 Shift 项的 Alt-Gr 并不是必需的,我只是保留了已经存在的值。您可以通过xev从终端运行命令来查找键码值。xev显示 X 事件,这样您就可以按下一个键并找到有关它的信息。

要使此设置永久生效,你可以在主目录中的 .Xmodmap 中添加以下内容

keycode 43 = h H h H Left Hstroke
keycode 44 = j J j J Up J
keycode 45 = k K k K Down ampersand
keycode 46 = l L l L Right Lstroke

使用 hjkl 时按 Alt-Gr 肯定不如按 Alt 好,但我认为您可能很难让 Alt 正常工作,因为它用于菜单访问。您可以使用此答案中的信息以及 Fraekkert 提到的工具来绑定例如 Alt-Shift-h,这可能更适合您。

可能还值得一提的是,您可以使用 在 bash(或您使用的任何 shell)中设置 vi 模式set -o vi。这会在编辑命令行和历史记录时为您提供类似 vi 的行为。不过,我不认为这会查看您的 .vimrc,因此不要指望您的键重新映射会起作用。

答案2

我将结合使用键盘快捷键偏好设置窗格和 xvkbd。

xvkbd 允许您通过命令行发送键盘事件,而键盘快捷键允许您将命令行绑定到键盘事件。

相关内容