Annotation of nono/vm/keyboard.h, revision 1.1.1.4

1.1       root        1: //
                      2: // nono
1.1.1.4 ! root        3: // Copyright (C) 2020 nono project
        !             4: // Licensed under nono-license.txt
1.1       root        5: //
                      6: 
                      7: #pragma once
                      8: 
                      9: #include "device.h"
                     10: 
                     11: class Keyboard : public Device
                     12: {
1.1.1.4 ! root       13:        using inherited = Device;
1.1       root       14:  protected:
                     15:        Keyboard();
                     16:  public:
1.1.1.4 ! root       17:        ~Keyboard() override;
1.1       root       18: 
                     19:        // キーを押した
                     20:        virtual void MakeKey(uint) = 0;
                     21:        // キーを離した
                     22:        virtual void BreakKey(uint) = 0;
                     23: 
1.1.1.2   root       24:        // マウス入力
                     25:        // x, y は X, Y の前回からの移動量。
                     26:        // X は画面右に動く方向をプラス、Y は画面下に動く方向をプラスとする。
                     27:        // 移動量が VM で扱える範囲内か、それを越えていたらどうするかは
                     28:        // 継承クラスが処理する。
                     29:        // rb, lb, mb はボタンの状態。true なら押下中。
                     30:        virtual void MouseInput(int x, int y, bool rb, bool lb, bool mb) = 0;
                     31: 
1.1.1.4 ! root       32:        // ホストからの制御コマンド
        !            33:        virtual void Command(uint32 data) = 0;
        !            34: 
        !            35:        // LED 状態取得 (ソフトウェアキーボードなどから)
        !            36:        const std::vector<bool>& GetLED() const { return led; }
        !            37: 
1.1       root       38:        // キー名を返す (主にデバッグ表示用)
                     39:        static const std::string GetName(uint code);
                     40: 
1.1.1.4 ! root       41:  protected:
        !            42:        // LED (true で点灯)。
        !            43:        // GetLED() あたりが同じ形式で済むのでここにあるけど、機種によって
        !            44:        // LED 数が違うので、何番がどのキーに対応するかの取り決めや、初期化も
        !            45:        // 含めたコードはすべて派生クラス側で用意すること。
        !            46:        std::vector<bool> led {};
        !            47: 
1.1       root       48:  private:
                     49:        static std::vector<const char *> keyname;
                     50: };
                     51: 
