キー入力を検出



  キーボードから入力されたキーが何であるかを判定します。
それを実現する標準関数は以下の3つです。

OnKeyDown    :    仮想キーコードを返す(ファンクションキーなどの検出可能)
OnKeyUp      :    仮想キーコードを返す(ファンクションキーなどの検出可能)
OnChar       :    文字コードを返す


【OnKeyDownの書式】
void 任意のクラス::OnKeyDown(UNIT nChar, UNIT nRepCnt, UNIT nFlags);

    nChar     :  指定されたキーの仮想キーコード
    nRepCnt   :  キーを押し続けたときの繰り返し回数
    nFlags    :  スキャンコードやその他のキー情報

「nFlagsの意味」

-----------------------------------------------------------------
|ビット位置 |   意味                                            |
-----------------------------------------------------------------
|  00       |                                                   |
|  01       |                                                   |
|  02       |                                                   |
|  03       | スキャンコード(ハード依存)                       |
|  04       |                                                   |
|  05       |                                                   |
|  06       |                                                   |
|  07       |                                                   |
-----------------------------------------------------------------
|  08       |1:拡張キー(ファンクションキー、テンキー側のキー) |
-----------------------------------------------------------------
|  09       |                                                   |
|  10       | 未使用                                            |
-----------------------------------------------------------------
|  11       |                                                   |
|  12       | Windows内部で使用                                 |
-----------------------------------------------------------------
|  13       | 1:[Alt] + 他キー                                  |
-----------------------------------------------------------------
|  14       | 直前のキー状態                                    |
-----------------------------------------------------------------
|  15       | 1:キーを押している状態、0:キーを離している状態    |
-----------------------------------------------------------------

  OnKeyDown関数はキーボード上のキーが押されたときに呼び出されます。
押されたキー種別はnCharでわかります。ここで渡されるキーコードは
デバイスからの独立性を持つために、あらかじめ用意された仮想キーコード
になります。
  キーボードはあるキーを押し続けると連続入力する機能(オートリピート)
を持っています。オートリピートされている時は、入力としてカウントされた
回数がnRepCntで渡されます。またnFlagsでは、各種の補助情報が渡されます。

オートリピートはnFlagsのビット14で以下の用にチェックできます。

  if(nFlags & 0x4000)

 nRepCntでもチェック出来ますが、繰返し回数の取得が必要ない場合は
こちらの方が便利でしょう。

(注意)尚、この関数はシステムキー([Alt]併用)は受け付けません。
これらの操作は、OnSysKeyDown、OnSysKeyUpで実施します。
また、大文字、小文字の区別はしません。

【OnKeyUpの書式】
void 任意のクラス名::OnKeyUp(UNIT nChar, UNIT nRepCnt, UNIT nFlags);

    nChar    :  入力キーの仮想キーコード
    nRepCnt  :  キーを押し続けたときの繰り返し回数
    nFlags   :  スキャンコードやその他のキー情報(OnKeyDownと同じ)

押されたキーが離されたとき呼び出されます。その他の基本機能はOnKeyDownと同じ。

【OnCharの書式】
void 任意のクラス名::OnChar(UNIT nChar, UNIT nRepCnt, UNIT nFlags);

    nChar    : 入力キーの仮想キーコード
    nRepCnt  : キーを押し続けたときの繰り返し回数
    nFlags   : スキャンコードやその他のキー情報(OnKeyDownと同じ)

  OnChar関数は押された文字の文字コードを返します。
また、大文字、小文字の区別が可能です。
ファンクションキーなどの特殊キーの取得は出来ません。

(備考)これら3関数の呼び出し順序は次の通りです。
          @OnKeyDown
          AOnChar
          BOnKeyUp


