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

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
2
3
4
5
6
7
8
9
10
11
12
;***** 仮想キーの送信テスト(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 ] キーとのキーコードの組合せで 画面コピーができます。 スクリプトとしては、先程の 「 すべてのウィンドウを最小化 」 と全く同じです。送信する キーコード の値のみ変更します。
1
2
3
4
5
6
7
8
9
10
;***** 仮想キーの送信テスト(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
実行すると一見、何もないように思えますがペイントを起動して、貼り付けをして見ると 画面がコピーされています。 ただ、これだと自分自身が常にアクティブウィンドウになり、 デスクトップ画面等をコピーすることができません。 また、既に多くのアプリを起動している場合は じゃまなので、全てを隠してしまう処置が必要となります。 そこで、一番最初に行なった 「 すべてのウィンドウを最小化 」 する処理を利用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
;***** 仮想キーの送信テスト(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
1
2
3
4
5
6
7
8
9
10
11
  ;***** キーコードと文字コードを簡易的に調べる  (keycode.hsp) *****
 
  onkey goto *code
  stop
 
  ;***** 押されたキーコードと文字コードを取得・表示 *****
*code
  cls
  await
  mes "キーコード : $"+strf("%02x",wparam)+", 文字コード : $"+strf("%02x",iparam)
  stop
定数定義です。必要に応じてコピーしてエディタに貼り付けて利用して下さい。
keyconst.hsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#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ファイルの作成