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

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

  • 前言
  • 一、scancode是什么?
  • 二、步骤
    • 1.打开注册表
    • 2.scancode表
  • 总结

前言

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

示例一:

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

示例二:

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表

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

													
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			

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unreal Engine使用Groom 打包后报错

Unreal Engine使用Groom打包后报错 版本5.4.4 blender 4.2.1 项目头发用了groom&#xff0c;运行后报错 错误&#xff1a; Assertion failed: Offset BytesToRead < UncompressedFileSize && Offset > 0 [File:E:\UnrealEngine-5.4.4-release\Engine\Source\R…

python之Flask入门—路由参数

语法&#xff1a; /routerName/<string:parameter_name> 其中&#xff1a;routerName代表路由名称<>中的string是参数类型&#xff0c;parameter_name为参数名称 参数类型&#xff1a; &#xff08;1&#xff09; string 接收任何没有斜杠&#xff08;/&#x…

deepin 安装 chrome 浏览器

deepin 安装 chrome 浏览器 最近好多小伙伴儿和我说 deepin 无法安装最新的谷歌浏览器 其实是因为最新的 谷歌浏览器 其中的一个依赖需要提前安装 提前安装依赖然后再安装谷歌浏览器就可以了 安装 fonts-liberationsudo apt -y install fonts-liberation安装 chrome 浏览器sudo…

ffmpeg 增亮 docker 使用

使用最新的 docker pull jrottenberg/ffmpeg docker run -it --rm -v /path/to/input:/input -v /path/to/output:/output jrottenberg/ffmpeg <ffmpeg command>比如我想增亮 在 /home 目录下 有一个 video.mp4 docker run --rm -v /home:/home jrottenberg/ffmpeg:7…

小白可以报名鸿蒙开发培训吗

随着科技的飞速发展&#xff0c;尤其是移动互联网和智能硬件的不断进步&#xff0c;各大科技公司纷纷推出了自家的操作系统&#xff0c;而华为的鸿蒙系统(HarmonyOS)无疑成为了其中的佼佼者。随着鸿蒙系统的逐步推广&#xff0c;越来越多的开发者开始关注这一新的开发平台。那么…

flink1.6集成doris,并从mysql同步数据到doris

使用 Apache Flink 1.6 集成 Doris&#xff0c;并从 MySQL 同步数据到 Doris 是一个复杂的任务&#xff0c;但可以通过以下步骤实现。Doris 是一个现代化的 MPP&#xff08;大规模并行处理&#xff09;SQL 数据库&#xff0c;支持实时分析和交互式查询。Flink 可以作为实时数据…

Figma入门-原型交互

Figma入门-原型交互 前言 在之前的工作中&#xff0c;大家的原型图都是使用 Axure 制作的&#xff0c;印象中 Figma 一直是个专业设计软件。 最近&#xff0c;很多产品朋友告诉我&#xff0c;很多原型图都开始用Figma制作了&#xff0c;并且很多组件都是内置的&#xff0c;对…

蓝牙循环搜索并连接. Android辅助功能以及锁的灵活运用

生产上遇到个问题, 某些蓝牙模块不能在低温下进行连接, 所以需要实现个工具 , 一次性自动检测150个蓝牙, 那么android设备就要不断自动的去搜索附近蓝牙模块,然后进行配对,再进行连接,连接成功后断开,去下一个蓝牙模块进行配对连接, 直到搜索出来的蓝牙都配对连接完毕. 根据测…

Linux内核机制自学笔记

摘抄于大学期间记录在QQ空间的一篇自学笔记&#xff0c;当前清理空间&#xff0c;先搬移过来&#xff0c;也不知道到底是对是错了。 1、Linux内存管理 在计算机的世界&#xff0c;内存犹如一条长河&#xff0c;在这条长河中&#xff0c;cpu将这条长河划分成了段和页。cpu要将一…

oracle日期格式查询

文章目录 TO_CHARyyyy-MM-ddyyyy-MM-dd HH24:MI:SS TO_CHAR 在Oracle数据库中&#xff0c;可以使用TO_CHAR函数来格式化日期。TO_CHAR函数可以将DATE或TIMESTAMP数据类型转换为字符串&#xff0c;并按照指定的格式显示。 yyyy-MM-dd 以下是一个简单的例子&#xff0c;假设我…

