From 0ba921f2ce2565611f4069fcdf20148a8a9f9882 Mon Sep 17 00:00:00 2001 From: David Fenyes Date: Sat, 21 Mar 2020 11:53:51 -0500 Subject: [PATCH] Added SOL-20 keymap - Add Keymaps/asdf_keymap_defs_sol.h, and add the hooks in the master keymap - asdf.h: Change start of ACTION codes to 0xA0, since SOL-20 uses codes from 0x80-0x9a - asdf_ascii.h: Add named ASCII control codes to --- .../Keymaps/asdf_all_keymap_defs_production.h | 20 +- .../asdf/src/Keymaps/asdf_keymap_defs_sol.h | 283 ++++++++++++++++++ firmware/asdf/src/asdf.h | 2 +- firmware/asdf/src/asdf_ascii.h | 58 +++- 4 files changed, 344 insertions(+), 19 deletions(-) create mode 100644 firmware/asdf/src/Keymaps/asdf_keymap_defs_sol.h diff --git a/firmware/asdf/src/Keymaps/asdf_all_keymap_defs_production.h b/firmware/asdf/src/Keymaps/asdf_all_keymap_defs_production.h index ca0a3f8..dcd0497 100644 --- a/firmware/asdf/src/Keymaps/asdf_all_keymap_defs_production.h +++ b/firmware/asdf/src/Keymaps/asdf_all_keymap_defs_production.h @@ -37,17 +37,27 @@ #include "Keymaps/asdf_keymap_defs_ascii.h" #include "Keymaps/asdf_keymap_defs_apple2.h" +#include "Keymaps/asdf_keymap_defs_sol.h" -#define ASDF_NUM_KEYMAPS (ASDF_ASCII_ALL_MAPS_COUNT + ASDF_APPLE2_ALL_MAPS_COUNT) -#define ASDF_KEYMAP_DEFS { ASDF_ASCII_ALL_MAPS , ASDF_APPLE2_ALL_MAPS } -#define ASDF_KEYMAP_DECLARATIONS ASDF_ASCII_MAP_DECLARATIONS ASDF_APPLE2_MAP_DECLARATIONS +#define ASDF_NUM_KEYMAPS \ + (ASDF_ASCII_ALL_MAPS_COUNT + ASDF_APPLE2_ALL_MAPS_COUNT + ASDF_SOL_ALL_MAPS_COUNT) -#define ASDF_KEYMAP_INITIALIZERS { ASDF_ASCII_KEYMAP_INITIALIZER , ASDF_APPLE2_KEYMAP_INITIALIZER } +#define ASDF_KEYMAP_DEFS \ + { \ + ASDF_ASCII_ALL_MAPS, ASDF_APPLE2_ALL_MAPS, ASDF_SOL_ALL_MAPS \ + } + +#define ASDF_KEYMAP_DECLARATIONS \ + ASDF_ASCII_MAP_DECLARATIONS ASDF_APPLE2_MAP_DECLARATIONS ASDF_SOL_MAP_DECLARATIONS + +#define ASDF_KEYMAP_INITIALIZERS \ + { \ + ASDF_ASCII_KEYMAP_INITIALIZER, ASDF_APPLE2_KEYMAP_INITIALIZER, ASDF_SOL_KEYMAP_INITIALIZER \ + } typedef asdf_keycode_t keycode_matrix_t[ASDF_NUM_ROWS][ASDF_NUM_COLS]; - #endif /* !defined (ASDF_KEYMAP_DEFS_H) */ //-------|---------|---------+---------+---------+---------+---------+---------+ diff --git a/firmware/asdf/src/Keymaps/asdf_keymap_defs_sol.h b/firmware/asdf/src/Keymaps/asdf_keymap_defs_sol.h new file mode 100644 index 0000000..42572ca --- /dev/null +++ b/firmware/asdf/src/Keymaps/asdf_keymap_defs_sol.h @@ -0,0 +1,283 @@ +// -*- mode: C; tab-width: 4 ; indent-tabs-mode: nil -*- +// +// Unfified Keyboard Project +// ASDF keyboard firmware +// +// asdf_keymaps_sol.h +// +// Ascii keymaps +// +// Copyright 2019 David Fenyes +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program. If not, see . + + +// To use this ascii for a new keymap, edit the keymaps definitions as +// desired. The keymaps are organized from row 0, counting upward, and each row +// includes the columns from 0-NUM_COLS. +// + +#if !defined(ASDF_KEYMAP_DEFS_SOL20_H) +#define ASDF_KEYMAP_DEFS_SOL20_H + +// Edit the number of rows and columns used in this map. If the number is less +// than the maxium, the unused elements will be initialized to 0. + +#define ASDF_SOL_NUM_ROWS 13 // DIP switches are row 9 +#define ASDF_SOL_NUM_COLS 8 + + +// Key Matrix for combination of ASCII controller (ATMega328P version) and Classic ASCII matrix +// +// Col-> 0 1 2 3 4 5 6 7 +// Row 0 Lt Ctrl ShiftLock A S D F G(alpha) H +// Row 1 J K L ;(semi) :(colon) DEL Repeat Rt Ctrl +// Row 2 UpperCase Lt Shift Z X C V B(alpha) N +// Row 3 M ,(comma) .(period) /(slash) Rt Shift ModeSelect +// Row 4 ESC 1 2 3 4 5 6(six) 7 +// Row 5 8(eight) 9 0(zero) -(Dash) ^(Caret) [ \ ] +// Row 6 BREAK TAB Q W E R T Y +// Row 7 U I O(alpha) P @(at) Return LineFeed Load +// Row 9 LOCAL UpArrow LtArrow Spacebar RtArrow DnArrow Home Clear +// Row 10 NP-Minus NP-7 NP-Times NP-8 NP-Divide NP-9 (none) (none) +// Row 11 NP-4 NP-1 NP-5 NP-2 NP-6 NP-3 (none) (none) +// Row 12 NP-0 NP-period NP-Plus +// +// Row 8 DIP switches 0-7 +// +// Physical Resource mapping: +// LED1: UPPER CASE +// LED2: LOCAL +// LED3: SHIFT LOCK +// OUT1: RESET +// OUT2: BREAK +// OUT3: LOCAL + +// Notes: +// +// 1) To ensure consistent DIP switch operation within the keymap, a +// ASDF_SOL_DIP_SWITCHES macro is defined. Keeping the ACTION_MAPSEL0-3 +// definitions in positions 0-3 ensures consistent map selection among all +// keymaps. + + +#define SOL_KBD_VRESET VOUT2 +#define SOL_KBD_VBREAK VOUT3 +#define SOL_KBD_VLOCAL VOUT4 +#define SOL_KBD_LED_ON 1 +#define SOL_KBD_LED_OFF 0 + +// The SOL manual (sec. 7.7.8) indicates shiftlock locks SHIFT on, and SHIFT +// returns to unshifted. For Toggle behavior, change to ACTION_SHIFTLOCK_TOGGLE. +#define SOL_KBD_SHIFTLOCK ACTION_SHIFTLOCK_ON + +#define SOL_ASCII_LOAD 0x8C +#define SOL_ASCII_MODE_SELECT 0x80 +#define SOL_ASCII_UP_ARROW 0x97 +#define SOL_ASCII_LT_ARROW 0x81 +#define SOL_ASCII_RT_ARROW 0x93 +#define SOL_ASCII_DN_ARROW 0x9a +#define SOL_ASCII_HOME 0x8e +#define SOL_ASCII_CLEAR 0x8b + +#define SOL_KBD_TTL_HIGH 1 +#define SOL_KBD_TTL_LOW 0 + +#define SOL_KBD_LED_UPPERCASE PHYSICAL_LED1 +#define SOL_KBD_LED_LOCAL PHYSICAL_LED2 +#define SOL_KBD_LED_SHIFTLOCK PHYSICAL_LED3 +#define SOL_KBD_TTLOUT_RESET PHYSICAL_OUT1_OPEN_HI // Emulate open collector output. +#define SOL_KBD_TTLOUT_BREAK PHYSICAL_OUT2 +#define SOL_KBD_TTLOUT_LOCAL PHYSICAL_OUT3 + +#define ASDF_SOL_KEYMAP_INITIALIZER_LENGTH 6 + +// Notice that TTLOUT_LOCAL (OUT3) and LED_LOCAL (PHYSICAL_LED2) are both bound +// to the VLOCAL_OUT virtual device. +#define ASDF_SOL_KEYMAP_INITIALIZER \ + { \ + { .virtual_device = VCAPS_LED, \ + .physical_device = SOL_KBD_LED_UPPERCASE, \ + .initial_value = SOL_KBD_LED_ON }, \ + { .virtual_device = VSHIFT_LED, \ + .physical_device = SOL_KBD_LED_SHIFTLOCK, \ + .initial_value = SOL_KBD_LED_OFF }, \ + { .virtual_device = SOL_KBD_VLOCAL, \ + .physical_device = SOL_KBD_TTLOUT_LOCAL, \ + .function = V_TOGGLE, \ + .initial_value = SOL_KBD_TTL_HIGH }, \ + { .virtual_device = SOL_KBD_VLOCAL, \ + .physical_device = SOL_KBD_LED_LOCAL, \ + .function = V_TOGGLE, \ + .initial_value = SOL_KBD_LED_OFF }, \ + { .virtual_device = SOL_KBD_VRESET, \ + .physical_device = SOL_KBD_TTLOUT_RESET, \ + .function = V_PULSE_SHORT, \ + .initial_value = SOL_KBD_TTL_HIGH }, \ + { .virtual_device = SOL_KBD_VBREAK, \ + .physical_device = SOL_KBD_TTLOUT_BREAK, \ + .function = V_PULSE_LONG, \ + .initial_value = SOL_KBD_TTL_HIGH }, \ + } + +#define DIP_SWITCH_ROW 8 + +#define ASDF_SOL_DIP_SWITCHES \ + [DIP_SWITCH_ROW] = { ACTION_MAPSEL_0, ACTION_MAPSEL_1, ACTION_MAPSEL_2, ACTION_MAPSEL_3 } + +// clang-format off +#define ASDF_SOL_PLAIN_MAP \ + { \ + [0] = { ACTION_CTRL, SOL_KBD_SHIFTLOCK, 'a', 's', 'd', 'f', 'g', 'h' }, \ + [1] = { 'j', 'k', 'l', ';', ':', ASCII_DEL, ACTION_REPEAT, ACTION_CTRL }, \ + [2] = { ACTION_CAPS, ACTION_SHIFT, 'z', 'x', 'c', 'v', 'b', 'n' }, \ + [3] = { 'm', ASCII_COMMA, ASCII_PERIOD, '/', \ + ACTION_SHIFT, SOL_ASCII_MODE_SELECT, ACTION_NOTHING, ACTION_NOTHING }, \ + [4] = { ASCII_ESC, '1', '2', '3', '4', '5', '6', '7' }, /**/ \ + [5] = { '8', '9', ASCII_ZERO, '-', '^', \ + ASCII_LT_SQUARE_BRACE, ASCII_BACKSLASH, ASCII_RT_SQUARE_BRACE }, \ + [6] = { SOL_KBD_VBREAK, ASCII_TAB, 'q', 'w', 'e', 'r', 't', 'y' }, /**/ \ + [7] = { 'u', 'i', 'o', 'p', ASCII_AT, ASCII_CR, ASCII_LF, SOL_ASCII_LOAD }, \ + [9] = { SOL_KBD_VLOCAL, SOL_ASCII_UP_ARROW, SOL_ASCII_LT_ARROW, \ + ASCII_SPACE, SOL_ASCII_RT_ARROW, SOL_ASCII_DN_ARROW, \ + SOL_ASCII_HOME, SOL_ASCII_CLEAR }, \ + [10] = { '-', '7', '*', '8', '/', '9', ACTION_NOTHING, ACTION_NOTHING }, \ + [11] = { '4', '1', '5', '2', '6', '3', ACTION_NOTHING, ACTION_NOTHING }, \ + [12] = { '0', ASCII_PERIOD, '+', ACTION_NOTHING, \ + ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING }, \ + ASDF_SOL_DIP_SWITCHES, \ + } + +#define ASDF_SOL_CAPS_MAP \ + { \ + [0] = { ACTION_CTRL, SOL_KBD_SHIFTLOCK, 'A', 'S', 'D', 'F', 'G', 'H' }, \ + [1] = { 'J', 'K', 'L', ';', ':', ASCII_DEL, ACTION_REPEAT, ACTION_CTRL }, \ + [2] = { ACTION_CAPS, ACTION_SHIFT, 'Z', 'X', 'C', 'V', 'B', 'N' }, \ + [3] = { 'M', ASCII_COMMA, ASCII_PERIOD, '/', \ + ACTION_SHIFT, SOL_ASCII_MODE_SELECT, ACTION_NOTHING, ACTION_NOTHING }, \ + [4] = { ASCII_ESC, '1', '2', '3', '4', '5', '6', '7' }, /**/ \ + [5] = { '8', '9', ASCII_ZERO, '-', '^', \ + ASCII_LT_SQUARE_BRACE, ASCII_BACKSLASH, ASCII_RT_SQUARE_BRACE }, \ + [6] = { SOL_KBD_VBREAK, ASCII_TAB, 'Q', 'W', 'E', 'R', 'T', 'Y' }, /**/ \ + [7] = { 'U', 'I', 'O', 'P', ASCII_AT, ASCII_CR, ASCII_LF, SOL_ASCII_LOAD }, \ + [9] = { SOL_KBD_VLOCAL, SOL_ASCII_UP_ARROW, SOL_ASCII_LT_ARROW, \ + ASCII_SPACE, SOL_ASCII_RT_ARROW, SOL_ASCII_DN_ARROW, \ + SOL_ASCII_HOME, SOL_ASCII_CLEAR }, \ + [10] = { '-', '7', '*', '8', '/', '9', ACTION_NOTHING, ACTION_NOTHING }, \ + [11] = { '4', '1', '5', '2', '6', '3', ACTION_NOTHING, ACTION_NOTHING }, \ + [12] = { '0', ASCII_PERIOD, '+', ACTION_NOTHING, \ + ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING }, \ + ASDF_SOL_DIP_SWITCHES, \ + } + +#define ASDF_SOL_SHIFT_MAP \ + { \ + [0] = { ACTION_CTRL, SOL_KBD_SHIFTLOCK, 'A', 'S', 'D', 'F', 'G', 'H' }, \ + [1] = { 'J', 'K', 'L', ';', ':', ASCII_UNDERSCORE, ACTION_REPEAT, ACTION_CTRL }, \ + [2] = { ACTION_CAPS, ACTION_SHIFT, 'Z', 'X', 'C', 'V', 'B', 'N' }, \ + [3] = { 'M', '<', '>', '?', \ + ACTION_SHIFT, SOL_ASCII_MODE_SELECT, ACTION_NOTHING, ACTION_NOTHING }, \ + [4] = { ASCII_ESC, '!', ASCII_DOUBLE_QUOTE, '#', '$', '%', '&', ASCII_SINGLE_QUOTE }, \ + [5] = { ASCII_LT_PAREN, ASCII_RT_PAREN, ASCII_SPACE, '=', ASCII_TILDE, \ + ASCII_LT_SQUARE_BRACE, ASCII_BACKSLASH, ASCII_RT_SQUARE_BRACE }, \ + [6] = { SOL_KBD_VBREAK, ASCII_TAB, 'Q', 'W', 'E', 'R', 'T', 'Y' }, \ + [7] = { 'U', 'I', 'O', 'P', ASCII_GRAVE_ACCENT, ASCII_CR, ASCII_LF, SOL_ASCII_LOAD }, \ + [9] = { SOL_KBD_VLOCAL, SOL_ASCII_UP_ARROW, SOL_ASCII_LT_ARROW, \ + ASCII_SPACE, SOL_ASCII_RT_ARROW, SOL_ASCII_DN_ARROW, \ + SOL_ASCII_HOME, SOL_ASCII_CLEAR }, \ + [10] = { '-', '7', '*', '8', '/', '9', ACTION_NOTHING, ACTION_NOTHING }, \ + [11] = { '4', '1', '5', '2', '6', '3', ACTION_NOTHING, ACTION_NOTHING }, \ + [12] = { '0', ASCII_PERIOD, '+', ACTION_NOTHING, \ + ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING }, \ + ASDF_SOL_DIP_SWITCHES, \ + } + +#define ASDF_SOL_CTRL_MAP \ + { \ + [0] = { ACTION_CTRL, SOL_KBD_SHIFTLOCK, ASCII_CTRL_A, ASCII_CTRL_S, \ + ASCII_CTRL_D, ASCII_CTRL_F, ASCII_CTRL_G, ASCII_CTRL_H }, \ + [1] = { ASCII_CTRL_J, ASCII_CTRL_K, ASCII_CTRL_L, ASCII_VT, \ + ASCII_LF, ASCII_DEL, ACTION_REPEAT, ACTION_CTRL }, \ + [2] = { ACTION_CAPS, ACTION_SHIFT, ASCII_CTRL_Z, ASCII_CTRL_X, \ + ASCII_CTRL_C, ASCII_CTRL_V, ASCII_CTRL_B, ASCII_CTRL_N }, \ + [3] = { ASCII_CTRL_M, ASCII_FF, ASCII_SO, ASCII_SI, \ + ACTION_SHIFT, SOL_ASCII_MODE_SELECT, ACTION_NOTHING, ACTION_NOTHING }, \ + [4] = { ASCII_ESC, ASCII_SOH, ASCII_STX, ASCII_ETX, \ + ASCII_EOT, ASCII_ENQ, ASCII_ACK, ASCII_BEL }, \ + [5] = { ASCII_BS, ASCII_TAB, ASCII_NULL, ASCII_CR, ASCII_RS, \ + ASCII_ESC, ASCII_FS, ASCII_GS }, \ + [6] = { SOL_KBD_VBREAK, ASCII_TAB, ASCII_CTRL_Q, ASCII_CTRL_W, \ + ASCII_CTRL_E, ASCII_CTRL_R, ASCII_CTRL_T, ASCII_CTRL_Y }, \ + [7] = { ASCII_CTRL_U, ASCII_CTRL_I, ASCII_CTRL_O, ASCII_CTRL_P, \ + ASCII_NULL, ASCII_CR, ASCII_LF, SOL_ASCII_LOAD }, \ + [9] = { SOL_KBD_VLOCAL, SOL_ASCII_UP_ARROW, SOL_ASCII_LT_ARROW, \ + ASCII_SPACE, SOL_ASCII_RT_ARROW, SOL_ASCII_DN_ARROW, \ + SOL_ASCII_HOME, SOL_ASCII_CLEAR }, \ + [10] = { '-', '7', '*', '8', '/', '9', ACTION_NOTHING, ACTION_NOTHING }, \ + [11] = { '4', '1', '5', '2', '6', '3', ACTION_NOTHING, ACTION_NOTHING }, \ + [12] = { '0', ASCII_PERIOD, '+', ACTION_NOTHING, \ + ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING }, \ + ASDF_SOL_DIP_SWITCHES, \ + } + +// clang-format on + +#define ASDF_SOL_MAP_DECLARATIONS \ + static const FLASH keycode_matrix_t asdf_sol_plain_matrix = ASDF_SOL_PLAIN_MAP; \ + static const FLASH keycode_matrix_t asdf_sol_shift_matrix = ASDF_SOL_SHIFT_MAP; \ + static const FLASH keycode_matrix_t asdf_sol_caps_matrix = ASDF_SOL_CAPS_MAP; \ + static const FLASH keycode_matrix_t asdf_sol_ctrl_matrix = ASDF_SOL_CTRL_MAP; + + +// Here, you can specify which maps are associated with which modifier keys. +// There can be multiple definitions. For example, as shown here, an ALL CAPS +// keymap can be made by assigning the caps map to the "no modifier" position. +// Or, more additional keymaps can be defined above, and keymap sets can be +// defined below that pick and choose between them. The modifiers are assigned as follows: +// +// [0]: plain (no modifiers) +// [1]: shift (shift key or shift lock active) +// [2]: caps (caps lock active) +// [3]: ctrl: (control key active) + +#define ASDF_SOL_MAP_DEFS \ + { \ + [MOD_PLAIN_MAP] = &asdf_sol_plain_matrix, [MOD_SHIFT_MAP] = &asdf_sol_shift_matrix, \ + [MOD_CAPS_MAP] = &asdf_sol_caps_matrix, [MOD_CTRL_MAP] = &asdf_sol_ctrl_matrix \ + } + +#define ASDF_SOL_ALL_MAPS ASDF_SOL_MAP_DEFS + +#define ASDF_SOL_ALL_MAPS_COUNT 1 + +#if !defined(ASDF_NUM_ROWS) || (ASDF_NUM_ROWS < ASDF_SOL_NUM_ROWS) +#undef ASDF_NUM_ROWS +#define ASDF_NUM_ROWS ASDF_SOL_NUM_ROWS +#endif + +#if !defined(ASDF_NUM_COLS) || (ASDF_NUM_COLS < ASDF_SOL_NUM_COLS) +#undef ASDF_NUM_COLS +#define ASDF_NUM_COLS ASDF_SOL_NUM_COLS +#endif + +#if !defined(ASDF_KEYMAP_INITIALIZER_LENGTH) \ + || (ASDF_KEYMAP_INITIALIZER_LENGTH < ASDF_SOL_KEYMAP_INITIALIZER_LENGTH) +#undef ASDF_KEYMAP_INITIALIZER_LENGTH +#define ASDF_KEYMAP_INITIALIZER_LENGTH ASDF_SOL_KEYMAP_INITIALIZER_LENGTH +#endif + +#endif /* !defined (ASDF_KEYMAP_DEFS_SOL20_H) */ + +//-------|---------|---------+---------+---------+---------+---------+---------+ +// Above line is 80 columns, and should display completely in the editor. diff --git a/firmware/asdf/src/asdf.h b/firmware/asdf/src/asdf.h index 0a11b83..b2f4886 100644 --- a/firmware/asdf/src/asdf.h +++ b/firmware/asdf/src/asdf.h @@ -24,7 +24,7 @@ #if !defined(ASDF_H) #define ASDF_H -#define ASDF_ACTION 0x90 // SOL-20 uses codes 0x80-0x8f +#define ASDF_ACTION 0xA0 // SOL-20 uses codes 0x80-0x9A #define ASDF_INVALID_CODE ASDF_ACTION // an action code is not a valid keycode. diff --git a/firmware/asdf/src/asdf_ascii.h b/firmware/asdf/src/asdf_ascii.h index 49db3f7..c56924c 100644 --- a/firmware/asdf/src/asdf_ascii.h +++ b/firmware/asdf/src/asdf_ascii.h @@ -57,30 +57,62 @@ typedef enum { ASCII_CTRL_Y = 0x19, ASCII_CTRL_Z = 0x1a, ASCII_ESC = 0x1b, + ASCII_FS = 0x1c, // File Separator + ASCII_GS = 0x1d, // Group Separator + ASCII_RS = 0x1e, // Record Separator + ASCII_US = 0x1f, // Unit Separator ASCII_SPACE = 0x20, - ASCII_COMMA = 0x2C, - ASCII_ZERO = 0x30, - ASCII_AT = 0x40, - ASCII_LT_CURLY_BRACE = 0x7b, - ASCII_RT_CURLY_BRACE = 0x7d, - ASCII_LT_SQUARE_BRACE = 0x5b, - ASCII_RT_SQUARE_BRACE = 0x5d, + ASCII_DOUBLE_QUOTE = 0x22, + ASCII_SINGLE_QUOTE = 0x27, ASCII_LT_PAREN = 0x28, ASCII_RT_PAREN = 0x29, - ASCII_SINGLE_QUOTE = 0x27, - ASCII_DOUBLE_QUOTE = 0x22, + ASCII_COMMA = 0x2C, + ASCII_PERIOD = 0x2e, + ASCII_ZERO = 0x30, + ASCII_AT = 0x40, + ASCII_LT_SQUARE_BRACE = 0x5b, + ASCII_RT_SQUARE_BRACE = 0x5d, + ASCII_UNDERSCORE = 0x5f, ASCII_BACKSLASH = 0x5c, ASCII_GRAVE_ACCENT = 0x60, - ASCII_PERIOD = 0x2e, + ASCII_LT_CURLY_BRACE = 0x7b, + ASCII_RT_CURLY_BRACE = 0x7d, ASCII_TILDE = 0x7e, ASCII_VERT_BAR = 0x7c, ASCII_DEL = 0x7f } ascii_defs_t; -#define ASCII_LF ASCII_CTRL_J -#define ASCII_CR ASCII_CTRL_M -#define ASCII_TAB ASCII_CTRL_I +#define ASCII_NULL 0 +#define ASCII_SOH ASCII_CTRL_A // Start of Heading +#define ASCII_STX ASCII_CTRL_B // Start of Text +#define ASCII_ETX ASCII_CTRL_C // End of Text +#define ASCII_EOT ASCII_CTRL_D // End of Transmission +#define ASCII_ENQ ASCII_CTRL_E // Enquiry +#define ASCII_ACK ASCII_CTRL_F // Acknlowledge +#define ASCII_BEL ASCII_CTRL_G // Bell +#define ASCII_BS ASCII_CTRL_H // Backspace +#define ASCII_TAB ASCII_CTRL_I // Horizontal Tab +#define ASCII_LF ASCII_CTRL_J // Line Feed +#define ASCII_VT ASCII_CTRL_K // Vertical Tab +#define ASCII_FF ASCII_CTRL_L // Form Feed +#define ASCII_CR ASCII_CTRL_M // Carriage Return +#define ASCII_SO ASCII_CTRL_N // Shift Out +#define ASCII_SI ASCII_CTRL_O // Shift In +#define ASCII_DLE ASCII_CTRL_P // Data Link Escape +#define ASCII_DC1 ASCII_CTRL_Q // Device Control 1 +#define ASCII_DC2 ASCII_CTRL_R // Device Control 2 +#define ASCII_DC3 ASCII_CTRL_S // Device Control 3 +#define ASCII_DC4 ASCII_CTRL_T // Device Control 4 +#define ASCII_NAK ASCII_CTRL_U // Negative Acknlowledge +#define ASCII_SYN ASCII_CTRL_V // Synchronous Idle +#define ASCII_ETB ASCII_CTRL_W // End of Transmission Block +#define ASCII_CAN ASCII_CTRL_X // Cancel +#define ASCII_EM ASCII_CTRL_Y // End of Medium +#define ASCII_SUB ASCII_CTRL_Z // Substitute +#define ASCII_ESC 0x1b + +#define ASCII_ #endif // !defined (ASDF_ASCII_H) //-------|---------|---------+---------+---------+---------+---------+---------+