【仮想キーコード】
------------------------------------------------
|仮想キーコード  |コード|  対応キー            |
------------------------------------------------
| VK_LBUTTON     | 0x01 |                      |
------------------------------------------------
| VK_RBUTTON     | 0x02 |                      |
------------------------------------------------
| VK_CANCEL      | 0x03 | Ctrl + Break         |
------------------------------------------------
| VK_MBUTTON     | 0x04 |                      |
------------------------------------------------
| VK_BACK        | 0x08 | BackSpace            |
------------------------------------------------
| VK_TAB         | 0x09 | Tab                  |
------------------------------------------------
| VK_CLEAR       | 0x0C | Clear                |
------------------------------------------------
| VK_RETURN      | 0x0D | Enter                |
------------------------------------------------
| VK_SHIFT       | 0x10 | shift                |
------------------------------------------------
| VK_CONTROL     | 0x11 | Ctrl                 |
------------------------------------------------
| VK_MENU        | 0x12 | Alt                  |
------------------------------------------------
| VK_PAUSE       | 0x13 | Pause                |
------------------------------------------------
| VK_CAPITAL     | 0x14 | CapsLock             |
------------------------------------------------
| VK_KANA        | 0x15 |                      |
------------------------------------------------
| VK_JUNJA       | 0x17 |                      |
------------------------------------------------
| VK_FINAL       | 0x18 |                      |
------------------------------------------------
| VK_KANJI       | 0x19 |                      |
------------------------------------------------
| VK_ESCAPE      | 0x1B | Esc                  |
------------------------------------------------
| VK_CONVERT     | 0x1C | 変換                 |
------------------------------------------------
| VK_NONCONVERT  | 0x1D | 無変換               |
------------------------------------------------
| VK_ACCEPT      | 0x1E |                      |
------------------------------------------------
| VK_MODECHANGE  | 0x1F |                      |
------------------------------------------------
| VK_SPACE       | 0x20 | Space                |
------------------------------------------------
| VK_PRIOR       | 0x21 | PageUp               |
------------------------------------------------
| VK_NEXT        | 0x22 | PageDown             |
------------------------------------------------
| VK_END         | 0x23 | End                  |
------------------------------------------------
| VK_HOME        | 0x24 | Home                 |
------------------------------------------------
| VK_LEFT        | 0x25 | ←                   |
------------------------------------------------
| VK_UP          | 0x26 | ↑                   |
------------------------------------------------
| VK_RIGHT       | 0x27 | →                   |
------------------------------------------------
| VK_DOWN        | 0x28 | ↓                   |
------------------------------------------------
| VK_SELECT      | 0x29 |                      |
------------------------------------------------
| VK_PRINT       | 0x2A |                      |
------------------------------------------------
| VK_EXECUTE     | 0x2B |                      |
------------------------------------------------
| VK_SNAPSHOT    | 0x2C | PrintScreen          |
------------------------------------------------
| VK_INSERT      | 0x2D | Insert               |
------------------------------------------------
| VK_DELETE      | 0x2E | Delete               |
------------------------------------------------
| VK_HELP        | 0x2F |                      |
------------------------------------------------
| VK_0           | 0x30 | 0                    |
------------------------------------------------
| VK_1           | 0x31 | 1                    |
------------------------------------------------
| VK_2           | 0x32 | 2                    |
------------------------------------------------
| VK_3           | 0x33 | 3                    |
------------------------------------------------
| VK_4           | 0x34 | 4                    |
------------------------------------------------
| VK_5           | 0x35 | 5                    |
------------------------------------------------
| VK_6           | 0x36 | 6                    |
------------------------------------------------
| VK_7           | 0x37 | 7                    |
------------------------------------------------
| VK_8           | 0x38 | 8                    |
------------------------------------------------
| VK_9           | 0x39 | 9                    |
------------------------------------------------
| VK_A           | 0x41 | A                    |
------------------------------------------------
| VK_B           | 0x42 | B                    |
------------------------------------------------
| VK_C           | 0x43 | C                    |
------------------------------------------------
| VK_D           | 0x44 | D                    |
------------------------------------------------
| VK_E           | 0x45 | E                    |
------------------------------------------------
| VK_F           | 0x46 | F                    |
------------------------------------------------
| VK_G           | 0x47 | G                    |
------------------------------------------------
| VK_H           | 0x48 | H                    |
------------------------------------------------
| VK_I           | 0x49 | I                    |
------------------------------------------------
| VK_J           | 0x4A | J                    |
------------------------------------------------
| VK_K           | 0x4B | K                    |
------------------------------------------------
| VK_L           | 0x4C | L                    |
------------------------------------------------
| VK_M           | 0x4D | M                    |
------------------------------------------------
| VK_N           | 0x4E | N                    |
------------------------------------------------
| VK_O           | 0x4F | O                    |
------------------------------------------------
| VK_P           | 0x50 | P                    |
------------------------------------------------
| VK_Q           | 0x51 | Q                    |
------------------------------------------------
| VK_R           | 0x52 | R                    |
------------------------------------------------
| VK_S           | 0x53 | S                    |
------------------------------------------------
| VK_T           | 0x54 | Y                    |
------------------------------------------------
| VK_U           | 0x55 | U                    |
------------------------------------------------
| VK_V           | 0x56 | V                    |
------------------------------------------------
| VK_W           | 0x57 | W                    |
------------------------------------------------
| VK_X           | 0x58 | X                    |
------------------------------------------------
| VK_Y           | 0x59 | Y                    |
------------------------------------------------
| VK_Z           | 0x5A | Z                    |
------------------------------------------------
| VK_LWIN        | 0x5B | 左Win                |
------------------------------------------------
| VK_RWIN        | 0x5C | 右Win                |
------------------------------------------------
| VK_APPS        | 0x5D | アプリケーションキー |
------------------------------------------------
| VK_NUMPAD0     | 0x60 | テンキー側の0        |
------------------------------------------------
| VK_NUMPAD1     | 0x61 |                      |
------------------------------------------------
| VK_NUMPAD2     | 0x62 |                      |
------------------------------------------------
| VK_NUMPAD3     | 0x63 |                      |
------------------------------------------------
| VK_NUMPAD4     | 0x64 |                      |
------------------------------------------------
| VK_NUMPAD5     | 0x65 |                      |
------------------------------------------------
| VK_NUMPAD6     | 0x66 |                      |
------------------------------------------------
| VK_NUMPAD7     | 0x67 |                      |
------------------------------------------------
| VK_NUMPAD8     | 0x68 |                      |
------------------------------------------------
| VK_NUMPAD9     | 0x69 |                      |
------------------------------------------------
| VK_MULTIPLY    | 0x6A | テンキー側の*        |
------------------------------------------------
| VK_ADD         | 0x6B | テンキー側の+        |
------------------------------------------------
| VK_SEPARATOR   | 0x6C |                      |
------------------------------------------------
| VK_SUBTRACT    | 0x6D | テンキー側の-        |
------------------------------------------------
| VK_DECIMAL     | 0x6E | テンキー側の.        |
------------------------------------------------
| VK_DIVIDE      | 0x6F | テンキー側の/        |
------------------------------------------------
| VK_F1          | 0x70 | F1                   |
------------------------------------------------
| VK_F2          | 0x71 |                      |
------------------------------------------------
| VK_F3          | 0x72 |                      |
------------------------------------------------
| VK_F4          | 0x73 |                      |
------------------------------------------------
| VK_F5          | 0x74 |                      |
------------------------------------------------
| VK_F6          | 0x75 |                      |
------------------------------------------------
| VK_F7          | 0x76 |                      |
------------------------------------------------
| VK_F8          | 0x77 |                      |
------------------------------------------------
| VK_F9          | 0x78 |                      |
------------------------------------------------
| VK_F10         | 0x79 |                      |
------------------------------------------------
| VK_F11         | 0x7A |                      |
------------------------------------------------
| VK_F12         | 0x7B |                      |
------------------------------------------------
| VK_F13         | 0x7C |                      |
------------------------------------------------
| VK_F14         | 0x7D |                      |
------------------------------------------------
| VK_F15         | 0x7E |                      |
------------------------------------------------
| VK_F16         | 0x7F |                      |
------------------------------------------------
| VK_F17         | 0x80 |                      |
------------------------------------------------
| VK_F18         | 0x81 |                      |
------------------------------------------------
| VK_F19         | 0x82 |                      |
------------------------------------------------
| VK_F20         | 0x83 |                      |
------------------------------------------------
| VK_F21         | 0x84 |                      |
------------------------------------------------
| VK_F22         | 0x85 |                      |
------------------------------------------------
| VK_F23         | 0x86 |                      |
------------------------------------------------
| VK_F24         | 0x87 |                      |
------------------------------------------------
| VK_NUMLOCK     | 0x90 | NumLock              |
------------------------------------------------
| VK_SCROLL      | 0x91 | ScrollLock           |
------------------------------------------------
| VK_LSHIFT      | 0xA0 |                      |
------------------------------------------------
| VK_RSHIFT      | 0xA1 |                      |
------------------------------------------------
| VK_LCONTROL    | 0xA2 |                      |
------------------------------------------------
| VK_RCONTROL    | 0xA3 |                      |
------------------------------------------------
| VK_LMENU       | 0xA4 |                      |
------------------------------------------------
| VK_RMENU       | 0xA5 |                      |
------------------------------------------------
| VK_PROCESSKEY  | 0xE5 |                      |
------------------------------------------------
| VK_ATTN        | 0xF6 |                      |
------------------------------------------------
| VK_CRSEL       | 0xF7 |                      |
------------------------------------------------
| VK_EXSEL       | 0xF8 |                      |
------------------------------------------------
| VK_PLAY        | 0xFA |                      |
------------------------------------------------
| VK_ZOOM        | 0xFB |                      |
------------------------------------------------
| VK_NONAME      | 0xFC |                      |
------------------------------------------------
| VK_PA1         | 0xFD |                      |
------------------------------------------------
| VK_OEM_CLEAR   | 0xFE |                      |
------------------------------------------------