1.1.1.3   root       52: extern std::unique_ptr<Keyboard> gKeyboard;
1.1       root       53: 
                     54: // 抽象化キーボードレイヤーでのキーコード。
                     55: // wxWidgets で受け取ったキーコードをこれに変換して VM に入力する。
                     56: // VM のキーボードデバイスがこれを当該機種ごとのキーコードなり何なりに
                     57: // 変換して入力する。
                     58: 
                     59: #define KC_none                        (0)
                     60: 
                     61: #define KC_BREAK               (0x01)  // [X68k] BREAK
                     62: #define KC_COPY                        (0x02)  // [X68k] COPY
                     63: #define KC_romaji              (0x03)  // [X68k] ローマ字
                     64: #define KC_code                        (0x04)  // [X68k] コード入力
                     65: #define KC_kigou               (0x05)  // [X68k] 記号入力
                     66: #define KC_touroku             (0x06)  // [X68k] 登録
                     67: #define KC_HELP                        (0x07)  // [X68k] HELP
                     68: #define KC_HOME                        (0x08)  // [X68k] HOME
                     69: #define KC_TAB                 (0x09)
                     70: #define KC_CTRL                        (0x0a)
                     71: #define KC_kana                        (0x0b)  // かな
                     72: #define KC_SHIFT_L             (0x0c)  // SHIFT(左)
                     73: #define KC_SHIFT_R             (0x0d)  // SHIFT(右)
                     74: #define KC_SHIFT               KC_SHIRT_L              // 区別がない場合は L のほうを使う
                     75: #define KC_CAPS                        (0x0e)
                     76: #define KC_SF                  (0x0f)  // [LUNA] S.F
                     77: 
                     78: #define KC_ESC                 (0x10)
                     79: #define KC_BS                  (0x11)  // BackSpace
                     80: #define KC_enter               (0x12)  // Enter (Return)
                     81: #define KC_INS                 (0x13)  // [X68k] INS
                     82: #define KC_space               (0x14)
                     83: #define KC_DEL                 (0x15)
                     84: #define KC_XFER                        (0x16)  // [LUNA] XFER
                     85: #define KC_VALID               (0x17)  // [LUNA] VALID
                     86: #define KC_PF11                        (0x18)  // [LUNA] PF11
                     87: #define KC_PF12                        (0x19)  // [LUNA] PF12
                     88: #define KC_PF13                        (0x1a)  // [LUNA] PF13
                     89: #define KC_PF14                        (0x1b)  // [LUNA] PF14
                     90: #define KC_up                  (0x1c)  // cursor up
                     91: #define KC_left                        (0x1d)  // cursor left
                     92: #define KC_right               (0x1e)  // cursor right
                     93: #define KC_down                        (0x1f)  // cursor down
                     94: 
                     95: #define KC_ROLLUP              (0x20)  // [X68k] ROLL UP
                     96: #define KC_ROLLDOWN            (0x21)  // [X68k] ROLL DOWN
                     97: #define KC_1                   (0x22)
                     98: #define KC_2                   (0x23)
                     99: #define KC_3                   (0x24)
                    100: #define KC_4                   (0x25)
                    101: #define KC_5                   (0x26)
                    102: #define KC_6                   (0x27)
                    103: #define KC_7                   (0x28)
                    104: #define KC_8                   (0x29)
                    105: #define KC_9                   (0x2a)
                    106: #define KC_0                   (0x2b)
                    107: #define KC_minus               (0x2c)
                    108: #define KC_circum              (0x2d)  // ^~
                    109: #define KC_backslash   (0x2e)  // \|
                    110: #define KC_UNDO                        (0x2f)  // [X68k] UNDO
                    111: 
                    112: #define KC_OPT1                        (0x30)  // [X68k] OPT.1
                    113: #define KC_OPT2                        (0x31)  // [X68k] OPT.2
                    114: #define KC_Q                   (0x32)
                    115: #define KC_W                   (0x33)
                    116: #define KC_E                   (0x34)
                    117: #define KC_R                   (0x35)
                    118: #define KC_T                   (0x36)
                    119: #define KC_Y                   (0x37)
                    120: #define KC_U                   (0x38)
                    121: #define KC_I                   (0x39)
                    122: #define KC_O                   (0x3a)
                    123: #define KC_P                   (0x3b)
                    124: #define KC_at                  (0x3c)
                    125: #define KC_bracketleft (0x3d)  // '['
                    126: #define KC_hira                        (0x3e)  // [X68k] ひらがな
                    127: #define KC_zenkaku             (0x3f)  // [X68k] 全角
                    128: 
                    129: #define KC_A                   (0x42)
                    130: #define KC_S                   (0x43)
                    131: #define KC_D                   (0x44)
                    132: #define KC_F                   (0x45)
                    133: #define KC_G                   (0x46)
                    134: #define KC_H                   (0x47)
                    135: #define KC_J                   (0x48)
                    136: #define KC_K                   (0x49)
                    137: #define KC_L                   (0x4a)
                    138: #define KC_semicolon   (0x4b)
                    139: #define KC_colon               (0x4c)
                    140: #define KC_bracketright        (0x4d)  // ']'
                    141: 
                    142: #define KC_Z                   (0x52)
                    143: #define KC_X                   (0x53)
                    144: #define KC_C                   (0x54)
                    145: #define KC_V                   (0x55)
                    146: #define KC_B                   (0x56)
                    147: #define KC_N                   (0x57)
                    148: #define KC_M                   (0x58)
                    149: #define KC_comma               (0x59)
                    150: #define KC_period              (0x5a)
                    151: #define KC_slash               (0x5b)
                    152: #define KC_underscore  (0x5c)
                    153: 
                    154: #define KC_PAD_plus            (0x61)
                    155: #define KC_PAD_minus   (0x62)
                    156: #define KC_PAD_7               (0x63)
                    157: #define KC_PAD_8               (0x64)
                    158: #define KC_PAD_9               (0x65)
                    159: #define KC_PAD_4               (0x66)
                    160: #define KC_PAD_5               (0x67)
                    161: #define KC_PAD_6               (0x68)
                    162: #define KC_PAD_1               (0x69)
                    163: #define KC_PAD_2               (0x6a)
                    164: #define KC_PAD_3               (0x6b)
                    165: #define KC_PAD_0               (0x6c)
                    166: #define KC_PAD_decimal (0x6d)  // .
                    167: #define KC_PAD_enter   (0x6e)
                    168: #define KC_PAD_CLR             (0x6f)  // [X68k] CLR
                    169: 
                    170: #define KC_F1                  (0x72)
                    171: #define KC_F2                  (0x73)
                    172: #define KC_F3                  (0x74)
                    173: #define KC_F4                  (0x75)
                    174: #define KC_F5                  (0x76)
                    175: #define KC_F6                  (0x77)
                    176: #define KC_F7                  (0x78)
                    177: #define KC_F8                  (0x79)
                    178: #define KC_F9                  (0x7a)
                    179: #define KC_F10                 (0x7b)
                    180: #define KC_PAD_multiply        (0x7c)
                    181: #define KC_PAD_divide  (0x7d)
                    182: #define KC_PAD_equal   (0x7e)
                    183: #define KC_PAD_comma   (0x7f)
                    184: 
                    185: #define KC_XF1                 (0x80)  // [X68k] XF1
                    186: #define KC_XF2                 (0x81)  // [X68k] XF2
                    187: #define KC_XF3                 (0x82)  // [X68k] XF3
                    188: #define KC_XF4                 (0x83)  // [X68k] XF4
                    189: #define KC_XF5                 (0x84)  // [X68k] XF5
                    190: 
                    191: #define KC_max                 (0x85)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.