キーボードのキーコードの一覧表

1.概要

HSPやExcel VBAなどを利用していて、キーボードのキー定数が知りたい場合があります。その都度、ネットで調べているのが手間なので、 一覧表にして見ました。このキーコードは、Win32API keybd_event関数等を利用して送信することができるコードです。 プログラム上からキーコードを送信する場合は、誤操作防止のため十分なウェイトを入れるなりの工夫が必要です。


2.キーボードのキーコード一覧表

キーボードのキーコード一覧表です。全部で127個あります。

キーボードのキーコード一覧表

No.記号定数名値 ( HEX )値 ( DEC )意味 ( 該当するキー )
1 VK_LBUTTON$0101
2 VK_RBUTTON$0202
3 VK_CANCEL$0303 Cancel([Ctrl]+[Break])
4 VK_MBUTTON$0404
5 VK_BACK$0808 [BackSpace]
6 VK_TAB$0909 [Tab]
7 VK_CLEAR$0C12
8 VK_RETURN$0D13 [Enter]
9 VK_SHIFT$1016 [Shift]
10 VK_CONTROL$1117 [Ctrl]
11 VK_MENU$1218 [Alt]
12 VK_PAUSE$1319 [Pause]
13 VK_CAPITAL$1420 [CapsLock]
14 VK_ESCAPE$1B27 [Esc]
15 VK_SPACE$2032 [スペースキー]
16 VK_PRIOR$2133 [PageUp]
17 VK_NEXT$2234 [PageDown]
18 VK_END$2335 [PageDown]
19 VK_HOME$2436 [Home]
20 VK_LEFT$2537 カーソルキー [←]
21 VK_UP$2638 カーソルキー [↑]
22 VK_RIGHT$2739 カーソルキー [→]
23 VK_DOWN$2840 カーソルキー [↓]
24 VK_SELECT$2941 
25 VK_PRINT$2A42 
26 VK_EXECUTE$2B43 
27 VK_SNAPSHOT$2C44 [Print Screen]
28 VK_INSERT$2D45 [Insert]
29 VK_DELETE$2E46 [Delete]
30 VK_HELP$2F47 [Help]
31 VK_0$3048 ASCII Code '0'
32 VK_1$3149 ASCII Code '1'
33 VK_2$3250 ASCII Code '2'
34 VK_3$3351 ASCII Code '3'
35 VK_4$3452 ASCII Code '4'
36 VK_5$3553 ASCII Code '5'
37 VK_6$3654 ASCII Code '6'
38 VK_7$3755 ASCII Code '7'
39 VK_8$3856 ASCII Code '8'
40 VK_9$3957 ASCII Code '9'
41 VK_A$4165 ASCII Code 'A'
42 VK_B$4266 ASCII Code 'B'
43 VK_C$4367 ASCII Code 'C'
44 VK_D$4468 ASCII Code 'D'
45 VK_E$4569 ASCII Code 'E'
46 VK_F$4670 ASCII Code 'F'
47 VK_G$4771 ASCII Code 'G'
48 VK_H$4872 ASCII Code 'H'
49 VK_I$4973 ASCII Code 'I'
50 VK_J$4A74 ASCII Code 'J'
51 VK_K$4B75 ASCII Code 'K'
52 VK_L$4C76 ASCII Code 'L'
53 VK_M$4D77 ASCII Code 'M'
54 VK_N$4E78 ASCII Code 'N'
55 VK_O$4F79 ASCII Code 'O'
56 VK_P$5080 ASCII Code 'P'
57 VK_Q$5181 ASCII Code 'Q'
58 VK_R$5282 ASCII Code 'R'
59 VK_S$5383 ASCII Code 'S'
60 VK_T$5484 ASCII Code 'T'
61 VK_U$5585 ASCII Code 'U'
62 VK_V$5686 ASCII Code 'V'
63 VK_W$5787 ASCII Code 'W'
64 VK_X$5888 ASCII Code 'X'
65 VK_Y$5989 ASCII Code 'Y'
66 VK_Z$5A90 ASCII Code 'Z'
67 VK_LWIN$5B91 [Windowsキー左側]
68 VK_RWIN$5C92 [Windowsキー右側]
69 VK_APPS$5D93 
70 VK_NUMPAD0$6096 テンキー[0]
71 VK_NUMPAD1$6197 テンキー[1]
72 VK_NUMPAD2$6298 テンキー[2]
73 VK_NUMPAD3$6399 テンキー[3]
74 VK_NUMPAD4$64100 テンキー[4]
75 VK_NUMPAD5$65101 テンキー[5]
76 VK_NUMPAD6$66102 テンキー[6]
77 VK_NUMPAD7$67103 テンキー[7]
78 VK_NUMPAD8$68104 テンキー[8]
79 VK_NUMPAD9$69105 テンキー[9]
80 VK_MULTIPLY$6A106 テンキー[*]
81 VK_ADD$6B107 テンキー[+]
82 VK_SEPARATAR$6C108 
83 VK_SUBTRACT$6D109 テンキー[-]
84 VK_DECIMAL$6E110 
85 VK_DIVIDE$6F111 テンキー[/]
86 VK_F1$70112 [F1]
87 VK_F2$71113 [F2]
88 VK_F3$72114 [F3]
89 VK_F4$73115 [F4]
90 VK_F5$74116 [F5]
91 VK_F6$75117 [F6]
92 VK_F7$76118 [F7]
93 VK_F8$77119 [F8]
94 VK_F9$78120 [F9]
95 VK_F10$79121 [F10]
96 VK_F11$7A122 [F11]
97 VK_F12$7B123 [F12]
98 VK_F13$7C124 [F13]
99 VK_F14$7D125 [F14]
100 VK_F15$7E126 [F15]
101 VK_F16$7F127 [F16]
102 VK_F17$80128 [F17]
103 VK_F18$81129 [F18]
104 VK_F19$82130 [F19]
105 VK_F20$83131 [F20]
106 VK_F21$84132 [F21]
107 VK_F22$85133 [F22]
108 VK_F23$86134 [F23]
109 VK_F24$87135 [F24]
110 VK_NUMLOCK$90144 [NumLock]
111 VK_SCROLL$91145 
112 VK_LSHIFT$A0160 
113 VK_RSHIFT$A1161 
114 VK_LCONTROL$A2162 
115 VK_RCONTROL$A3163 
116 VK_LMENU$A4164 
117 VK_RMENU$A5165 
118 VK_PROCESSKEY$E5229 
119 VK_ATTN$F6246 
120 VK_CRSEL$F7247 
121 VK_EXSEL$F8248 
122 VK_EREOF$F9249 
123 VK_PLAY$FA250 
124 VK_ZOOM$FB251 
125 VK_NOMAME$FC252 
126 VK_PAI$FD253 
127 VK_OEM_CLEAR$FE254 

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
dwFlagsの値は、0x0001 (KEYEVENTF_EXTENDEDKEY) か 0x0002 (KEYEVENTF_KEYUP) の値を
設定します。
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)して下さい。

コメント

このブログの人気の投稿

Excelアドインで日本語形態素解析

階層構造JSONファイルの作成

HSPでコマンドプロンプトを制御する

TOP