Emacs:交换你的Ctrl 和Caps Lock键

2023-10-28 04:32
文章标签 交换 lock emacs ctrl caps

本文主要是介绍Emacs:交换你的Ctrl 和Caps Lock键,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇文章又提到了一个局部更改key的方法,转载如下:


Emacs和VIM之所以这样受程序员的喜爱,是因为两者都有高度的可定制性,以及丰富的快捷键组合。利用这些快捷键组合,让你能够手不离键盘,就能完成大多数的工作。其实,用鼠标操作神马的,效率是极其低下的……

话说Emacs中,用到最多的两个快捷键组合,就是Meta键和Ctrl键。对于我们普通的键盘,Meta键还好,离手很近。不过,对于Ctrl键,就离得比较远了…… 网上有网友推荐的做法,是用手掌去按Ctrl键,不过,这样的方法,对于普通键盘还不错,但是对于笔记本来说,也不太实用。

正规的Unix键盘的键位布局,Ctrl键应该是在现在标准键盘的Caps Lock位置的。这样,按起Ctrl键,就方便多了。

那要怎么交换这两个键的键位呢?重新买一个键盘? No!! 其实,也不用换键盘,我们完全可以用软件的方式来实现两个键位的交换。

下面是我从网上整理来的方法:

Win7下交换键位的设置

其实Win7下面,方法还比较多,一种是直接修改注册表,实现全局的替换,另外一种,是让两个键的交换,只在Emacs窗口激活的时候生效。至于哪个更好,完全根据你自己的需要。

局部替换大法

这种方法,需要用到一个辅助软件,那就是大名鼎鼎的Auto Hotkey,简称AHK

编辑一个脚本,输入如下内容,保存,reload,即可生效:

#IfWinActive emacs  ; 判断当前激活的窗口是否是Emacs,这是根据窗口标题实现的,如果你的标题不一样,请替换一下 

Control::Capslock ; 把Control替换为Capslock 

Capslock::Control   ; 把Capslock替换为Control 

#IfWinActive

全局替换大法

可以利用第三方工具,或者直接在注册表中修改键位映射关系

注册表位置:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]  如果没有此键,就新建一个

新建一个二进制值的Key,名叫:Scancode Map

输入如下的值:

00,00,00,00

00,00,00,00

03,00,00,00

3A,00,1D,00

1D,00,3A,00

00,00,00,00

前两行和最后一行,都是固定的,全部为0。第三行,表示你修改了几个键,其实我们只是改了两个键,不过最后那一行也要算进去,所以是3。

重点是在第四行和第五行。3A00,代表Caps Lock,  1D00,代表Ctrl。这一行,意思即为,将Caps Lock映射为Ctrl

第五行,就不用说了,意思刚好相反。

修改完毕后,重新登录Windows即可生效!

下面附上各个键位值的参考:

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 Ctr l1D 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

Mac OS下交换键位设置

Mac OS Lion下,非常简单,甚至不需要任何第三方软件,直接在键盘设置里面修改即可。当初我还google了一下文章,有的说需要装键盘驱动,有的说要用第三方软件,其实没那么麻烦,Lion已经有这个功能了……


这篇关于Emacs:交换你的Ctrl 和Caps Lock键的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290723

相关文章

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【数据结构入门】排序算法之交换排序与归并排序

前言         在前一篇博客,我们学习了排序算法中的插入排序和选择排序,接下来我们将继续探索交换排序与归并排序,这两个排序都是重头戏,让我们接着往下看。  一、交换排序 1.1 冒泡排序 冒泡排序是一种简单的排序算法。 1.1.1 基本思想 它的基本思想是通过相邻元素的比较和交换,让较大的元素逐渐向右移动,从而将最大的元素移动到最右边。 动画演示: 1.1.2 具体步

禁止 CTRL+ALT+DEL

在win98 里可以用   Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long)

不设临时变量交换a,b的值

常规的做法: int tmp = a; a = b; b = tmp; 不设中间变量的方法: a = a + b; b = a - b; a = a - b;

交换两个变量数值的3种方法

前言:交换两个数值可不是"a = b,b = a"。这样做的话,a先等于了b的值;当“b = a”后,因为此时a已经等于b的值了,这个语句就相当于执行了b = b。最终的数值关系就成了a == b,b == b。 下面教给大家3种交换变量数值的方法: 目录 1. 中介法 2. 消和法 3. 异或法 4. 总结 1. 中介法 中介法(又称 临时变量法 或 酱油法),其中心

用异或交换两个整数的陷阱

前面我们谈到了,可用通过异或运算交换两个数,而不需要任何的中间变量。 如下面: void exchange(int &a, int &b) {     a ^= b;     b ^= a;     a ^= b; } 然而,这里面却存在着一个非常隐蔽的陷阱。 通常我们在对数组进行操作的时候,会交换数组中的两个元素,如exchang(&a[i], &b[j]),

常见的交换变量的三种方法

常见的交换变量的三种方法     在项目中,两个变量之间交换位置在常见不过了,如进行排序。     下面说下常见的三中变量交换模式。 1、定义中间变量 #include <stdio.h>int main(){int a=9, b=3; //方法一://交换两个变量值的常规做法int tmp=a;a=b;b=tmp;printf("a=%d b=%d\n",a,b);

Leetcode面试经典题-24.两两交换链表中的节点

解法都在代码里,不懂就留言或者私信 这里先写一个递归的解,如果后面有时间,我再写个迭代的 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val =

【硬刚Java并发】JUC基础(六):Lock 同步锁

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。 显示锁 Lock 在 Java 5.0 之前,协调共享对象的访问时可以使用的机制只有 synchronized 和 volatile 。Java 5.0 后增加了一些新的机制,但并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。 ReentrantLock 实

解决 The sandbox is not sync with the Podfile.lock问题

问题描述: github / sourcetree下载的Demo,很多时候使用到CocoaPods,有的时候因为依赖关系或者版本问题不能编译运行。出现例如The sandbox is not sync with the Podfile.lock问题时候,如下所示 diff: /../Podfile.lock: No such file or directory diff: Manifest.l