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

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

前言

弄了个蓝牙的欧洲键盘,但左上角居然是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			

总结

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

相关推荐
酉鬼女又兒11 分钟前
零基础入门计算机组成原理:控制器章节全考点汇总 | 寄存器 + 控制存储器 + 微指令
考研·职场和发展·计算机外设
沃普天科技14 分钟前
USB显示器驱动板触摸收款机显示器收银机点菜机广告机
驱动开发·游戏·计算机外设·电脑·ar·音视频·硬件工程
卢锡荣12 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
feifeigo12315 小时前
STM32矩阵键盘驱动(库函数版)实现
stm32·矩阵·计算机外设
是大强1 天前
定位桌面鼠标所在位置
计算机外设
龚礼鹏1 天前
优化android14低内存设备连接蓝牙键盘/鼠标后点击Disconnect断开蓝牙连接,页面卡顿(将1180ms优化到629ms)
计算机外设
shandianchengzi1 天前
【科普】安卓|安卓手机上如何简便实现Ctrl+Z(需要键盘或一台Windows电脑)
android·windows·智能手机·计算机外设·安卓·科普·记录
nashane1 天前
HarmonyOS 6学习:外接键盘CapsLock与长截图功能的实战调试与完整解决方案
学习·华为·计算机外设·harmonyos
ACP广源盛139246256732 天前
iOS 27 开放 AI 生态@ACP#小型化扩展黄金风口,IX8008全面超越 ASM2806,铸就嵌入式 AI 扩展核心
人工智能·嵌入式硬件·macos·ios·计算机外设·objective-c·cocoa
Jwest20212 天前
工业显示器什么牌子质量最好性价比最高?
计算机外设