将Caps Lock转换成Esc(windows and linux)

1. linux 下将Caps Lock 转换成Esc

作为一个vimer,Caps Lock对我(还有其他很多人)来说根本就是多余的,而且在键盘中的位置根本不合理,一不小心就按到了Caps Lock,然后就出错了。Esc又是vim下使用最为频繁的按键,将Caps Lock替换成Esc真是再好不过了,而且不用担心按ESC的时候按到了该死的F1。

可能有人会问,这样对于连续的大写不是就不方便了吗?我们可以先用小写,然后选中该段文中,按U,就变成大写了。对于在vim中的大写,这里还有一个小技巧推荐给大家:

inoremap <C-u><esc>gUiwea  

将上面这条语句是放在.vimrc文件里的,它的作用就是在编辑状态下,按ctrl+u,将你刚刚输入的那个单词变成大写。谁用谁知道。对一个用vim 作为主要编辑器的人,有了上面两条技巧以后, Caps Lock 就是多余的了。

在linux将Caps Lock转换成Esc非常简单,只要在.profile文件加入下面这条语句即可。

xmodmap -e 'clear Lock'-e 'keycode 0x42 = Escape'

当你不需要的时候,只要将这条语句删除,重启即可。

2. windows下将Caps Lock 转换成Esc

在linux下把Caps Lock当Esc习惯以后,到windows下自然也希望将Caps Lock转换成Esc,如果用搜索引擎搜"windows Esc Caps lock",很轻松的就找到了下面的答案:

  1. 新建文本文档,重命名为capslock2esc.reg
  2. 输入如下内容

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,01,00,01,00,3a,00,00,00,00,00
  3. 然后保存,并且双击写入注册表,重新登录计算机

这个答案有个问题就是交换了Caps Lock与Esc ,当我向我们组的同事请教问题的时候,他需要在我的电脑上操作,按Esc确是Caps Lock 显然让他很不习惯,所以,我又搜了一下,如何将Caps Lock转换成Esc ,而不是交换它们。我找到了这篇文章,讲得不错,可惜有错误。

为了完整,把这篇文章转过来了,并修正了错误。方法还是和上面的一样,不过多了解析。

下面分析"Scancode Map"后面一长串数字, 为方便分析,拆分为每8位一行,并加上行号,结果如下:

1.00,00,00,00,2.00,00,00,00,3.03,00,00,00,4.3a,00,01,00,5.01,00,3a,00,6.00,00,00,00

头两行和最后一行,是固定的,都是8个0。
第3行,表示共更改了多少个按键,本例为3个,怎么算的?从第4行开始,到最末尾行(虽然严格来说末行不算),每行算1个,4、5、6行,刚好3个
第4行,前后各4位,分别代表某个按键。本例为将0100的按键映射为3a00。3a00代表CapsLock键,0100代表Esc键
第5行,同理,3a00的按键映射为0100,即映CapsLock射为Esc
第6行,已经讲了,末行,固定8个0。如果需要增加更多的映射,可以在此行之上,不断加类似4、5行格式的。当然,最后的结果,还是要将各行合为一行的。
每行的4个数字,两个数字一组,代表一个按键,在映射时,他们的关系类似与c语言的char *strcpy(char *strDest, const char *strSource)函数,把后面一组的意义赋给前一组。

综上所述,将Caps Lock映射成Esc,而不是交换Esc与Caps Lock的代码如下:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00

叫上面代码保存到capslock2esc.reg 文件中,双击运行,重启电脑即可。

还原按键时,只需要在注册表的路径([HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout])下,删除Scancode Map键即可。

附录

部分按键映射对照表。

Escape0100Tab0F00CapsLock3A00LeftAlt3800LeftCtrl1D00LeftShift2A00LeftWindows5B    E0
RightAlt38 E0
RightCtrl1D E0
RightShift3600RightWindows5C E0
Backspace0E00Delete53 E0
Enter1C00Space3900Insert52 E0
HOME 47 E0
End4F E0
NumLock4500PageDown51 E0
PageUp49 E0
ScrollLock4600

还有一个特殊的值 —— 00 00,表示啥也不干,如果要将某个按键禁用,只需映射为00 00。

