Caps_Lock与右Ctrl互换
实现该功能的目的主要是切换中英文输入法,在使用 ctrl 或者 shift 切换时,很明显这两个键的位置远不如caps按起来方便,且 shift 往往作为大小写功能使用,用来作为切换中英文输入会恨混乱,而 caps 作为大小写时用起来相当罕见,作为中文输入来说更可以说完全是鸡肋的功能。大写完全可以用 shift 代替的用户群中,无疑是占用了一个最好的位置,却几乎完全被遗忘的一个按键。下面将会总结一个既保留 Caps_Lock 键功能,又可以充分利用这个最好位置的按键映射方法。
linux系统下的实现
按键值查询
linux 下可以通过命令小程序对绝大多数按键值进行查找,要想修改键值映射, 先要知道按键的键值. 用如下命令查看: xev | grep keycode
。
同时我们可以查看需要映射的按键的映射名称:
|
|
比如想把键盘的右边的 Alt 改为 Menu : xmodmap -e "keycode 108=Menu"
,简而言之 xmodmap 程序就是用来控制系统按键的,需要详细了解这个软件的操作,可以查看帮助文档。
将Caps_Lock和键盘右边的Ctrl调换
在当前的用户根目录下~创建 .Xmodmap 文件(尤其注意:这边名称是Xmodmap首字母大写,很多教程都忽略了这个问题,往往导致配置出来有问题),书写内容如下:
|
|
这样,caps lock 和 ctrl 就都是 ctrl 的功能。执行下xmodmap ~/.Xmodmap 2>/dev/null
即可立即生效。实际上,每次开机启动后,系统会通过 xmodmap 程序自动加载 .Xmodmap 程序,也就是一次创建更改 .Xmodmap 文件,终身配置有效。
注意:完成上述步骤即可,以下步骤为最初设置时,出现的问题,可以忽略不看。
加入开机自启
同大多数开机自启并没有太大区别,将xmodmap ~/.xmodmap 2>/dev/null
写入到 /etc/rc.local 中即可。该方法经常失效,不是太灵验,因此我设置了快捷键 ctrl+space ,每次按下这个快捷键时,会自动执行xmodmap ~/.xmodmap 2>/dev/null
。
解决:由于上面命名错误, .Xmodmap 文件的首字母是大写,因此加载总是出错,另外使用 xmodmap ~/.Xmodmap 2>/dev/null
命令后,每次无需再加入启动项了,一次配置成功即可。
windows下的更换按键
打开注册表,在运行(win+R)中输入 regedit ,注册表位置:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] (注意: KeyBoard Layout, 而不是 KeyBoard Layouts)如果没有此键,就新建一个二进制值的 Key,名叫: Scancode Map(注意名称不能够写错,错一个字母都没法实现功能)。
|
|
windows 各个键位值的参考:
|
|
以上 windows 的按键更改仅在 windows 7 下实验过,其他系统有待验证。
参考链接:
http://www.cnblogs.com/xiaobaibuhei/p/3629133.html
http://hanjc.me/post/2015-09-14-win7-exchange-capslock-and-ctrl/
http://www.mikewootc.com/wiki/linux/usage/linux_xmodmap_change_keyboard_map.html
http://baohaojun.github.io/blog/2015/01/12/0-How-to-swap-Escape-and-Caps-Lock-on-mainstream-PCs.html
http://www.xiaozhou.net/exchange_ctrl_and_capslock_key-2012-07-20.html
http://xahlee.info/kbd/linux_make_capslock_esc_key.html