25094


Windows 7 を利用しています。  
レジストリをいじってキーの入れ替えを行おうとしています。  
このためには、入れ替えたいキーのスキャンコードを知っておく必要がありますが、  
今入力したキーを表示するような機能 (方法) はありますか？

できれば、追加ソフト(よくわからないソフト)はインストールしないほうが望ましいです。  
もし追加ソフトが必要なら、ソースが公開されているもののほうが望ましいです。  
(セキュリティ的な観点で)


CC BY-SA 3.0
2016-05-21T03:04:25.483
25054
2016-05-23T07:13:18.110
754
question
windows
ウィンドウズで、今入力されたキースキャンコードを表示するには？


Windows の標準コマンドだけで調べる方法を真剣にネタ回答してみます。

IBM/PC というか PS/2 互換機の 16bit BIOS を呼び出してみましょう。  
(NEC PC98 は考慮しません)  
(実際に動くのは 32bit Windows 内部の BIOS シミュレータですけど)

キースキャンコードは PC-BIOS コール `INT 16H` `AH=10H` で取得できますから  
<https://en.wikipedia.org/wiki/INT_16H>  
32bit Windows (Windows 7/XP では確認済み Windows 8 32bit は手元に無いので未確認) なら  
コマンドプロンプトから `debug.exe` を起動してハンドアセンブル入力しましょう。  
`debug.exe` の `a` はアセンブル `g` は実行 `q` は終了コマンドです。

[code]

    C>debug
    -a
    351B:0100 MOV AH,10
    351B:0102 INT 16
    351B:0104 INT 3
    351B:0105 <Enter> のみ
    -g
    
[/code]

ここでキー入力待ちになるので調べたいキーを押します。 ESC キーを押してみました。

[code]

    AX=011B  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
    DS=351B  ES=351B  SS=351B  CS=351B  IP=0104   NV UP EI PL NZ NA PO NC
    351B:0104 CC            INT     3
    -q
    C>
    
[/code]

`AH=01` がスキャンコード `AL=1B` がキーコード (ASCII) です。

複数回実行したかったら `q` せずに `g=100` でもう一度実行できます。

64bit Windows は 16bit code を実行できないのでこの方法は使えません。  
既にレジストリでキーマップを入れ替えていると、  
この方法で得たコードは入れ替えた後のコードになっています。  
[窓] キーなど Windows 内部で処理が完結するキーのコードは調査しようがありません。  
実用度は低いです（まあネタですし）。


CC BY-SA 3.0
2016-05-23T05:18:55.757
25094
2016-05-23T05:57:57.673
2016-05-23T05:57:57.673
8589
8589
25054
answer


追加ソフトでソースが公開されている例を挙げれば、AutoHotKeyがあります。  
Download - Other
versionのページにBinaries(インストーラーでないもの)もあり、適当なディレクトリに解凍して、使い終わったらディレクトリごと消すこともできます。

<https://autohotkey.com/>  
<https://github.com/AutoHotkey/AutoHotkey>

AutoHotKeyでのスキャンコードの調べ方についてわかりやすいページがなかったため、最も簡単と思われる手順を書きます。

  1. AutoHotKey.exeを解凍したディレクトリに`AutoHotKey.ahk`ファイルを作成
  2. 作成したファイルをエディタで開き、`#InstallKeybdHook`の1行を追記して保存
  3. AutoHotKey.exeを起動後、タスクトレイアイコンを右クリックして`Open`を選択
  4. メニューの`[View] - [Key history and script info]`を選択
  5. 調べたいキーを押下した後、F5を押すと入力したキーの情報が画面に表示されます

SCの列に表示されるものがScan Codeです。


CC BY-SA 3.0
2016-05-23T07:13:18.110
25104
2016-05-23T07:13:18.110
3068
25054
answer