Capslock and Esc的更多相关文章

  1. win7将 esc与 capslock 互换

    一天手软,于是买了一个机械键盘.cherry g80-3494 红轴各方面都不错就是有一个问题我经常用vim,其中esc.及F键区离主键盘区实在是太远了. 习惯于vim模式的人都有一种懒症,就是手指非 ...

  2. 让你的Capslock键变废为宝

    Capslock 键的劣性 如果你是 Windows 系统用户,就会发现,很多时候我们是用不到 Capslock 键的.Capslock 键是切换大小写的锁定,而在平常工作中,只要摁住 Shift 键 ...

  3. CapsLock Enhancement via AutoHotKey

    上次写了一篇博文,讲如何通过AutoHotKey改造CaspLock,使其成为一个方便的编辑按键,并特意给出了设计的思路方便参考. 见地址:http://www.cnblogs.com/Vonng/p ...

  4. CapsLock魔改大法——变废为宝实现高效编辑

    前言 CapsLock,也就是键盘左边中间那个大写锁定.平时很少会用到,跟shift功能重复不谈,更多的时候还会带来各种额外的麻烦. 一直以来的都是一个非常碍事讨厌的存在.就是这么一个垃圾键,偏偏却占 ...

  5. javascript高级程序设计---Event对象二

    鼠标事件 事件种类 鼠标事件指与鼠标相关的事件,主要有以下一些. (1)click事件 click事件当用户在Element节点.document节点.window对象上,单击鼠标(或者按下回车键)时 ...

  6. 我的Emacs折腾经验谈(一) 一些给新人的建议

    这几天都没有动力写mongodb的东西,我果然还是太懒了么~ 主要是没有一个系统的东西整理出来,加上我令人拙计的语言表达能力,这个坑只能慢慢再补了. 最近在折腾emacs这个东西,首先说我曾经算是个极 ...

  7. Emacs折腾经验谈

    Emacs折腾经验谈 这几天都没有动力写mongodb的东西,我果然还是太懒了么~ 主要是没有一个系统的东西整理出来,加上我令人拙计的语言表达能力,这个坑只能慢慢再补了. 最近在折腾emacs这个东西 ...

  8. Ubuntu 12.04 修改键盘映射

    背景: (1) 我的笔记本G450上,Page_up/Page_down键分别和Home/End在同一个键位上,需要同时按住Fn键才能敲出Home/End (2) 习惯用Vim的同志都有这个感觉,Es ...

  9. (94)Wangdao.com_第二十七天_键盘事件

    键盘事件 键盘事件由用户击打键盘触发 主要有 keydown.keyup .keypress三个事件,它们都继承了 KeyboardEvent 接口. keydown         按下键时 触发 ...

随机推荐

  1. 分布式服务框架 Zookeeper(二)官方介绍

    ZooKeeper:为分布式应用而生的分布式协调服务 ZooKeeper是一个为分布式应用而设计的分布式的.开源的协调服务.它提供了一套简单的原语,分布式应用利用这套原语可以实现更高层的服务,比如一致 ...

  2. 模式识别 - libsvm的函数调用方法 具体解释

    libsvm的函数调用方法 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26261173 须要载入(load)SVM的 ...

  3. .net版本和操作系统

    转自: http://msdn.microsoft.com/zh-cn/library/bb822049(v=vs.110).aspx 服务器操作系统 包括 还可以安装 Windows Server ...

  4. sql limit offset 区别

    select * from table limit 2,1;                  //含义是跳过2条取1条数据,即读取第3条数据 select * from table limit 2 ...

  5. 安装IPFS并通过自己的域名访问

    下载go-ipfs_v0.4.18_linux-amd64.tar.gz,我这个是linux,如果没有可以在这里下载: http://www.froms.top:8282/ipfs/QmZs9HdSS ...

  6. 第二百零三节,jQuery EasyUI,Window(窗口)组件

    jQuery EasyUI,Window(窗口)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Window(窗口)组件的使用方法,这个组件 ...

  7. CentOS下使用MyTop实时监控MySQL

    CentOS下使用MyTop实时监控MySQL MyTop的项目页面为:http://jeremy.zawodny.com/mysql/mytop/ MyTop安装 $ yum -y install ...

  8. WPF的本质:数据和行为

    如果自己来做一个UI框架,我们会首先关注哪些方面?我想UI框架主要处理的一定包括两个主要层次的内容,一个是数据展现,另一个就是数据操作,所以UI框架必须能够接收各种不同的数据并通过UI界面展现出来,然 ...

  9. 转载:给bash的提示符设置不同的颜色 一个很常用的功能,效果如下:

    原文来自:http://www.cnblogs.com/cyttina/archive/2013/01/08/2850406.html 一个很常用的功能,效果如下: 这样就可以很轻易的将输入的指令和其 ...

  10. Android UI开发第二十九篇——Android中五种常用的menu(菜单)

    Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...