MicroShellというライブラリのバッファ編集機能に惹かれて強引にSerialクラスっぽくラップしたもの
https://www.cubeatsystems.com/microshell/index.html 様に感謝 やっつけすぎて申し訳ないが技量が足りない...
core/mscore.h@0:ff53d8f5146a, 2017-10-19 (annotated)
- Committer:
- beingblock
- Date:
- Thu Oct 19 07:39:57 2017 +0000
- Revision:
- 0:ff53d8f5146a
??
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
beingblock | 0:ff53d8f5146a | 1 | /** |
beingblock | 0:ff53d8f5146a | 2 | * @file mscore.h |
beingblock | 0:ff53d8f5146a | 3 | * @author Shinichiro Nakamura (CuBeatSystems) |
beingblock | 0:ff53d8f5146a | 4 | * =============================================================== |
beingblock | 0:ff53d8f5146a | 5 | * MicroShell (Version 0.0.2) |
beingblock | 0:ff53d8f5146a | 6 | * Copyright (c) 2016, 2017 Shinichiro Nakamura (CuBeatSystems) |
beingblock | 0:ff53d8f5146a | 7 | * =============================================================== |
beingblock | 0:ff53d8f5146a | 8 | * The MIT License : https://opensource.org/licenses/MIT |
beingblock | 0:ff53d8f5146a | 9 | * |
beingblock | 0:ff53d8f5146a | 10 | * Copyright (c) 2016, 2017 Shinichiro Nakamura (CuBeatSystems) |
beingblock | 0:ff53d8f5146a | 11 | * |
beingblock | 0:ff53d8f5146a | 12 | * Permission is hereby granted, free of charge, to any person |
beingblock | 0:ff53d8f5146a | 13 | * obtaining a copy of this software and associated documentation |
beingblock | 0:ff53d8f5146a | 14 | * files (the "Software"), to deal in the Software without |
beingblock | 0:ff53d8f5146a | 15 | * restriction, including without limitation the rights to use, |
beingblock | 0:ff53d8f5146a | 16 | * copy, modify, merge, publish, distribute, sublicense, and/or |
beingblock | 0:ff53d8f5146a | 17 | * sell copies of the Software, and to permit persons to whom the |
beingblock | 0:ff53d8f5146a | 18 | * Software is furnished to do so, subject to the following |
beingblock | 0:ff53d8f5146a | 19 | * conditions: |
beingblock | 0:ff53d8f5146a | 20 | * |
beingblock | 0:ff53d8f5146a | 21 | * The above copyright notice and this permission notice shall be |
beingblock | 0:ff53d8f5146a | 22 | * included in all copies or substantial portions of the Software. |
beingblock | 0:ff53d8f5146a | 23 | * |
beingblock | 0:ff53d8f5146a | 24 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
beingblock | 0:ff53d8f5146a | 25 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
beingblock | 0:ff53d8f5146a | 26 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
beingblock | 0:ff53d8f5146a | 27 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
beingblock | 0:ff53d8f5146a | 28 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
beingblock | 0:ff53d8f5146a | 29 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
beingblock | 0:ff53d8f5146a | 30 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
beingblock | 0:ff53d8f5146a | 31 | * OTHER DEALINGS IN THE SOFTWARE. |
beingblock | 0:ff53d8f5146a | 32 | */ |
beingblock | 0:ff53d8f5146a | 33 | |
beingblock | 0:ff53d8f5146a | 34 | #ifndef MSCORE_H |
beingblock | 0:ff53d8f5146a | 35 | #define MSCORE_H |
beingblock | 0:ff53d8f5146a | 36 | |
beingblock | 0:ff53d8f5146a | 37 | #define MSCORE_BUFFER_SIZE (8) |
beingblock | 0:ff53d8f5146a | 38 | #define MSCORE_INITIALIZER() { .keycnt = 0, .keybuf = {0} } |
beingblock | 0:ff53d8f5146a | 39 | |
beingblock | 0:ff53d8f5146a | 40 | typedef enum { |
beingblock | 0:ff53d8f5146a | 41 | MSCORE_ACTION_IGNORE, |
beingblock | 0:ff53d8f5146a | 42 | MSCORE_ACTION_DISPLAYABLE, |
beingblock | 0:ff53d8f5146a | 43 | MSCORE_ACTION_BS, |
beingblock | 0:ff53d8f5146a | 44 | MSCORE_ACTION_DEL, |
beingblock | 0:ff53d8f5146a | 45 | MSCORE_ACTION_TAB, |
beingblock | 0:ff53d8f5146a | 46 | MSCORE_ACTION_INSERT, |
beingblock | 0:ff53d8f5146a | 47 | MSCORE_ACTION_ENTER, |
beingblock | 0:ff53d8f5146a | 48 | MSCORE_ACTION_CTRL_A, |
beingblock | 0:ff53d8f5146a | 49 | MSCORE_ACTION_CTRL_B, |
beingblock | 0:ff53d8f5146a | 50 | MSCORE_ACTION_CTRL_C, |
beingblock | 0:ff53d8f5146a | 51 | MSCORE_ACTION_CTRL_D, |
beingblock | 0:ff53d8f5146a | 52 | MSCORE_ACTION_CTRL_E, |
beingblock | 0:ff53d8f5146a | 53 | MSCORE_ACTION_CTRL_F, |
beingblock | 0:ff53d8f5146a | 54 | MSCORE_ACTION_CTRL_G, |
beingblock | 0:ff53d8f5146a | 55 | MSCORE_ACTION_CTRL_H, |
beingblock | 0:ff53d8f5146a | 56 | MSCORE_ACTION_CTRL_I, |
beingblock | 0:ff53d8f5146a | 57 | MSCORE_ACTION_CTRL_J, |
beingblock | 0:ff53d8f5146a | 58 | MSCORE_ACTION_CTRL_K, |
beingblock | 0:ff53d8f5146a | 59 | MSCORE_ACTION_CTRL_L, |
beingblock | 0:ff53d8f5146a | 60 | MSCORE_ACTION_CTRL_M, |
beingblock | 0:ff53d8f5146a | 61 | MSCORE_ACTION_CTRL_N, |
beingblock | 0:ff53d8f5146a | 62 | MSCORE_ACTION_CTRL_O, |
beingblock | 0:ff53d8f5146a | 63 | MSCORE_ACTION_CTRL_P, |
beingblock | 0:ff53d8f5146a | 64 | MSCORE_ACTION_CTRL_Q, |
beingblock | 0:ff53d8f5146a | 65 | MSCORE_ACTION_CTRL_R, |
beingblock | 0:ff53d8f5146a | 66 | MSCORE_ACTION_CTRL_S, |
beingblock | 0:ff53d8f5146a | 67 | MSCORE_ACTION_CTRL_T, |
beingblock | 0:ff53d8f5146a | 68 | MSCORE_ACTION_CTRL_U, |
beingblock | 0:ff53d8f5146a | 69 | MSCORE_ACTION_CTRL_V, |
beingblock | 0:ff53d8f5146a | 70 | MSCORE_ACTION_CTRL_W, |
beingblock | 0:ff53d8f5146a | 71 | MSCORE_ACTION_CTRL_X, |
beingblock | 0:ff53d8f5146a | 72 | MSCORE_ACTION_CTRL_Y, |
beingblock | 0:ff53d8f5146a | 73 | MSCORE_ACTION_CTRL_Z, |
beingblock | 0:ff53d8f5146a | 74 | MSCORE_ACTION_F1, |
beingblock | 0:ff53d8f5146a | 75 | MSCORE_ACTION_F2, |
beingblock | 0:ff53d8f5146a | 76 | MSCORE_ACTION_F3, |
beingblock | 0:ff53d8f5146a | 77 | MSCORE_ACTION_F4, |
beingblock | 0:ff53d8f5146a | 78 | MSCORE_ACTION_F5, |
beingblock | 0:ff53d8f5146a | 79 | MSCORE_ACTION_F6, |
beingblock | 0:ff53d8f5146a | 80 | MSCORE_ACTION_F7, |
beingblock | 0:ff53d8f5146a | 81 | MSCORE_ACTION_F8, |
beingblock | 0:ff53d8f5146a | 82 | MSCORE_ACTION_F9, |
beingblock | 0:ff53d8f5146a | 83 | MSCORE_ACTION_F10, |
beingblock | 0:ff53d8f5146a | 84 | MSCORE_ACTION_F11, |
beingblock | 0:ff53d8f5146a | 85 | MSCORE_ACTION_F12, |
beingblock | 0:ff53d8f5146a | 86 | MSCORE_ACTION_ARROW_UP, |
beingblock | 0:ff53d8f5146a | 87 | MSCORE_ACTION_ARROW_DOWN, |
beingblock | 0:ff53d8f5146a | 88 | MSCORE_ACTION_ARROW_LEFT, |
beingblock | 0:ff53d8f5146a | 89 | MSCORE_ACTION_ARROW_RIGHT, |
beingblock | 0:ff53d8f5146a | 90 | MSCORE_ACTION_HOME, |
beingblock | 0:ff53d8f5146a | 91 | MSCORE_ACTION_END, |
beingblock | 0:ff53d8f5146a | 92 | MSCORE_ACTION_PAGE_UP, |
beingblock | 0:ff53d8f5146a | 93 | MSCORE_ACTION_PAGE_DOWN, |
beingblock | 0:ff53d8f5146a | 94 | } MSCORE_ACTION; |
beingblock | 0:ff53d8f5146a | 95 | |
beingblock | 0:ff53d8f5146a | 96 | typedef struct { |
beingblock | 0:ff53d8f5146a | 97 | int keycnt; |
beingblock | 0:ff53d8f5146a | 98 | char keybuf[MSCORE_BUFFER_SIZE]; |
beingblock | 0:ff53d8f5146a | 99 | } MSCORE; |
beingblock | 0:ff53d8f5146a | 100 | |
beingblock | 0:ff53d8f5146a | 101 | #ifdef __cplusplus |
beingblock | 0:ff53d8f5146a | 102 | extern "C" { |
beingblock | 0:ff53d8f5146a | 103 | #endif |
beingblock | 0:ff53d8f5146a | 104 | |
beingblock | 0:ff53d8f5146a | 105 | void mscore_init(MSCORE *handle); |
beingblock | 0:ff53d8f5146a | 106 | MSCORE_ACTION mscore_push(MSCORE *handle, char c); |
beingblock | 0:ff53d8f5146a | 107 | |
beingblock | 0:ff53d8f5146a | 108 | #ifdef __cplusplus |
beingblock | 0:ff53d8f5146a | 109 | } |
beingblock | 0:ff53d8f5146a | 110 | #endif |
beingblock | 0:ff53d8f5146a | 111 | |
beingblock | 0:ff53d8f5146a | 112 | #endif |
beingblock | 0:ff53d8f5146a | 113 |