M 键盘上的“h”键无法使用,我希望能够覆盖任何组合键才能键入它。与此同时。
举个例子
Alt+P to return h and maybe
Alt+shift+h to return H
答案1
键盘重新映射
值Scancode Map
atHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
允许按键表现得像按下了另一个键(或没有按下任何键)。通常不存在该值。
此结构将一个键映射到另一个键(或不映射到任何键)。
要读取设置的内容:每对字符都是一个字节。每 4 对字符是一个双字(32 位)。第一个双字是标题,全为零。第二个双字是标志,通常全为零。第三个双字是重新映射的键的数量加一。每个重新映射的键是一个双字。这些双字的第一个字(两对字符)是键将执行的操作,第二个字是要重新映射的键(第一个字将为零以禁用键)。最后有一个全为零的双字(记录的重新映射键的数量是数字加一的原因)。
英特尔处理器以逆序字节顺序存储数字。在第三个双字中,即重新映射键的数量,数字 2 将被存储为 02,00,00,00。双字以字符对的形式从右到左读取。但是双字本身(而不是双字中的字节)是按常规顺序排列的 - 从头到尾。
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,43,00,1d,00,00,00,00,00
要解码上述条目,将 F9 键与左 Control 键交换,将其分解为双字。
00,00,00,00, (Header)
00,00,00,00, (Flags)
02,00,00,00, (Number of records of remapped keys and the end marker)
43,00,1d,00, (Record 1 - second key - Left Control (001d) becomes first key - F9 (0043) and vice versa)
00,00,00,00 (End Marker)
另一个示例是禁用两个 Windows 键。
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,5B,E0,00,00,5C,E0,00,00,00,00
解码上述条目。
00,00,00,00, (Header)
00,00,00,00, (Flags)
03,00,00,00, (Number of records of remapped keys and the end marker)
00,00,5B,E0, (Record 1 - second key - Left Winkey (e05b) becomes first key which is nothing (0000))
00,00,5C,E0, (Record 2 - second key - Right Winkey (e05c) becomes first key which is nothing (0000))
00,00,00,00, (End Marker)
由于早期键盘没有现代键盘上的所有按键,因此有两种表达扫描码的方式:正常和扩展。正常是一个字节,我们用前导零填充到一个字(2 个字节)。扩展是两个字节,为此目的,扫描码以 E0 开头。与此上下文无关的其他内容以 00 开头。E0 或 00 告诉程序在代码可用时从键盘重新读取。单个键都以 E0 开头。它们基本上是光标键、右侧修饰键 Control 和 Alt 以及 F11/F12。这些键在原始键盘上是没有的。一个人用数字键盘移动光标。对灰色键的引用是指数字键盘,因为曾经数字键盘键是灰色的,而其他键是米色的。
Esc 1 0x1
1 or ! 2 0x2
2 or @ 3 0x3
3 or # 4 0x4
4 or $ 5 0x5
5 or % 6 0x6
6 or ^ 7 0x7
7 or & 8 0x8
8 or * 9 0x9
9 or ( 10 0xa
0 or ) 11 0xb
- or _ 12 0xc
= or + 13 0xd
Bksp 14 0xe
Tab 15 0xf
Q 16 0x10
W 17 0x11
E 18 0x12
R 19 0x13
T 20 0x14
Y 21 0x15
U 22 0x16
I 23 0x17
O 24 0x18
P 25 0x19
[ or { 26 0x1a
] or } 27 0x1b
Enter 28 0x1c
Left Ctrl 29 0x1d
A 30 0x1e
S 31 0x1f
D 32 0x20
F 33 0x21
G 34 0x22
H 35 0x23
J 36 0x24
K 37 0x25
L 38 0x26
; or : 39 0x27
' or " 40 0x28
` or ~ 41 0x29
Left Shift 42 0x2a
\ or | 43 0x2b
Z 44 0x2c
X 45 0x2d
C 46 0x2e
V 47 0x2f
B 48 0x30
N 49 0x31
M 50 0x32
, or < 51 0x33
. or > 52 0x34
/ or ? 53 0x35
Right Shift 54 0x36
Prtsc
This is a special case 55 0x37
Left Alt 56 0x38
Space 57 0x39
Caps Lock 58 0x3a
F1 59 0x3b
F2 60 0x3c
F3 61 0x3d
F4 62 0x3e
F5 63 0x3f
F6 64 0x40
F7 65 0x41
F8 66 0x42
F9 67 0x43
F10 68 0x44
Num Lock 69 0x45
Scroll Lock 70 0x46
Home (Number Pad) 71 0x47
Up Arrow (Number Pad) 72 0x48
Pgup (Number Pad) 73 0x49
Grey - (Number Pad) 74 0x4a
Left Arrow (Number Pad) 75 0x4b
Center (The 5 key on the number pad?) 76 0x4c
Right Arrow (Number Pad) 77 0x4d
Grey + (Number Pad) 78 0x4e
End (Number Pad) 79 0x4f
Down Arrow (Number Pad) 80 0x50
Pgdn (Number Pad) 81 0x51
Ins (Number Pad) 82 0x52
Del (Number Pad) 83 0x53
Enter (Number Pad) 57372 0xe01c
Right Ctrl 57373 0xe01d
Grey / (Number Pad) 57397 0xe035
Right Alt 57400 0xe038
Home 57415 0xe047
Up Arrow 57416 0xe048
Pgup 57417 0xe049
Left Arrow 57419 0xe04b
Right Arrow 57421 0xe04d
End 57423 0xe04f
Down Arrow 57424 0xe050
Pgdn 57425 0xe051
Ins 57426 0xe052
Del 57427 0xe053
F11 57431 0xe057
F12 57432 0xe058
Left Winkey 57435 0xe05b
Right Winkey 57436 0xe05c
注意:程序使用 16 位值来表示正数(0 到 65 536)或正数和负数(-32 768 到 32 787)。对于列表中的较大数字,我假设它们是无符号整数,因为大多数其他程序可能也会这样处理它们。有些编程语言只支持有符号整数。要转换,请从 65 536 中减去表中的数字并将其变为负数。例如,右 Winkey 是 57 436。65 536 - 57 436 = 8100,然后将其变为负数 -8100。
这些代码源自 Dos,因此我称它们为整数,因为 MS-Dos 是 16 位的。但是整数等于处理器大小,因此 Windows 中的整数是 32 位(大约 0 到 40 亿或 -20 亿到 20 亿)。
答案2
我使用以下软件禁用了存在硬件问题的 F2 键。它已 100% 禁用。该软件具有重新映射的其他功能。试一试。我的防病毒软件也没有在下载的文件中检测到任何内容。
祝你今天过得愉快:)