1. 程式人生 > >通過註冊表修改鍵盤按鍵的映射

通過註冊表修改鍵盤按鍵的映射

controls linux系統 pin -s sel 網頁 rac 查表 item

http://blog.chinaunix.net/uid-174325-id-3912617.html

NINFO 這裏把左win替換成小鍵盤5鍵,註意004C是左Win,E05B是Num5,註意在reg中的順序

被替換的鍵寫到後面,高低字節也要反向

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] 
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5B,E0,4C,00,00,00,00,00 

今天終於對thinkpad x201等筆記本鍵盤上的back(後退)和forward(前進)鍵忍無可忍,這兩個鍵在“上”鍵的兩邊,在網上編輯文本的時候非常容易碰到,然後就杯具了,所有輸入的文字全部丟失。

原來的解決辦法比較暴力,把這兩個鍵扣掉,但最近剛換了鍵盤,再扣掉也有點有礙觀瞻,打“懶牛臥” 客服電話被告知:知道這個問題,但沒有官方解決方案,好吧(我能說臟話嗎~~~~~)

沒辦法,日子還得過,上網自立更生,相信網友的力量是無窮的,在經歷了2個小時奮鬥後,終於發現了這個:
http://51nb.chinaidns.com/forum/viewthread.php?tid=1100072&page=1

通過這個地址,又發現了這個:
http://hi.baidu.com/zodondon/item/c577fd928a45a4dd1e42714c

原來,so easy,哈哈哈,大笑三聲用來鄙視“懶牛臥”

從上面文章中摘錄編輯了一下:

Scancode Map的妙用,按鍵隨意變換!

在Windows XP/Windows 2000 系統中,提供了一種新的鍵盤掃描碼映射方法,使你能隨意地設置鍵盤鍵位的布局,這就是註冊表中的 “Scancode Map”我們巧妙利用“Scancode Map”就可將普通鍵盤改造成隨心隨意的個性化鍵盤。
為了正確設置,我們有必要先了解一下“Scancode Map”(掃描碼映射)。
“Scancode Map”是註冊表中[HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]中的一個二進制鍵值(默認沒有,需新建),並且有固定的格式。
Scancode Map 代碼的一般格式是:“hex:00,00,00,00,00,00,00,00,|02|,00,00,00,|映射之後的掃描碼(XX XX),原掃描碼(XX XX)|00,00,00,00”。
其含義為:
前8個00(DWord兩個0)是版本號和頭部字節,
接下來的“02”表示映射數,其最小為值為“02”,表示只映射一組(這裏的數值是映射數目加上末尾用作結尾的“00,00,00,00”,因此總是比實際的映射數目大一),若要映射多組,只需增加相應的值即可,如映射2組其值應為“03”,3組為“04”。
後邊代碼每4個是一組:前兩個是映射後鍵位的掃描碼,後兩個是鍵位原掃描碼。如果要交換兩個鍵,則一個有兩組映射,四個值的排列形式是:鍵A,鍵B,鍵B,鍵A——它表示:鍵A成為鍵B,鍵B成為鍵A。
最後以“00,00,00,00” 結尾。
註意:在註冊表中輸入時,需要將掃描碼的高低字節交換一下。
另外,如果想要某個鍵失效,將它的掃描碼映射為“00 00”即可。

若要恢復鍵盤鍵位原來的布局,只需定位於註冊表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout],刪除"Scancode Map"鍵值

特別說明:
1. 在目前的Windows版本下面,對鍵盤映射是全局的,而不是針對某個用戶的,如果您修改添加或者刪除了某個映射,那麽不管哪個用戶使用,鍵盤都發生了變化;
另外,如果一臺電腦有多個鍵盤,那這些鍵盤都會產生同樣的變化。
2. 在XP上不能屏閉POWER SLEEP WAKE UP 這三個鍵。(沒有親自測試,筆記本上沒有這三個鍵,如果真不行就扣掉吧 ------ 開玩笑,在臺式機上這三個鍵通過bios設置應該可以把相應功能禁用掉)
3. thinkpad 上的“Fn”鍵是不能被映射的,因為它不能被OS識別,所以不能使用上面的方式進行設置。thinkpad新版的bios裏面提供了一個功能,讓左側的“Fn”鍵和相鄰的“Ctrl”鍵進行功能互換,感覺用處不是很大,有需要的朋友可以去試試看。(如果在筆記本的 bios上找不到這個功能的話,需要刷新版bios,操作很簡單,不要恐懼)
導入或設置或修改或刪除註冊表鍵值後,重啟你的電腦,改變就生效了。

也可以用將下面的文本存成“scancode.reg”,雙擊導入註冊表。鍵值可通過查上面提到的鍵位表查詢,找到你要替換的 Scan Code碼,把##,##替換掉就可以了。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,##,##,##,##,00,00,00,00

了解了“Scancode Map”之後,我們就可以來利用添加功能鍵了。比如WIN鍵掃描碼為:“E0 5B”,Esc為“00 01”,左邊的Ctrl為“00 1D”,更詳細的掃描碼請見鍵盤掃描碼。

舉例:

比如:前面提到的IBM ThinkPad鍵盤,為了把那個瀏覽器網頁前後瀏覽的鍵禁止,可以設置為:
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,6A,E0,00,00,69,E0,00,00,00,00

比如:說我們想把F9,F10鍵修改成為音量調整鍵,通過查表,可以得知:
F9、F10掃描碼分別為(00,43)、(00,44),
Volume Up、Volume Down的掃描碼分別為(E0,30)、(E0,2E),
這樣只要將Scancode設置為如下就可以了: "Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,30,E0,43,00,2E,E0,44,00,00,00,00,00
( 含義為: | 版本號和頭部字節 | 兩組映射 | 第一組 | 第二組 | 結尾終止 | )

我是把“後退”和“前進”兩個按鍵映射為“上翻頁”和“下翻頁”,註冊表文件如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,49,e0,6a,e0,51,e0,69,e0,00,00,00,00

再次說明:所有對註冊表的修改,必須在重新啟動電腦後,才能生效


Linux系統中可以用下面命令:
[root@localhost ~]# setkeycodes e06a 104
[root@localhost ~]# setkeycodes e069 109

在linux環境下可以用showkey命令測試按鍵的鍵盤碼或者掃描碼(加-s選項),註意按鍵“按下”和“松開”的掃描碼可能不一樣,例如大小寫切換鍵,按下是3A,松開是BA

鍵盤掃描碼對應表

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


現在使用的是fedora 20,將這兩句寫在了/etc/rc.d/rc.local中,保證能夠在啟動後被加載

通過註冊表修改鍵盤按鍵的映射