关于使用注册表修改键盘的键位映射

修改注册表实现键盘的键位映射

前言

弄了个蓝牙的欧洲键盘,但左上角居然是WWW home键,还找不到Esc键,崩溃了,VI都用不了。

赶紧考虑键位映射,但不想占用内存,就准备用注册表的Scancode Map实现。

折腾了几天,怎么也不行。最后发现,Power、WWW home、多媒体的键(非104标准键),因不能驻留内存,只有PS/2才能用此法进行键位映射。这个坑一定要告诉大家。免得折腾。直接用powertoys吧。


但既然弄明白了Scancode,就说清楚一下,什么高位、低位的。争取说清楚原理。

很多网上文章,都是讲步骤,不说原理,不说为什么要这么干,看的一头雾水。

一、scancode是什么?

键位按下和放开各获取一个码(makecode和breakcode),通常键盘映射只用按下去那个码(makecode)。每个码用两个16进制数表示。

比如:

Page Down的按下码是0xE0 0x51,放开码是0xE0 0xD1。

有人说,104键盘的值都只有一个啊,其实,是因为前面一位是0所以没有写出来。

比如,scancode的第一个是Esc键,通常看到的是0x01,但应该表示成0x00 0x01,高位是0,低位是1。这个在修改注册表的时候用得到。

二、步骤

1.打开注册表

位置:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

注意不是Keyboard Layouts也不要进入到子目录。

右侧创建二进制值Scancode Map

表的结构是这样的:四个部分,表头,映射数量,键位映射表,表尾。

表头是8个0,表尾是4个0。

映射数量用4位数表示,后面每个映射对也用四位数表示,前两个是目标键,后两个是原键。

这里需要特别注意:

1.注册表的高低位读法是低位在前,高位在后。

比如,第二行的前四位是02 00 00 00,实际的值是00 00 00 02,就是数值2,表示有1对键盘映射。注意是这个数值-1。

2.第二行的后四位开始就是键位映射对,四位数中,前两位是目标键,后两位是原键。

比如,WWW home值是0xE0 0x32,ESC值是0x01,表示成键位映射就是01 00 32 E0。其中01 00是目标键ESC;32 E0是原键。注册表在读的时候,先读低位01,再度高位00,最后组合成00 01。为啥这个设计,我不知道。

3.如果要禁用一个键,将这个键映射为00 00即可

示例一:

c 复制代码
00 00 00 00 00 00 00 00 //表头的格式,8个0
02 00 00 00 01 00 32 E0 //有一个键位映射:把00 01赋值到 E0 32;就是把WWW home映射成Esc
00 00 00 00 //表尾的格式,4个0

示例二:

c 复制代码
00 00 00 00 00 00 00 00 //表头的格式,8个0
03 00 00 00 01 00 32 E0 //有两个键位映射:把WWW home映射成Esc
52 E0 6c E0 00 00 00 00 //把E-mail键映射成insert;表尾的格式,4个0

2.scancode表

下面表中的值是低位在前,高位在后,直接复制到注册表中就可以:

c 复制代码
													
