我的键盘映射更改

Windows键盘映射

这里主要说的是简单按键映射,即几个按键之间相互更换位置。

  • `win+R`打开`运行`,输入`regedit`打开注册表编辑器,进入路径“计算机/HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

  • 新建一个二进制项,命名为"ScanCode Map"。

  • 打开该项,按照以下内容的规则对二进制项内容进行设置。

ScanCode Map规则

首先需要注意,以下所有数据都是小端党,即数据高位写在高地址。如十六进制数据0x007f365a,应当写为5a 36 7f 00。如出现位数不足,数据高位以0补足即可。

  • 第一部分:输入8个00作为开头标识符。

  • 第二部分:4个字节,表示映射键的总数,即所要做的键盘映射涉及几个按键(左右Ctrl/Alt均属于不同按键)。

  • 第三部分,按键的具体关系,4个字节为一组。前两个是映射后键位的扫描码,后两个是键位原扫描码。具体码值见下表。如想要废除该键,映射后扫描码置为0即可。

  • 第四部分,4个00作为结束标识符。

按键码值表:

key

mark

key

mark

key

mark

key

mark

主键盘

~/·

29

Tab

0f

Caps Lock

3a

L-shift

2a

!/1

2

q

10

a

1e

z

2c

@/2

3

w

11

s

1f

x

2d

#/3

4

e

12

d

20

c

2e

$/4

5

r

13

f

21

v

2f

%/5

6

t

14

g

22

b

30

^/6

7

y

15

h

23

n

31

&/7

8

u

16

j

24

m

32

/8

9

i

17

k

25

33

(/9

0a

o

18

l

26

>/.

34

)/0

0b

p

19

:/;

27

?

35

_/-

0c

{/[

1a

"/‘

28

R-shift

36

+/=

0d

}/]

1b

Enter

1c

L-ctrl

1d

|/\

2b

L-alt

38

Backspace

0e

Space

39

R-alt

e0 38

R-ctrl

e0 1d

小键盘

NumLock

45

8/Up

48

1/End

4f

+

4e

/

e0 35

9/PgUp

49

2/Down

50

Enter

e0 1c

37

4/Left

4b

3/PgDn

51

-

4a

5

4c

0/Ins

52

7/Home

47

6/Right

4d

./Del

53

附加键

Scroll Lock

46

Page Up

e0 49

Page Down

e0 51

Up

e0 48

Insert

e0 52

Delete

e0 53

Left

e0 46

Down

e0 50

Home

e0 47

End

e0 4f

Right

e0 4d

功能键

Esc

1

F1

3b

F5

3f

F9

43

F2

3c

F6

40

F10

44

F3

3d

F7

41

F11

57

F4

3e

F8

42

F12

58

媒体键

Mute

e0 20

Paly/Pasue

e0 22

Volume Down

e0 2e

Stop

e0 24

Next Track

e0 19

Prev Track

e0 10

Volume Up

e0 30

后续如需删除或更改键盘映射,只需删除或更改此条注册表信息即可。

Ubuntu键盘映射

**首先注意,如果是宿主机windows且已经按照上述注册表方法在主机上作出键盘映射、想要在虚拟机中作出同步设置的,键盘映射会自动在虚拟机中生效,不需要在虚拟机中另做设置。如用的是下文的热键AutoHotkey,则需要在虚拟机中另行设置。**

环境:Ubuntu 22.04 LTS

网上提到的使用xmodmap更改映射的方法,尝试后发现虽然能显示已经更改,但在vim中没有任何反应,于是决定放弃此法。

油管上这个视频提到的方法,经测试,在vim中可行。

更换按键位置

如下:

# 进入对应文件夹
$ cd /usr/shared/X11/xkb/symbols

# 查看一下
$ ls

# 由于pc文件只有读权限,需要修改必须进入root权限,因此此处进入root用户修改
# 如无root权限进入编辑时,会警告正在编辑只读文件,并且编辑的内容无法保存
$ sudo -s

# 编辑pc文件
$ vim pc

# 退出root用户
$ exit

在编辑pc文件时,可以看到,每一行的构成如下:

key { [ Escape ] }

可以理解为键盘上的Esc键位是Esc键的功能。需要修改时,将中括号中内容修改。如:

调换 Esc 与 CapsLock ,即将二者(本处分别在第4、第22行)中括号中内容互换即可。

Windows其他热键映射

这里采用Autohotkeys,注意下载合适版本(鸭子睁眼,大可不必)(p.s.即使不合适,编写好了之后运行,也会提醒你版本不对,然后提示下载对应版本的)

下载安装之后,打开应用,创建一个新脚本,路径自己设置,按以下方式进行编写。

简单更换按键

方法极为简单,如下:

A::B
B::A

其中A与B是需要更换位置的按键。

脚本运行

编写、保存和退出后,右键该脚本,run一下,屏幕右下角就会出现一个绿底的H图标,即为正在运行。

如需开机运行,创建该脚本的快捷方式,打开文件夹中的开始菜单(C:\\Users\\你的用户名\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs),将快捷方式放进去,以后开机即可自动运行。

一个复杂设计

在CS自学指南中提到,这个Autohotkey gist将 CapsLock 设置为以下功能:

  • 在单独按下时,相当于 Escape

  • 在与其他按键一起按下时,相当于 Ctrl

本功能相当方便。

使用方法:把gist中的内容(.ahk文件)下载,作为脚本运行(或者代码复制下来自己建立脚本)。方法同上。

你可能感兴趣的:(vim,windows,ubuntu)