Capslock and Esc
将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",很轻松的就找到了下面的答案:
- 新建文本文档,重命名为capslock2esc.reg
输入如下内容
[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然后保存,并且双击写入注册表,重新登录计算机
这个答案有个问题就是交换了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的更多相关文章
- win7将 esc与 capslock 互换
一天手软,于是买了一个机械键盘.cherry g80-3494 红轴各方面都不错就是有一个问题我经常用vim,其中esc.及F键区离主键盘区实在是太远了. 习惯于vim模式的人都有一种懒症,就是手指非 ...
- 让你的Capslock键变废为宝
Capslock 键的劣性 如果你是 Windows 系统用户,就会发现,很多时候我们是用不到 Capslock 键的.Capslock 键是切换大小写的锁定,而在平常工作中,只要摁住 Shift 键 ...
- CapsLock Enhancement via AutoHotKey
上次写了一篇博文,讲如何通过AutoHotKey改造CaspLock,使其成为一个方便的编辑按键,并特意给出了设计的思路方便参考. 见地址:http://www.cnblogs.com/Vonng/p ...
- CapsLock魔改大法——变废为宝实现高效编辑
前言 CapsLock,也就是键盘左边中间那个大写锁定.平时很少会用到,跟shift功能重复不谈,更多的时候还会带来各种额外的麻烦. 一直以来的都是一个非常碍事讨厌的存在.就是这么一个垃圾键,偏偏却占 ...
- javascript高级程序设计---Event对象二
鼠标事件 事件种类 鼠标事件指与鼠标相关的事件,主要有以下一些. (1)click事件 click事件当用户在Element节点.document节点.window对象上,单击鼠标(或者按下回车键)时 ...
- 我的Emacs折腾经验谈(一) 一些给新人的建议
这几天都没有动力写mongodb的东西,我果然还是太懒了么~ 主要是没有一个系统的东西整理出来,加上我令人拙计的语言表达能力,这个坑只能慢慢再补了. 最近在折腾emacs这个东西,首先说我曾经算是个极 ...
- Emacs折腾经验谈
Emacs折腾经验谈 这几天都没有动力写mongodb的东西,我果然还是太懒了么~ 主要是没有一个系统的东西整理出来,加上我令人拙计的语言表达能力,这个坑只能慢慢再补了. 最近在折腾emacs这个东西 ...
- Ubuntu 12.04 修改键盘映射
背景: (1) 我的笔记本G450上,Page_up/Page_down键分别和Home/End在同一个键位上,需要同时按住Fn键才能敲出Home/End (2) 习惯用Vim的同志都有这个感觉,Es ...
- (94)Wangdao.com_第二十七天_键盘事件
键盘事件 键盘事件由用户击打键盘触发 主要有 keydown.keyup .keypress三个事件,它们都继承了 KeyboardEvent 接口. keydown 按下键时 触发 ...
随机推荐
- Xcode7中你一定要知道的炸裂调试神技【转载】
Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS EXC_BAD ...
- Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)
我们知道,如果想要在Yarn上运行MapReduce作业,仅需实现一个ApplicationMaster组件即可,而MRAppMaster正是MapReduce在Yarn上ApplicationMas ...
- python第三周文件处理和函数-----下
#默认参数的值是在一开始定义的时候就传给了函数, # 在后来的修改中不会被修改. #默认参数的值必须放到位置形参参数的最后面 #默认参数使用的场景是一个参数不经常变得场景,所以参数一般是不可变类型.字 ...
- git忽略已经被提交的文件,以及如何恢复追踪
问题描述 之前在提交代码时,.gitignore 没有填写完整,导致idea编辑器的配置文件夹.idea被提交了 然后每次运行本地项目,都会在.idea文件夹下生成一堆文件,这时发现问题,将.idea ...
- VS2005 Manifest 配置问题总结
一.问题 编译某个遗留工程后,运行程序时报错,“由于应用程序的配置不正确,应用程序无法启动.重新安装应用程序可能会解决这个问题.” 查看生成的Manifest文件如下: <?xml versio ...
- ASP.NET动态网站制作(24)-- ADO.NET(3)
前言:ADO.NET的第三节课.今天主要讲SQL Helper. 内容: 1.DataReader和DataSet的区别: (1)DataReader是一行一行地读,且只能向前读:DataSet是一次 ...
- SQL.Cookbook 读书笔记5 元数据查询
第五章 元数据查询 查询数据库本身信息 表结构 索引等 5.1 查询test库下的所有表信息 MYSQL SELECT * from information_schema.`TABLES` WHERE ...
- POJ1182食物链(并查集经典好题)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66964#problem/E 题目思路:主要有两种思路:1.带权并查集2.挑战程 ...
- 《从零开始学Swift》学习笔记(Day 18)——有几个分支语句?
原创文章,欢迎转载.转载请注明:关东升的博客 分支语句又称条件语句,Swift编程语言提供了if.switch和guard三种分支语句. if语句 由if语句引导的选择结构有if结构.if ...
- angularjs 遇见$scope,xxx=function()报错为该函数未定义
本包子今天遇见一个问题,就是明明写了$scope,xx=function()但是报错了,报错显示是该函数未定义,我就很着急的先将函数写成一个全局函数,就没问题,等下午有空的时候寻思了一下,为什么全局就 ...