Win 通过修改注册表把CapsLock映射为Rshift
成品:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,36,00,3a,00,00,00,00,00
<<CapsLockToRShift.reg>>
解释,参考文档:
|
将Caps Lock转换成Esc(windows and linux)
HOMEABOUTPUBLICATIONGUESTBOOKVITAECATEGORIESTAGSLINKSSUBSCRIBE
##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键即可。
###附录
部分按键映射对照表。
Escape 01 00
Tab 0F 00
Caps Lock 3A 00
Left Alt 38 00
Left Ctrl 1D 00
Left Shift 2A 00
Left Windows 5B E0
Right Alt 38 E0
Right Ctrl 1D E0
Right Shift 36 00
Right Windows 5C E0
Backspace 0E 00
Delete 53 E0
Enter 1C 00
Space 39 00
Insert 52 E0
HOME 47 E0
End 4F E0
Num
Lock 45 00
Page
Down 51 E0
Page
Up 49 E0
Scroll Lock 46 00还有一个特殊的值 —— 00 00,表示啥也不干,如果要将某个按键禁用,只需映射为00 00。
赖明星 / 2013-05-20
Published under (CC) BY-NC-SA in categories 工具 tagged with vim esc
来自 <http://mingxinglai.com/cn/2013/05/change-capslock-to-esc/>
Win 通过修改注册表把CapsLock映射为Rshift的更多相关文章
- 通过修改注册表将右alt键映射为application键
通过修改注册表将右alt键映射为application键的方法有许多键盘没有APPLICATION(上下文菜单)键,本文将教您如何把右ALT键映射为apps键.1.映射请将以下注册表信息用记事本保存为 ...
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- Win10 远程桌面连接出现“要求的函数不受支持”的解决办法之修改注册表
问题起因 笔者自己在阿里云上搞服务器,有一台 Windows Server 必须通过远程桌面连接来管理,由于没能完全关掉 Win10 自带的烦人的系统更新,导致昨天安装完更新后出现了连接远程桌面时“要 ...
- 通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- 修改注册表修改环境变量PATH
因公司办公电脑做了权限设置,不能通过右击“我的电脑”-属性的方式更改环境变量值 摸索找到了通过修改注册表的方式修改PATH值 Win+R 输入regedit打开册表编辑器 HKEY_LOCAL_M ...
- 修改注册表 去除Windows快捷方式图标小箭头
一些朋友不喜欢Windows系统中快捷方式图标上面的小箭头,下面介绍如何修改注册表去除快捷方式图标上的小箭头. 1.开始->运行->输入regedit,启动注册表编辑器,然后; 2.依次展 ...
- windows文件关联、打开方式列表之修改注册表攻略
这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...
- 通过cmd修改注册表并设置cmd窗口的大小
设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...
随机推荐
- DLL 生成与使用的全过程(2010-01-18 14:50:17)
转载自 水滴的博客http://blog.sina.com.cn/spiritofwater 个人学习用 转载▼ 分类: 技术 由dll导出的lib文件: 包含了每一个dll导出函数的符号名和 ...
- WPF获取应用程序启动目录的方法
1.AppDomain.CurrentDomain.BaseDirectory using System; namespace ConsoleApplication1 { class Program ...
- linux git实现代理
说明 Git 目前支持的三种协议 git://.ssh:// 和 http://,使用git:// 和 http://比较多,ssh://忽略,FQ后可以直接加快同步google和github代码. ...
- SQL Server子查询实例
例子一 SELECT COUNT(*) FROM ( SELECT [PersonID] FROM [tbiz_AssScore] GROUP BY PersonID ) M 语法说明: 1).FRO ...
- 原生js封装ajax:传json,str,excel文件上传表单提交
由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...
- Photoshop学习笔记
视频地址:PhotoshopCS5视频教程 1.打开文件的快捷方式:软件刚启动时,双击绘图区域 2.文件->新建,弹出的新建对话框中,包含了剪切板及纸张的相关信息 3.图像缩放快捷方式:ctrl ...
- View手动切换焦点注意事项
这几天一直在解决一个焦点切换的问题,由于是直接用另外一家公司的代码,没有细看.当应用到测试那边,发现了这个问题,而且真机调试有些问题,不能单步调试,后来是看日志才发现这个问题. ViewA包含几个可以 ...
- ios Carthage
使用CocoaPods来管理第三方框架很多人都知道,相对来说Carthage比较陌生,Carthage也是来管理第三方框架的,既然已经有了Cocoapods为什么还要有Carthage呢?使用Cart ...
- A页面调到B页面,B页面关闭时A页面刷新
// A.html <html> <head> <script type="text/javascript"> alert("refr ...
- October 25th Week 44th Tuesday 2016
The best preparation for tomorrow is doing your best today. 过好今天,就是对明天最好的准备. Tomorrow is always base ...