ES----安装 elasticsearch入门,elasticsearch安装,centos安装es,centos安装elasticsearch

ES 如需要对应资源&#xff0c;请评论留言&#xff0c;或再最后视频中关注获取 1. 安装 1.1 安装es 创建网络&#xff08;centos系统&#xff0c;docker环境&#xff09; docker network create es-netdocker安装es —如果下载失败&#xff0c;请看我的docker配置镜像的文章…

Milvus×Florence:一文读懂如何构建多任务视觉模型

近两年来多任务学习&#xff08;Multi-task learning&#xff09;正取代传统的单任务学习&#xff08;single-task learning&#xff09;&#xff0c;逐渐成为人工智能领域的主流研究方向。其原因在于&#xff0c;多任务学习可以让我们以最少的人力投入&#xff0c;获得尽可能多…

172页PPT集团数字化转型采购供应链及财务管控业务流程指南

一、供应商管理与数字化转型 1.1供应商管理数字化的重要性与挑战 重要性&#xff1a; 效率提升&#xff1a; 数字化可以提高供应商管理的效率&#xff0c;通过自动化流程减少手动操作&#xff0c;加快决策速度。透明度增强&#xff1a; 数字化工具可以提供实时数据&#xff…

手机镜头组如此突出,考虑恢复以前设计

现在手头看重照相。结果导致的问题就是&#xff0c;在背部要突出很高&#xff0c;以容纳镜头组件。这种设计真的好吗&#xff1f;并不见得。真实照片&#xff1a; VIVO X200系列镜头组照片-CSDN博客 考虑到现在镜头的情形&#xff0c;我建议恢复以前的设计&#xff0c;就是把镜…

【机器学习】机器学习基础

什么是机器学习&#xff1f; 机器学习&#xff08;Machine Learning, ML&#xff09;是一种人工智能&#xff08;AI&#xff09;的分支&#xff0c;指计算机通过数据学习规律并做出预测或决策&#xff0c;而无需明确编程。它的核心目标是让机器能够从经验中学习&#xff0c;逐…

设计模式 外观模式 门面模式

结构性模式-外观模式 门面模式 适用场景&#xff1a;如果你需要一个指向复杂子系统的直接接口&#xff0c; 且该接口的功能有限&#xff0c; 则可以使用外观模式。 不用关心后面的查询具体操作 /*** 聚合查询接口*/ RestController RequestMapping("/search") Slf…

基于开源云原生数据仓库 ByConity 体验多种数据分析场景

基于开源云原生数据仓库 ByConity 体验多种数据分析场景 业务背景什么是 ByConity上手实测环境要求测试操作远程登录 ECS 服务器windows10 自带连接工具 执行查询 ByConity 相对于 ELT 能力的优化提升并行度任务级重试并行写入简化数据链路 业务背景 大家都知道&#xff0c;在…

【051】基于51单片机温度计【Proteus仿真+Keil程序+报告+原理图】

☆、设计硬件组成&#xff1a;51单片机最小系统DS18B20温度传感器LCD1602液晶显示按键设置蜂鸣器LED灯。 1、本设计采用STC89C51/52、AT89C51/52、AT89S51/52作为主控芯片&#xff1b; 2、采用DS18B20温度传感器测量温度&#xff0c;并且通过LCD1602实时显示温度&#xff1b;…

HarmonyOS(61) 组件间状态共享的分类以及状态选择器的选取优先级

状态共享 状态共享的分类状态共享选择器State与prop\Link\ObservedObjectLink组合的区别合理选择装饰器的顺序参考资料 状态共享的分类 HarmonyOS的组件之间是可以共享状态数据了&#xff0c;不同的组件之间&#xff0c;状态共享的场景也不一样&#xff0c;根据共享范围从小到…

Redis(4):主从复制

一、主从复制概述 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(master)&#xff0c;后者称为从节点(slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。   默认情况下&#xff0c;每台Redis…