キーボードのキーコードの一覧表
1.概要
HSPやExcel VBAなどを利用していて、キーボードのキー定数が知りたい場合があります。その都度、ネットで調べているのが手間なので、
一覧表にして見ました。このキーコードは、Win32API の keybd_event関数等を利用して送信することができるコードです。
プログラム上からキーコードを送信する場合は、誤操作防止のため十分なウェイトを入れるなりの工夫が必要です。
2.キーボードのキーコード一覧表 キーボードのキーコード一覧表です。全部で127個あります。キーボードのキーコード一覧表
3.キーコードの送信テスト 実際にキーコード表を参照してキーコードを送信して見ましょう。 次のスクリプトを実行して見て下さい。 スクリプトは、HSP言語で作成してあります。
設定します。
KEYEVENTF_EXTENDEDKEY の場合は、スキャンコードにプリフィックスバイト 0xE0 (224) を
付加します。
KEYEVENTF_KEYUP の場合は、キーを離す操作にします。指定しなければ、キーを押す操作に
なります。
先程のサンプルの場合は、すべてのウィンドウを最小化するキーコード [ Windowsキー左側 ] + [ M ] を 押すことで 実現されます。それをプログラム側から仮想キーコードの送信ということでエミュレートし ている訳です。それでは、 もうひとつ実験して見ましょう。画面のハードコピーをして見ます。通常、 キーボードからは、[ Print Screen ] キーを 押すとハードコピーが取れます。実際は、クリップボード にコピーされて、貼り付けができるようになるものです。 アクティブウィンドウ画面をコピーする場合は、 同じく、 [ Alt ] + [ Print Screen ] キーとのキーコードの組合せで 画面コピーができます。 スクリプトとしては、先程の 「 すべてのウィンドウを最小化 」 と全く同じです。送信する キーコード の値のみ変更します。
4.ソースコード キーコードと文字コードを簡易的に調べるサンプルです。スクリプトエディタから実行して任意のキーを 押すと、対応するキーコード値と文字コード値を画面表示します。 スクリプトは、キー割り込み命令であるonkey命令にて、取得される値を 割り込み要因のシステム変数wparam値とiparam値 で表示しています。
5.ダウンロード 提供するソースコードのライセンスは、CC0 (クレジット表示不要、改変可、商用可) とします。自由に利用して頂いてかまいません。 尚、データの取得やプログラム実行において損害等が生じた場合は、筆者は一切の責任も負いません。全て自己責任でお願いします。
※今回の記事におけるソースコードや実行形式ファイルのダウンロード提供はありません。
掲載リストをコピーして利用して下さい。実行は、HSPスクリプトエディタにソースコードを貼り付けて実行(F5)して下さい。
2.キーボードのキーコード一覧表 キーボードのキーコード一覧表です。全部で127個あります。
No. | 記号定数名 | 値 ( HEX ) | 値 ( DEC ) | 意味 ( 該当するキー ) |
1 | VK_LBUTTON | $01 | 01 | |
2 | VK_RBUTTON | $02 | 02 | |
3 | VK_CANCEL | $03 | 03 | Cancel([Ctrl]+[Break]) |
4 | VK_MBUTTON | $04 | 04 | |
5 | VK_BACK | $08 | 08 | [BackSpace] |
6 | VK_TAB | $09 | 09 | [Tab] |
7 | VK_CLEAR | $0C | 12 | |
8 | VK_RETURN | $0D | 13 | [Enter] |
9 | VK_SHIFT | $10 | 16 | [Shift] |
10 | VK_CONTROL | $11 | 17 | [Ctrl] |
11 | VK_MENU | $12 | 18 | [Alt] |
12 | VK_PAUSE | $13 | 19 | [Pause] |
13 | VK_CAPITAL | $14 | 20 | [CapsLock] |
14 | VK_ESCAPE | $1B | 27 | [Esc] |
15 | VK_SPACE | $20 | 32 | [スペースキー] |
16 | VK_PRIOR | $21 | 33 | [PageUp] |
17 | VK_NEXT | $22 | 34 | [PageDown] |
18 | VK_END | $23 | 35 | [PageDown] |
19 | VK_HOME | $24 | 36 | [Home] |
20 | VK_LEFT | $25 | 37 | カーソルキー [←] |
21 | VK_UP | $26 | 38 | カーソルキー [↑] |
22 | VK_RIGHT | $27 | 39 | カーソルキー [→] |
23 | VK_DOWN | $28 | 40 | カーソルキー [↓] |
24 | VK_SELECT | $29 | 41 | |
25 | VK_PRINT | $2A | 42 | |
26 | VK_EXECUTE | $2B | 43 | |
27 | VK_SNAPSHOT | $2C | 44 | [Print Screen] |
28 | VK_INSERT | $2D | 45 | [Insert] |
29 | VK_DELETE | $2E | 46 | [Delete] |
30 | VK_HELP | $2F | 47 | [Help] |
31 | VK_0 | $30 | 48 | ASCII Code '0' |
32 | VK_1 | $31 | 49 | ASCII Code '1' |
33 | VK_2 | $32 | 50 | ASCII Code '2' |
34 | VK_3 | $33 | 51 | ASCII Code '3' |
35 | VK_4 | $34 | 52 | ASCII Code '4' |
36 | VK_5 | $35 | 53 | ASCII Code '5' |
37 | VK_6 | $36 | 54 | ASCII Code '6' |
38 | VK_7 | $37 | 55 | ASCII Code '7' |
39 | VK_8 | $38 | 56 | ASCII Code '8' |
40 | VK_9 | $39 | 57 | ASCII Code '9' |
41 | VK_A | $41 | 65 | ASCII Code 'A' |
42 | VK_B | $42 | 66 | ASCII Code 'B' |
43 | VK_C | $43 | 67 | ASCII Code 'C' |
44 | VK_D | $44 | 68 | ASCII Code 'D' |
45 | VK_E | $45 | 69 | ASCII Code 'E' |
46 | VK_F | $46 | 70 | ASCII Code 'F' |
47 | VK_G | $47 | 71 | ASCII Code 'G' |
48 | VK_H | $48 | 72 | ASCII Code 'H' |
49 | VK_I | $49 | 73 | ASCII Code 'I' |
50 | VK_J | $4A | 74 | ASCII Code 'J' |
51 | VK_K | $4B | 75 | ASCII Code 'K' |
52 | VK_L | $4C | 76 | ASCII Code 'L' |
53 | VK_M | $4D | 77 | ASCII Code 'M' |
54 | VK_N | $4E | 78 | ASCII Code 'N' |
55 | VK_O | $4F | 79 | ASCII Code 'O' |
56 | VK_P | $50 | 80 | ASCII Code 'P' |
57 | VK_Q | $51 | 81 | ASCII Code 'Q' |
58 | VK_R | $52 | 82 | ASCII Code 'R' |
59 | VK_S | $53 | 83 | ASCII Code 'S' |
60 | VK_T | $54 | 84 | ASCII Code 'T' |
61 | VK_U | $55 | 85 | ASCII Code 'U' |
62 | VK_V | $56 | 86 | ASCII Code 'V' |
63 | VK_W | $57 | 87 | ASCII Code 'W' |
64 | VK_X | $58 | 88 | ASCII Code 'X' |
65 | VK_Y | $59 | 89 | ASCII Code 'Y' |
66 | VK_Z | $5A | 90 | ASCII Code 'Z' |
67 | VK_LWIN | $5B | 91 | [Windowsキー左側] |
68 | VK_RWIN | $5C | 92 | [Windowsキー右側] |
69 | VK_APPS | $5D | 93 | |
70 | VK_NUMPAD0 | $60 | 96 | テンキー[0] |
71 | VK_NUMPAD1 | $61 | 97 | テンキー[1] |
72 | VK_NUMPAD2 | $62 | 98 | テンキー[2] |
73 | VK_NUMPAD3 | $63 | 99 | テンキー[3] |
74 | VK_NUMPAD4 | $64 | 100 | テンキー[4] |
75 | VK_NUMPAD5 | $65 | 101 | テンキー[5] |
76 | VK_NUMPAD6 | $66 | 102 | テンキー[6] |
77 | VK_NUMPAD7 | $67 | 103 | テンキー[7] |
78 | VK_NUMPAD8 | $68 | 104 | テンキー[8] |
79 | VK_NUMPAD9 | $69 | 105 | テンキー[9] |
80 | VK_MULTIPLY | $6A | 106 | テンキー[*] |
81 | VK_ADD | $6B | 107 | テンキー[+] |
82 | VK_SEPARATAR | $6C | 108 | |
83 | VK_SUBTRACT | $6D | 109 | テンキー[-] |
84 | VK_DECIMAL | $6E | 110 | |
85 | VK_DIVIDE | $6F | 111 | テンキー[/] |
86 | VK_F1 | $70 | 112 | [F1] |
87 | VK_F2 | $71 | 113 | [F2] |
88 | VK_F3 | $72 | 114 | [F3] |
89 | VK_F4 | $73 | 115 | [F4] |
90 | VK_F5 | $74 | 116 | [F5] |
91 | VK_F6 | $75 | 117 | [F6] |
92 | VK_F7 | $76 | 118 | [F7] |
93 | VK_F8 | $77 | 119 | [F8] |
94 | VK_F9 | $78 | 120 | [F9] |
95 | VK_F10 | $79 | 121 | [F10] |
96 | VK_F11 | $7A | 122 | [F11] |
97 | VK_F12 | $7B | 123 | [F12] |
98 | VK_F13 | $7C | 124 | [F13] |
99 | VK_F14 | $7D | 125 | [F14] |
100 | VK_F15 | $7E | 126 | [F15] |
101 | VK_F16 | $7F | 127 | [F16] |
102 | VK_F17 | $80 | 128 | [F17] |
103 | VK_F18 | $81 | 129 | [F18] |
104 | VK_F19 | $82 | 130 | [F19] |
105 | VK_F20 | $83 | 131 | [F20] |
106 | VK_F21 | $84 | 132 | [F21] |
107 | VK_F22 | $85 | 133 | [F22] |
108 | VK_F23 | $86 | 134 | [F23] |
109 | VK_F24 | $87 | 135 | [F24] |
110 | VK_NUMLOCK | $90 | 144 | [NumLock] |
111 | VK_SCROLL | $91 | 145 | |
112 | VK_LSHIFT | $A0 | 160 | |
113 | VK_RSHIFT | $A1 | 161 | |
114 | VK_LCONTROL | $A2 | 162 | |
115 | VK_RCONTROL | $A3 | 163 | |
116 | VK_LMENU | $A4 | 164 | |
117 | VK_RMENU | $A5 | 165 | |
118 | VK_PROCESSKEY | $E5 | 229 | |
119 | VK_ATTN | $F6 | 246 | |
120 | VK_CRSEL | $F7 | 247 | |
121 | VK_EXSEL | $F8 | 248 | |
122 | VK_EREOF | $F9 | 249 | |
123 | VK_PLAY | $FA | 250 | |
124 | VK_ZOOM | $FB | 251 | |
125 | VK_NOMAME | $FC | 252 | |
126 | VK_PAI | $FD | 253 | |
127 | VK_OEM_CLEAR | $FE | 254 | |
3.キーコードの送信テスト 実際にキーコード表を参照してキーコードを送信して見ましょう。 次のスクリプトを実行して見て下さい。 スクリプトは、HSP言語で作成してあります。
;***** 仮想キーの送信テスト(1) ***** #uselib "user32.dll" #func keybd_event "keybd_event" int,int,int,int #define KEYEVENTF_KEYUP $00000002 ; すべてのウィンドウを最小化 keybd_event 91, 0, 0, 0 keybd_event 77, 0, 0, 0 keybd_event 91, 0, KEYEVENTF_KEYUP, 0 keybd_event 77, 0, KEYEVENTF_KEYUP, 0 stopキーコードを送信するには、user32.dll にあるWindows APIの keybd_event 関数を利用します。
-
VOID keybd_event(
BYTE bVk,
BYTE bScan,
DWORD dwFlags,
ULONG_PTR dwExtraInfo
);
USER32.DLL
設定します。
KEYEVENTF_EXTENDEDKEY の場合は、スキャンコードにプリフィックスバイト 0xE0 (224) を
付加します。
KEYEVENTF_KEYUP の場合は、キーを離す操作にします。指定しなければ、キーを押す操作に
なります。
先程のサンプルの場合は、すべてのウィンドウを最小化するキーコード [ Windowsキー左側 ] + [ M ] を 押すことで 実現されます。それをプログラム側から仮想キーコードの送信ということでエミュレートし ている訳です。それでは、 もうひとつ実験して見ましょう。画面のハードコピーをして見ます。通常、 キーボードからは、[ Print Screen ] キーを 押すとハードコピーが取れます。実際は、クリップボード にコピーされて、貼り付けができるようになるものです。 アクティブウィンドウ画面をコピーする場合は、 同じく、 [ Alt ] + [ Print Screen ] キーとのキーコードの組合せで 画面コピーができます。 スクリプトとしては、先程の 「 すべてのウィンドウを最小化 」 と全く同じです。送信する キーコード の値のみ変更します。
;***** 仮想キーの送信テスト(2) ***** #uselib "user32.dll" #func keybd_event "keybd_event" int,int,int,int #define KEYEVENTF_KEYUP $00000002 ; 画面のハードコピー keybd_event 44, 0, 0, 0 keybd_event 44, 0, KEYEVENTF_KEYUP, 0 stop実行すると一見、何もないように思えますがペイントを起動して、貼り付けをして見ると 画面がコピーされています。 ただ、これだと自分自身が常にアクティブウィンドウになり、 デスクトップ画面等をコピーすることができません。 また、既に多くのアプリを起動している場合は じゃまなので、全てを隠してしまう処置が必要となります。 そこで、一番最初に行なった 「 すべてのウィンドウを最小化 」 する処理を利用します。
;***** 仮想キーの送信テスト(3) ***** #uselib "user32.dll" #func keybd_event "keybd_event" int,int,int,int #define KEYEVENTF_KEYUP $00000002 ; すべてのウィンドウを最小化 keybd_event 91, 0, 0, 0 keybd_event 77, 0, 0, 0 keybd_event 91, 0, KEYEVENTF_KEYUP, 0 keybd_event 77, 0, KEYEVENTF_KEYUP, 0 wait 50 ; 少しタイミングを入れておく ; 画面のハードコピー keybd_event 44, 0, 0, 0 keybd_event 44, 0, KEYEVENTF_KEYUP, 0 stop
4.ソースコード キーコードと文字コードを簡易的に調べるサンプルです。スクリプトエディタから実行して任意のキーを 押すと、対応するキーコード値と文字コード値を画面表示します。 スクリプトは、キー割り込み命令であるonkey命令にて、取得される値を 割り込み要因のシステム変数wparam値とiparam値 で表示しています。
;***** キーコードと文字コードを簡易的に調べる (keycode.hsp) ***** onkey goto *code stop ;***** 押されたキーコードと文字コードを取得・表示 ***** *code cls await mes "キーコード : $"+strf("%02x",wparam)+", 文字コード : $"+strf("%02x",iparam) stop定数定義です。必要に応じてコピーしてエディタに貼り付けて利用して下さい。
#const VK_LBUTTON $01 #const VK_RBUTTON $02 #const VK_CANCEL $03 // Cancel([Ctrl]+[Break]) #const VK_MBUTTON $04 #const VK_BACK $08 // [BackSpace] #const VK_TAB $09 // [Tab] #const VK_CLEAR $0C #const VK_RETURN $0D // [Enter] #const VK_SHIFT $10 // [Shift] #const VK_CONTROL $11 // [Ctrl] #const VK_MENU $12 // [Alt] #const VK_PAUSE $13 // [Pause] #const VK_CAPITAL $14 // [CapsLock] #const VK_ESCAPE $1B // [Esc] #const VK_SPACE $20 // [スペースキー] #const VK_PRIOR $21 // [PageUp] #const VK_NEXT $22 // [PageDown] #const VK_END $23 // [End] #const VK_HOME $24 // [Home] #const VK_LEFT $25 // カーソルキー [←] #const VK_UP $26 // カーソルキー [↑] #const VK_RIGHT $27 // カーソルキー [→] #const VK_DOWN $28 // カーソルキー [↓] #const VK_SELECT $29 #const VK_PRINT $2A #const VK_EXECUTE $2B #const VK_SNAPSHOT $2C // [Print Screen] #const VK_INSERT $2D // [Insert] #const VK_DELETE $2E // [Delete] #const VK_HELP $2F // [Help] #const VK_0 $30 // ASCII Code '0' #const VK_1 $31 // ASCII Code '1' #const VK_2 $32 // ASCII Code '2' #const VK_3 $33 // ASCII Code '3' #const VK_4 $34 // ASCII Code '4' #const VK_5 $35 // ASCII Code '5' #const VK_6 $36 // ASCII Code '6' #const VK_7 $37 // ASCII Code '7' #const VK_8 $38 // ASCII Code '8' #const VK_9 $39 // ASCII Code '9' #const VK_A $41 // ASCII Code 'A' #const VK_B $42 // ASCII Code 'B' #const VK_C $43 // ASCII Code 'C' #const VK_D $44 // ASCII Code 'D' #const VK_E $45 // ASCII Code 'E' #const VK_F $46 // ASCII Code 'F' #const VK_G $47 // ASCII Code 'G' #const VK_H $48 // ASCII Code 'H' #const VK_I $49 // ASCII Code 'I' #const VK_J $4A // ASCII Code 'J' #const VK_K $4B // ASCII Code 'K' #const VK_L $4C // ASCII Code 'L' #const VK_M $4D // ASCII Code 'M' #const VK_N $4E // ASCII Code 'N' #const VK_O $4F // ASCII Code 'O' #const VK_P $50 // ASCII Code 'P' #const VK_Q $51 // ASCII Code 'Q' #const VK_R $52 // ASCII Code 'R' #const VK_S $53 // ASCII Code 'S' #const VK_T $54 // ASCII Code 'T' #const VK_U $55 // ASCII Code 'U' #const VK_V $56 // ASCII Code 'V' #const VK_W $57 // ASCII Code 'W' #const VK_X $58 // ASCII Code 'X' #const VK_Y $59 // ASCII Code 'Y' #const VK_Z $5A // ASCII Code 'Z' #const VK_LWIN $5B // [Windowsキー左側] #const VK_RWIN $5C // [Windowsキー右側] #const VK_APPS $5D #const VK_NUMPAD0 $60 // テンキー[0] #const VK_NUMPAD1 $61 // テンキー[1] #const VK_NUMPAD2 $62 // テンキー[2] #const VK_NUMPAD3 $63 // テンキー[3] #const VK_NUMPAD4 $64 // テンキー[4] #const VK_NUMPAD5 $65 // テンキー[5] #const VK_NUMPAD6 $66 // テンキー[6] #const VK_NUMPAD7 $67 // テンキー[7] #const VK_NUMPAD8 $68 // テンキー[8] #const VK_NUMPAD9 $69 // テンキー[9] #const VK_MULTIPLY $6A // [*] #const VK_ADD $6B // [+] #const VK_SEPARATAR $6C #const VK_SUBTRACT $6D // [-] #const VK_DECIMAL $6E #const VK_DIVIDE $6F // [/] #const VK_F1 $70 // [F1] #const VK_F2 $71 // [F2] #const VK_F3 $72 // [F3] #const VK_F4 $73 // [F4] #const VK_F5 $74 // [F5] #const VK_F6 $75 // [F6] #const VK_F7 $76 // [F7] #const VK_F8 $77 // [F8] #const VK_F9 $78 // [F9] #const VK_F10 $79 // [F10] #const VK_F11 $7A // [F11] #const VK_F12 $7B // [F12] #const VK_F13 $7C // [F13] #const VK_F14 $7D // [F14] #const VK_F15 $7E // [F15] #const VK_F16 $7F // [F16] #const VK_F17 $80 // [F17] #const VK_F18 $81 // [F18] #const VK_F19 $82 // [F19] #const VK_F20 $83 // [F20] #const VK_F21 $84 // [F21] #const VK_F22 $85 // [F22] #const VK_F23 $86 // [F23] #const VK_F24 $87 // [F24] #const VK_NUMLOCK $90 // [NumLock] #const VK_SCROLL $91 #const VK_LSHIFT $A0 #const VK_RSHIFT $A1 #const VK_LCONTROL $A2 #const VK_RCONTROL $A3 #const VK_LMENU $A4 #const VK_RMENU $A5 #const VK_PROCESSKEY $E5 #const VK_ATTN $F6 #const VK_CRSEL $F7 #const VK_EXSEL $F8 #const VK_EREOF $F9 #const VK_PLAY $FA #const VK_ZOOM $FB #const VK_NOMAME $FC #const VK_PAI $FD #const VK_OEM_CLEAR $FE
5.ダウンロード 提供するソースコードのライセンスは、CC0 (クレジット表示不要、改変可、商用可) とします。自由に利用して頂いてかまいません。 尚、データの取得やプログラム実行において損害等が生じた場合は、筆者は一切の責任も負いません。全て自己責任でお願いします。
※今回の記事におけるソースコードや実行形式ファイルのダウンロード提供はありません。
掲載リストをコピーして利用して下さい。実行は、HSPスクリプトエディタにソースコードを貼り付けて実行(F5)して下さい。
コメント
コメントを投稿