我如何将 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
(本质上是更多相同的东西,没有真正的新的在这一领域的能力)。