我使用的工具:

我使用的工具:

我如何将 Control_L + Space 映射到 Return?

最好使用 xmodmap 来完成。

我确实尝试寻找一些答案,但没有成功。

我当前的解决方案是:~/.Xmodmap keycode 65 = space Return space keycode 37 = Control_L Mode_switch Control_L

〜/ .vimrc: inoremap <C-@> <CR> cnoremap <C-@> <CR> nnoremap <C-@> <CR>

有没有什么解决方案可以将 ctrl+space 改为对整个系统起到返回键(又名“Enter”键)的作用?

答案1

我做了更多研究,尝试了几种不同的解决方案,最终确定了一种不会导致任何延迟或不一致的解决方案。下面的解决方案不仅适用于终端,也适用于其他应用程序。


我使用的工具:

工具绑定键

(1)安装工具绑定键

$ sudo apt-get update
$ sudo apt-get install xdotool
$ sudo apt-get install xbindkeys

(2)创建 xbindkey 配置文件:

$ xbindkeys -d > ~/.xbindkeysrc

(3)在 xbindkeysrc 中重新映射 Ctrl-Space

"xset r off; xdotool keyup --window 0 space key --clearmodifiers --window 0 KP_Enter; xset r on"
   m:0x14 + c:65
   Control+Mod2 + space

(4)终止当前的 xbindkeys

我不确定为什么这是必要的,但简单地使用源 xbindkeysrc 不会替换当前配置。因此,你必须杀死 xbindkeys

$ killall xbindkeys
$ xbindkeys -f ~/.xbindkeysrc

可以了,好了。

奖金

将 ctrl+~ 映射到 /

"xset r off; xdotool keyup --window 0 grave key --clearmodifiers --window 0 slash; xset r on"
   m:0x14 + c:49
   Control+Mod2 + grave

干杯!

答案2

xmodmap不会带你达到目标。最接近的是这样一段话(重新格式化以显示要点):

keycode 数字 = 键符号名称...
列表键盘符号被分配给指示关键代码(可以用十进制、十六进制或八进制指定,可以通过运行程序)。一个键最多可以附加八个键符,但是最后四个键符在任何主要的 X 服务器实现中均未使用。

  • 首先键符当没有同时按下修饰键和此键时使用,
  • 第二个是Shift
  • 第三个,当该Mode_switch密钥与此密钥一起使用时,
  • 第四种情况是同时使用Mode_switch和键。Shift

也就是说,您可以使用 xmodmap 将某个现有键与 shift 修饰键关联起来。但是,您希望现有密钥controlspace与你键盘上可能找到的键并不对应,也没有现成的键符相反,您可能controlspace偶尔会使用它来生成 ASCII NUL,但是它很少使用,键盘上没有为此设置的标准键。

但是 -xterm和都urxvt可以单独配置,并且可以使用不同的方法来区分controlshiftspace。 对于xterm,这将是translations资源,而 则urxvt具有keysym.sym资源。

如果你正在使用xmodmap,很可能你正在使用xterm或者rxvt(也许urxvt)。对于其他终端,人们往往会涉足xkb沼泽。但查看文档,它似乎有同样的局限性xmodmap(本质上是更多相同的东西,没有真正的新的在这一领域的能力)。

相关内容