Backspace	0E 00		9	49 00		/ ?	35 00		S	1F 00		DBE_SBCSCHAR	77 E0
Caps Lock	3A 00		-	4A 00		; :	27 00		T	14 00		CONVERT	79 E0
Delete	53 E0		/ *	37 00		[ {	1A 00		U	16 00		NONCONVERT	7B E0
End	4F E0		.	53 00		\ |	2B 00		V	2F 00		Internet	01 E0
Enter	1C 00		/	35 00		] }	1B 00		W	11 00		iTouch	13 E0
Escape	01 00		/+	4E 00		` ~	29 00		X	2D 00		Shopping	04 E0
HOME	47 E0		Enter	1C E0		= +	0D 00		Y	15 00		Webcam	12 E0
Insert	52 E0		F1	3B 00		0 )	0B 00		Z	2C 00		Back	6A E0
Left Alt	38 00		F2	3C 00		1 !	02 00		Close	40 E0		Favorites	66 E0
Left Ctrl	1D 00		F3	3D 00		2 @	03 00		Fwd	42 E0		Forward	69 E0
LeSh ftift	2A 00		F4	3E 00		3 #	04 00		Help	3B E0		HOME	32 E0
Left Windows	5B E0		F5	3F 00		4 $	05 00		New	3E E0		Refresh	67 E0
Num Lock	45 00		F6	40 00		0.05	06 00		Office Home	3C E0		Search	65 E0
Page Down	51 E0		F7	41 00		6 ^	07 00		Open	3F E0		Stop	68 E0
Page Up	49 E0		F8	42 00		7 &	08 00		Print	58 E0		My Pictures	64 E0
Power	5E E0		F9	43 00		8 *	09 00		Redo	07 E0		My Music	3C E0
PrtSc	37 E0		F10	44 00		9 (	0A 00		Reply	41 E0		Mute	20 E0
Right Alt	38 E0		F11	57 00		A	1E 00		Save	57 E0		Play/Pause	22 E0
Right Ctrl	1D E0		F12	58 00		B	30 00		Send	43 E0		Stop	24 E0
Right Shift	36 00		F13	64 00		C	2E 00		Spell	23 E0		+(Volume up)	30 E0
Right Windows	5C E0		F14	65 00		D	20 00		Task Pane	3D E0		- (Volume down)	2E E0
Scroll Lock	46 00		F15	66 00		E	12 00		Undo	08 E0		Media	6D E0
Sleep	5F E0		Down	50 E0		F	21 00		Mute	20 E0		Mail	6C E0
Space	39 00		Left	4B E0		G	22 00		Next Track	19 E0		Web/Home	32 E0
Tab	0F 00		Right	4D E0		H	23 00		Play/Pause	22 E0		Messenger	05 E0
Wake	63 E0		Up	48 E0		I	17 00		Prev Track	10 E0		Calculator	21 E0
0	52 00		Calculator	21 E0		J	24 00		Stop	24 E0		Log Off	16 E0
1	4F 00		E-Mail	6C E0		K	25 00		Volume Down	2E E0		Sleep	5F E0
2	50 00		Media Select	6D E0		L	26 00		Volume Up	30 E0		Help(on ke F1y)	3B E0
3	51 00		Messenger	11 E0		M	32 00		? -	7D 00		Undo(on ke F2y)	08 E0
4	4B 00		My Computer	6B E0		N	31 00			45 E0		Redo(on ke F3y)	07 E0
5	4C 00		' "	28 00		O	18 00		Next to Enter	2B E0		Fwd (on ke F8y)	42 E0
6	4D 00		- _	0C 00		P	19 00		Next to L-Shift	56 E0		Send(on ke F9y)	43 E0
7	47 00		, <	33 00		Q	10 00		Next to R-Shift	73 E0			
8	48 00		. >	34 00		R	13 00		DBE_KATAKANA	70 E0			

总结

讲步骤,还要讲原因讲原理讲为什么。

相关推荐
Wpa.wk1 天前
自动化测试-鼠标+键盘操作 - Actions高级控件
java·开发语言·测试工具·自动化·计算机外设·actions·高级控件
徐徐图之!2 天前
你对键盘知多少?
计算机外设
ACP广源盛139246256733 天前
GSV6155@ACP#6155产品规格详解及产品应用分享
嵌入式硬件·计算机外设·音视频
电脑小管家3 天前
路由器怎么重新设置wifi密码
网络·windows·计算机外设·智能路由器·电脑
非凡ghost3 天前
Brightness.Manager.OK(显示器亮度调节软件)
android·智能手机·计算机外设·软件需求
hashiqimiya3 天前
拓展显示器,与显示器相关软件
计算机外设
uuleaf4 天前
26键打字训练小游戏:键盘练习游戏合集
游戏·计算机外设·编程打字
我送炭你添花4 天前
Pelco KBD300A 模拟器:01.Pelco 协议前世今生 & KBD300A 键盘基础解析
网络·python·计算机外设·pyqt
ezeroyoung5 天前
Flutter HarmonyOS 键盘高度监听插件开发指南
flutter·计算机外设·harmonyos
Ankie Wan6 天前
windows技巧:通过cmd禁止鼠标,键盘灯唤醒电脑。
windows·计算机外设·电脑