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


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

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

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

--------------------------------------------------------------------------------

Scancode Map 注冊表項來實現鍵盤按鍵映射。

 位於注冊表的:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\ 下新建一個二進制值項:  "Scancode Map"

這個項目可實現對鍵盤按鍵的映射。這里映射的意思可理解為“替換”,可將任意一鍵替換成其它鍵。

 

[項目格式]

以16進制表示,更分為五個部分,每個逗號之間都為一個字節。

"Scancode Map" = 00,00,00,00,00,00,00,00,   02,00,00,00,   01,00, 02,00,    00,00,00,00 

  1. 8個字節。 這是版本信息號。照例寫就好。
  2. 4個字節。 這是映射鍵的總數。按照二進制的讀寫規則,低位在左,高位在右。02 00 00 00 這個數實際就是:00 00 00 02 。從 02 開始,一個映射鍵是 02 ,兩個是03 ,依次遞加,十個是 0B 。
  3. 2個字節。 表示替換后按鍵的”掃描碼“。如:ESC 鍵的掃描碼是 01 ,所以就表示 01 00 。再如 左Ctrl鍵掃描碼是 1D 00, 而右Ctrl鍵是 1D E0 。
  4. 2個字節。 表示原按鍵的”掃描碼“。格式同上。
  5. 以四個 00 結束。
 

[鍵盤掃描碼]

以十六進制表示,分兩部份,0X后面兩個數是掃描碼,最后兩個數是 ASCII 碼(可忽略)。如 0x011b          ESC 掃描碼是01。

 

掃描碼    鍵

0X011B ESC 
0X3B00 F1 
0X3C00 F2 
0X3D00 F3 
0X3E00 F4 
0X3F00 F5 
0X4000 F6 
0X4100 F7 
0X4200 F8 
0X4300 F9 
0X4400 F10

 

主鍵盤區: 
0X2960 ~ 
0X0231 1 
0X0332 2 
0X0433 3 
0X0534 4 
0X0635 5 
0X0736 6 
0X0837 7 
0X0938 8 
0X0A39 9 
0X0B30 0 
0X0C2D - 
0X0D3D = 
0X2B5C " 
0X0E08 退格鍵 
0X0F09 TAB 
0X1071 Q 
0X1177 W 
0X1265 E 
0X1372 R 
0X1474 T 
0X1579 Y 
0X1675 U 
0X1769 I 
0X186F O 
0X1970 P 
0X1A5B [ 
0X1B5D ] 
0X1E61 A 
0X1F73 S 
0X2064 D 
0X2166 F 
0X2267 G 
0X2368 H 
0X246A J 
0X256B K 
0X266C L 
0X273B ; 
0X2827 ' 
0X1C0D 回車 
0X2C7A Z 
0X2D78 X 
0X2E63 C 
0X2F76 V 
0X3062 B 
0X316E N 
0X326D M 
0X332C , 
0X342E . 
0X352F / 
0X3920 空格鍵


右邊數字鍵盤: 
0X5200 INSERT 
0X4700 HOME 
0X4900 PAGE UP 
0X5300 DELETE 
0X4F00 END 
0X5100 PAGEDOWN 
0X4800 上箭頭 
0X4B00 左箭頭 
0X5000 下箭頭 
0X4D00 右箭頭 
0X352F / 
0X372A * 
0X4A2D - (注意,這是數字鍵盤的)
0X4737 7 
0X4838 8 
0X4939 9 
0X4B34 4 
0X4C35 5 
0X4D36 6 
0X4E2B + 
0X4F31 1 
0X5032 2 
0X5133 3 
0X5230 0 
0X532E DEL

左 Crtl 掃描碼是 1D ,表示 1D 00 。 右 Ctrl 鍵掃描碼是 E01D,表示 1D E0。

左 ALT 掃描碼是 38 ,表示 38 00 。 右 ALT 鍵掃描碼是 E0 38,表示 38 E0。

左 Shift 掃描碼是 2A ,表示 2A 00 。 右 Shift 鍵掃描碼是 36 ,表示 36 00

 

[示例]

1.屏蔽左側WIN鍵

  "Scancode Map"=00,00,00,00,00,00,00,00,02,00,00,00,00,00,5B,E0,00,00,00,00 

2.屏蔽右側WIN鍵

  "Scancode Map"=00,00,00,00,00,00,00,00,02,00,00,00,00,00,5C,E0,00,00,00,00

3.屏蔽左右WIN兩個鍵

  "Scancode Map"=00,00,00,00,00,00,00,00,03,00,00,00,00,00,5B,E0,00,00,5C,E0,00,00,00,00

4.替換左Crtl鍵為左Alt鍵

  "Scancode Map"=00,00,00,00,00,00,00,00,02,00,00,00,38,00,1D,00,00,00,00,00 

http://www.cnblogs.com/Rainr/archive/2012/01/21/2328046.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM