diff options
| author | gorbachev <tpp+github@iki.fi> | 2019-01-11 20:27:15 -0500 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2019-01-11 17:27:15 -0800 |
| commit | 81ad6cac7e850e1962fcc2c4057f5357a0056838 (patch) | |
| tree | d0af908512950ccbbf01c817b0ca59fdd9e2c09a | |
| parent | 9c136e1168a1f6d0637f59164b6d9adb9ba0bdee (diff) | |
| download | qmk_firmware-81ad6cac7e850e1962fcc2c4057f5357a0056838.tar.gz qmk_firmware-81ad6cac7e850e1962fcc2c4057f5357a0056838.zip | |
[Keymap] Sweet16 as a switch tester (#4822)
* Sweet16 as a switch tester
* pragma once
* QMK_KEYBOARD_H instead of sweet16.h
5 files changed, 336 insertions, 0 deletions
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/keymap.c b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/keymap.c new file mode 100644 index 000000000..caab5b343 --- /dev/null +++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/keymap.c | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | #include "switches.h" | ||
| 3 | |||
| 4 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 5 | LAYOUT_ortho_4x4( | ||
| 6 | KC_NO, KC_NO, KC_NO, KC_NO, | ||
| 7 | KC_NO, KC_NO, KC_NO, KC_NO, | ||
| 8 | KC_NO, KC_NO, KC_NO, KC_NO, | ||
| 9 | KC_NO, KC_NO, KC_NO, KC_NO | ||
| 10 | ) | ||
| 11 | }; | ||
| 12 | |||
| 13 | struct mechswitch switches[MATRIX_ROWS][MATRIX_COLS] = { | ||
| 14 | {CHERRY_MX_BLUE, CHERRY_MX_RED, CHERRY_MX_BLACK, CHERRY_MX_BROWN}, | ||
| 15 | {GATERON_BLUE, GATERON_RED, GATERON_BLACK, GATERON_BROWN}, | ||
| 16 | {KAILH_BLUE, KAILH_RED, KAILH_BLACK, KAILH_BROWN}, | ||
| 17 | {HAKO_CLEAR, HAKO_TRUE, HAKO_VIOLET, HAKO_ROYAL_TRUE} | ||
| 18 | }; | ||
| 19 | |||
| 20 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 21 | uint8_t col = record->event.key.col; | ||
| 22 | uint8_t row = record->event.key.row; | ||
| 23 | |||
| 24 | if (record->event.pressed) { | ||
| 25 | char name[MAX_SWITCH_NAME_LENGTH]; | ||
| 26 | switch_name(switches[row][col], name); | ||
| 27 | send_string(name); | ||
| 28 | SEND_STRING("\n"); | ||
| 29 | } | ||
| 30 | return false; | ||
| 31 | } | ||
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/readme.md b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/readme.md new file mode 100644 index 000000000..9edb4e181 --- /dev/null +++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/readme.md | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | # Sweet16 as a switch tester | ||
| 2 | |||
| 3 | This keymap uses the Sweet16 as a switch tester. The functionality outputs the switch name of whatever key the user pressed. | ||
| 4 | |||
| 5 | the `switches` two-dimensional (4x4) array contains the switches attached to the macropad. The switches supported are defined as macros in the `switches.h` header file. | ||
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk new file mode 100644 index 000000000..c0f2d0182 --- /dev/null +++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | # Build Options | ||
| 2 | # comment out to disable the options. | ||
| 3 | # | ||
| 4 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | ||
| 5 | MOUSEKEY_ENABLE = no # Mouse keys(+4700) | ||
| 6 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
| 7 | CONSOLE_ENABLE = yes # Console for debug(+400) | ||
| 8 | COMMAND_ENABLE = yes # Commands for debug and configuration | ||
| 9 | NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
| 10 | RGBLIGHT_ENABLE = no | ||
| 11 | |||
| 12 | SRC += switches.c | ||
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.c b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.c new file mode 100644 index 000000000..ae3799544 --- /dev/null +++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.c | |||
| @@ -0,0 +1,99 @@ | |||
| 1 | #include <stdio.h> | ||
| 2 | #include <string.h> | ||
| 3 | #include "switches.h" | ||
| 4 | |||
| 5 | static const char *BRAND_NAMES[] = { | ||
| 6 | "Kailh", | ||
| 7 | "Kailh Low Profile Choc", | ||
| 8 | "Gateron", | ||
| 9 | "Cherry MX", | ||
| 10 | "Cherry ML", | ||
| 11 | "Outemu", | ||
| 12 | "Greetech", | ||
| 13 | "Varmilo", | ||
| 14 | "MOD", | ||
| 15 | "Hako" | ||
| 16 | }; | ||
| 17 | |||
| 18 | static const char *COLOR_NAMES[] = { | ||
| 19 | "", | ||
| 20 | "White", | ||
| 21 | "Black", | ||
| 22 | "Blue", | ||
| 23 | "Red", | ||
| 24 | "Yellow", | ||
| 25 | "Brown", | ||
| 26 | "Green", | ||
| 27 | "Clear", | ||
| 28 | "Silver", | ||
| 29 | "Nature White", | ||
| 30 | "Grey", | ||
| 31 | "Jade", | ||
| 32 | "Navy", | ||
| 33 | "Burnt Orange", | ||
| 34 | "Pale Blue", | ||
| 35 | "Dark Yellow", | ||
| 36 | "Gold", | ||
| 37 | "Chocolate White", | ||
| 38 | "Burgundy", | ||
| 39 | "Purple", | ||
| 40 | "Light Green", | ||
| 41 | "True", | ||
| 42 | "Berry", | ||
| 43 | "Plum", | ||
| 44 | "Sage", | ||
| 45 | "Violet", | ||
| 46 | "L", | ||
| 47 | "M", | ||
| 48 | "H", | ||
| 49 | "SH" | ||
| 50 | }; | ||
| 51 | |||
| 52 | static const char *VARIANT_NAMES[] = { | ||
| 53 | "", | ||
| 54 | "BOX", | ||
| 55 | "BOX Thick", | ||
| 56 | "BOX Heavy", | ||
| 57 | "Silent", | ||
| 58 | "Tactile", | ||
| 59 | "Linear", | ||
| 60 | "Speed", | ||
| 61 | "Speed Heavy", | ||
| 62 | "Speed Thick Click", | ||
| 63 | "Pro", | ||
| 64 | "Pro Heavy", | ||
| 65 | "Royal", | ||
| 66 | "Thick Click", | ||
| 67 | "Heavy" | ||
| 68 | }; | ||
| 69 | |||
| 70 | const char *brand_name(struct mechswitch ms) { | ||
| 71 | return BRAND_NAMES[ms.brand - 1]; | ||
| 72 | } | ||
| 73 | |||
| 74 | const char *variant_name(struct mechswitch ms) { | ||
| 75 | return VARIANT_NAMES[ms.variant]; | ||
| 76 | } | ||
| 77 | |||
| 78 | const char *color_name(struct mechswitch ms) { | ||
| 79 | return COLOR_NAMES[ms.color]; | ||
| 80 | } | ||
| 81 | |||
| 82 | void switch_name(struct mechswitch ms, char *buf) { | ||
| 83 | const char *v_name = variant_name(ms); | ||
| 84 | const char *c_name = color_name(ms); | ||
| 85 | |||
| 86 | snprintf(buf, MAX_SWITCH_NAME_LENGTH, "%s", brand_name(ms)); | ||
| 87 | strncat(buf, " ", MAX_SWITCH_NAME_LENGTH - strlen(buf)); | ||
| 88 | if (strlen(v_name) > 0) { | ||
| 89 | strncat(buf, v_name, MAX_SWITCH_NAME_LENGTH - strlen(buf)); | ||
| 90 | strncat(buf, " ", MAX_SWITCH_NAME_LENGTH - strlen(buf)); | ||
| 91 | } | ||
| 92 | if (strlen(c_name) > 0) { | ||
| 93 | strncat(buf, c_name, MAX_SWITCH_NAME_LENGTH - strlen(buf)); | ||
| 94 | } | ||
| 95 | } | ||
| 96 | |||
| 97 | int bitfieldtoi(struct mechswitch ms) { | ||
| 98 | return ((ms.brand << 9) | (ms.variant << 5) | ms.color); | ||
| 99 | } | ||
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.h b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.h new file mode 100644 index 000000000..6e58068bf --- /dev/null +++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.h | |||
| @@ -0,0 +1,189 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | struct mechswitch | ||
| 4 | { | ||
| 5 | unsigned int brand: 4; | ||
| 6 | unsigned int variant: 4; | ||
| 7 | unsigned int color: 5; | ||
| 8 | }; | ||
| 9 | |||
| 10 | #define MAX_SWITCH_NAME_LENGTH 256 | ||
| 11 | |||
| 12 | #define BRAND_KAILH 1 | ||
| 13 | #define BRAND_KAILH_LOW 2 | ||
| 14 | #define BRAND_GATERON 3 | ||
| 15 | #define BRAND_CHERRY_MX 4 | ||
| 16 | #define BRAND_CHERRY_ML 5 | ||
| 17 | #define BRAND_OUTEMU 6 | ||
| 18 | #define BRAND_GREETECH 7 | ||
| 19 | #define BRAND_VARMILO 8 | ||
| 20 | #define BRAND_MOD 9 | ||
| 21 | #define BRAND_HAKO 10 | ||
| 22 | |||
| 23 | #define COLOR_NO 0 | ||
| 24 | #define COLOR_WHITE 1 | ||
| 25 | #define COLOR_BLACK 2 | ||
| 26 | #define COLOR_BLUE 3 | ||
| 27 | #define COLOR_RED 4 | ||
| 28 | #define COLOR_YELLOW 5 | ||
| 29 | #define COLOR_BROWN 6 | ||
| 30 | #define COLOR_GREEN 7 | ||
| 31 | #define COLOR_CLEAR 8 | ||
| 32 | #define COLOR_SILVER 9 | ||
| 33 | #define COLOR_NATURE_WHITE 10 | ||
| 34 | #define COLOR_GREY 11 | ||
| 35 | #define COLOR_JADE 12 | ||
| 36 | #define COLOR_NAVY 13 | ||
| 37 | #define COLOR_BURNT_ORANGE 14 | ||
| 38 | #define COLOR_PALE_BLUE 15 | ||
| 39 | #define COLOR_DARK_YELLOW 16 | ||
| 40 | #define COLOR_GOLD 17 | ||
| 41 | #define COLOR_CHOCOLATE_WHITE 18 | ||
| 42 | #define COLOR_BURGUNDY 19 | ||
| 43 | #define COLOR_PURPLE 20 | ||
| 44 | #define COLOR_LIGHT_GREEN 21 | ||
| 45 | #define COLOR_TRUE 22 | ||
| 46 | #define COLOR_BERRY 23 | ||
| 47 | #define COLOR_PLUM 24 | ||
| 48 | #define COLOR_SAGE 25 | ||
| 49 | #define COLOR_VIOLET 26 | ||
| 50 | #define COLOR_L 27 | ||
| 51 | #define COLOR_M 28 | ||
| 52 | #define COLOR_H 29 | ||
| 53 | #define COLOR_SH 30 | ||
| 54 | |||
| 55 | #define VARIANT_NO 0 | ||
| 56 | #define VARIANT_BOX 1 | ||
| 57 | #define VARIANT_BOX_THICK 2 | ||
| 58 | #define VARIANT_BOX_HEAVY 3 | ||
| 59 | #define VARIANT_SILENT 4 | ||
| 60 | #define VARIANT_TACTILE 5 | ||
| 61 | #define VARIANT_LINEAR 6 | ||
| 62 | #define VARIANT_SPEED 7 | ||
| 63 | #define VARIANT_SPEED_HEAVY 8 | ||
| 64 | #define VARIANT_SPEED_CLICK_THICK 9 | ||
| 65 | #define VARIANT_PRO 10 | ||
| 66 | #define VARIANT_PRO_HEAVY 11 | ||
| 67 | #define VARIANT_ROYAL 12 | ||
| 68 | #define VARIANT_CLICK_THICK 13 | ||
| 69 | |||
| 70 | #define CHERRY_MX_BLUE {BRAND_CHERRY_MX, VARIANT_NO, COLOR_BLUE} | ||
| 71 | #define CHERRY_MX_RED {BRAND_CHERRY_MX, VARIANT_NO, COLOR_RED} | ||
| 72 | #define CHERRY_MX_BROWN {BRAND_CHERRY_MX, VARIANT_NO, COLOR_BROWN} | ||
| 73 | #define CHERRY_MX_BLACK {BRAND_CHERRY_MX, VARIANT_NO, COLOR_BLACK} | ||
| 74 | #define CHERRY_MX_GREEN {BRAND_CHERRY_MX, VARIANT_NO, COLOR_GREEN} | ||
| 75 | #define CHERRY_MX_CLEAR {BRAND_CHERRY_MX, VARIANT_NO, COLOR_CLEAR} | ||
| 76 | #define CHERRY_MX_WHITE {BRAND_CHERRY_MX, VARIANT_NO, COLOR_WHITE} | ||
| 77 | #define CHERRY_MX_SILVER {BRAND_CHERRY_MX, VARIANT_NO, COLOR_SILVER} | ||
| 78 | #define CHERRY_MX_NATURE_WHITE {BRAND_CHERRY_MX, VARIANT_NO, COLOR_NATURE_WHITE} | ||
| 79 | #define CHERRY_MX_SILENT_BLACK {BRAND_CHERRY_MX, VARIANT_SILENT, COLOR_BLACK} | ||
| 80 | #define CHERRY_MX_SILENT_RED {BRAND_CHERRY_MX, VARIANT_SILENT, COLOR_RED} | ||
| 81 | #define CHERRY_MX_TACTILE_BLACK {BRAND_CHERRY_MX, VARIANT_SILENT, COLOR_GREY} | ||
| 82 | #define CHERRY_MX_LINEAR_BLACK {BRAND_CHERRY_MX, VARIANT_LINEAR, COLOR_GREY} | ||
| 83 | |||
| 84 | #define CHERRY_ML {BRAND_CHERRY_ML, VARIANT_NO, COLOR_NO} | ||
| 85 | |||
| 86 | #define GATERON_BLUE {BRAND_GATERON, VARIANT_NO, COLOR_BLUE} | ||
| 87 | #define GATERON_BROWN {BRAND_GATERON, VARIANT_NO, COLOR_BROWN} | ||
| 88 | #define GATERON_BLACK {BRAND_GATERON, VARIANT_NO, COLOR_BLACK} | ||
| 89 | #define GATERON_RED {BRAND_GATERON, VARIANT_NO, COLOR_RED} | ||
| 90 | #define GATERON_CLEAR {BRAND_GATERON, VARIANT_NO, COLOR_CLEAR} | ||
| 91 | #define GATERON_GREEN {BRAND_GATERON, VARIANT_NO, COLOR_GREEN} | ||
| 92 | #define GATERON_YELLOW {BRAND_GATERON, VARIANT_NO, COLOR_YELLOW} | ||
| 93 | |||
| 94 | #define GATERON_SILENT_CLEAR {BRAND_GATERON, VARIANT_SILENT, COLOR_CLEAR} | ||
| 95 | #define GATERON_SILENT_RED {BRAND_GATERON, VARIANT_SILENT, COLOR_RED} | ||
| 96 | #define GATERON_SILENT_YELLOW {BRAND_GATERON, VARIANT_SILENT, COLOR_YELLOW} | ||
| 97 | #define GATERON_SILENT_BLACK {BRAND_GATERON, VARIANT_SILENT, COLOR_BLACK} | ||
| 98 | #define GATERON_SILENT_BROWN {BRAND_GATERON, VARIANT_SILENT, COLOR_BROWN} | ||
| 99 | |||
| 100 | #define GREETECH_BLUE {BRAND_GREETECH, VARIANT_NO, COLOR_BLUE} | ||
| 101 | #define GREETECH_BROWN {BRAND_GREETECH, VARIANT_NO, COLOR_BROWN} | ||
| 102 | #define GREETECH_BLACK {BRAND_GREETECH, VARIANT_NO, COLOR_BLACK} | ||
| 103 | #define GREETECH_RED {BRAND_GREETECH, VARIANT_NO, COLOR_RED} | ||
| 104 | |||
| 105 | #define OUTEMU_BLUE {BRAND_OUTEMU, VARIANT_NO, COLOR_BLUE} | ||
| 106 | #define OUTEMU_BROWN {BRAND_OUTEMU, VARIANT_NO, COLOR_BROWN} | ||
| 107 | #define OUTEMU_BLACK {BRAND_OUTEMU, VARIANT_NO, COLOR_BLACK} | ||
| 108 | #define OUTEMU_RED {BRAND_OUTEMU, VARIANT_NO, COLOR_RED} | ||
| 109 | |||
| 110 | #define KAILH_BLUE {BRAND_KAILH, VARIANT_NO, COLOR_BLUE} | ||
| 111 | #define KAILH_BROWN {BRAND_KAILH, VARIANT_NO, COLOR_BROWN} | ||
| 112 | #define KAILH_BLACK {BRAND_KAILH, VARIANT_NO, COLOR_BLACK} | ||
| 113 | #define KAILH_RED {BRAND_KAILH, VARIANT_NO, COLOR_RED} | ||
| 114 | #define KAILH_GREEN {BRAND_KAILH, VARIANT_NO, COLOR_GREEN} | ||
| 115 | |||
| 116 | #define KAILH_BOX_WHITE {BRAND_KAILH, VARIANT_BOX, COLOR_WHITE} | ||
| 117 | #define KAILH_BOX_RED {BRAND_KAILH, VARIANT_BOX, COLOR_RED} | ||
| 118 | #define KAILH_BOX_BLACK {BRAND_KAILH, VARIANT_BOX, COLOR_BLACK} | ||
| 119 | #define KAILH_BOX_BROWN {BRAND_KAILH, VARIANT_BOX, COLOR_BROWN} | ||
| 120 | #define KAILH_BOX_ROYAL {BRAND_KAILH, VARIANT_BOX, COLOR_ROYAL} | ||
| 121 | |||
| 122 | #define KAILH_BOX_THICK_JADE {BRAND_KAILH, VARIANT_BOX_THICK, COLOR_JADE} | ||
| 123 | #define KAILH_BOX_THICK_NAVY {BRAND_KAILH, VARIANT_BOX_THICK, COLOR_NAVY} | ||
| 124 | #define KAILH_BOX_HEAVY_BURNT_ORANGE {BRAND_KAILH, VARIANT_BOX_HEAVY, COLOR_BURNT_ORANGE} | ||
| 125 | #define KAILH_BOX_HEAVY_PALE_BLUE {BRAND_KAILH, VARIANT_BOX_HEAVY, COLOR_PALE_BLUE} | ||
| 126 | #define KAILH_BOX_HEAVY_DARK_YELLOW {BRAND_KAILH, VARIANT_BOX_HEAVY, COLOR_DARK_YELLOW} | ||
| 127 | |||
| 128 | #define KAILH_SPEED_BRONZE {BRAND_KAILH, VARIANT_SPEED, COLOR_BRONZE} | ||
| 129 | #define KAILH_SPEED_COPPER {BRAND_KAILH, VARIANT_SPEED, COLOR_COPPER} | ||
| 130 | #define KAILH_SPEED_GOLD {BRAND_KAILH, VARIANT_SPEED, COLOR_GOLD} | ||
| 131 | #define KAILH_SPEED_SILVER {BRAND_KAILH, VARIANT_SPEED, COLOR_SILVER} | ||
| 132 | |||
| 133 | #define KAILH_SPEED_HEAVY_BURNT_ORANGE {BRAND_KAILH, VARIANT_SPEED_HEAVY, COLOR_BURNT_ORANGE} | ||
| 134 | #define KAILH_SPEED_HEAVY_PALE_BLUE {BRAND_KAILH, VARIANT_SPEED_HEAVY, COLOR_PALE_BLUE} | ||
| 135 | #define KAILH_SPEED_HEAVY_DARK_YELLOW {BRAND_KAILH, VARIANT_SPEED_HEAVY, COLOR_DARK_YELLOW} | ||
| 136 | |||
| 137 | #define KAILH_SPEED_THICK_CLICK_NAVY {BRAND_KAILH, VARIANT_SPEED_CLICK_THICK, COLOR_NAVY} | ||
| 138 | |||
| 139 | #define KAILH_PRO_BURGUNDY {BRAND_KAILH, VARIANT_PRO, COLOR_BURGUNDY} | ||
| 140 | #define KAILH_PRO_PURPLE {BRAND_KAILH, VARIANT_PRO, COLOR_PURPLE} | ||
| 141 | #define KAILH_PRO_LIGHT_GREEN {BRAND_KAILH, VARIANT_PRO, COLOR_LIGHT_GREEN} | ||
| 142 | |||
| 143 | #define KAILH_PRO_HEAVY_BERRY {BRAND_KAILH, VARIANT_PRO_HEAVY, COLOR_BERRY} | ||
| 144 | #define KAILH_PRO_HEAVY_PLUM {BRAND_KAILH, VARIANT_PRO_HEAVY, COLOR_PLUM} | ||
| 145 | #define KAILH_PRO_GEAVY_SAGE {BRAND_KAILH, VARIANT_PRO_HEAVY, COLOR_SAGE} | ||
| 146 | |||
| 147 | #define KAILH_LOW_WHITE {BRAND_KAILH_LOW, VARIANT_NO, COLOR_WHITE} | ||
| 148 | #define KAILH_LOW_BROWN {BRAND_KAILH_LOW, VARIANT_NO, COLOR_BROWN} | ||
| 149 | #define KAILH_LOW_RED {BRAND_KAILH_LOW, VARIANT_NO, COLOR_RED} | ||
| 150 | #define KAILH_LOW_CHOCOLATE_WHITE {BRAND_KAILH_LOW, VARIANT_NO, COLOR_CHOCOLATE_WHITE} | ||
| 151 | #define KAILH_LOW_THICK_CLICK_NAVY {BRAND_KAILH_LOW, VARIANT_THICK_CLICK, COLOR_NAVY} | ||
| 152 | #define KAILH_LOW_THICK_CLICK_JADE {BRAND_KAILH_LOW, VARIANT_THICK_CLICK, COLOR_JADE} | ||
| 153 | #define KAILH_LOW_HEAVY_DARK_YELLOW {BRAND_KAILH_LOW, VARIANT_HEAVY, COLOR_DARK_YELLOW} | ||
| 154 | #define KAILH_LOW_HEAVY_BURNT_ORANGE {BRAND_KAILH_LOW, VARIANT_HEAVY, COLOR_BURNT_ORANGE} | ||
| 155 | #define KAILH_LOW_HEAVY_PALE_BLUE {BRAND_KAILH_LOW, VARIANT_HEAVY, COLOR_PALE_BLUE} | ||
| 156 | |||
| 157 | #define HAKO_ROYAL_CLEAR {BRAND_HAKO, VARIANT_ROYAL, COLOR_CLEAR} | ||
| 158 | #define HAKO_ROYAL_TRUE {BRAND_HAKO, VARIANT_ROYAL, COLOR_TRUE} | ||
| 159 | |||
| 160 | #define HAKO_CLEAR {BRAND_HAKO, VARIANT_NO, COLOR_CLEAR} | ||
| 161 | #define HAKO_TRUE {BRAND_HAKO, VARIANT_NO, COLOR_TRUE} | ||
| 162 | #define HAKO_VIOLET {BRAND_HAKO, VARIANT_NO, COLOR_VIOLET} | ||
| 163 | |||
| 164 | #define MOD_L_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_L} | ||
| 165 | #define MOD_M_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_M} | ||
| 166 | #define MOD_H_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_H} | ||
| 167 | #define MOD_SH_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_SH} | ||
| 168 | |||
| 169 | #define MOD_L_LINEAR {BRAND_MOD, VARIANT_LINEAR, COLOR_L} | ||
| 170 | #define MOD_M_LINEAR {BRAND_MOD, VARIANT_LINEAR, COLOR_M} | ||
| 171 | #define MOD_H_LINEAR {BRAND_MOD, VARIANT_LINEAR, COLOR_H} | ||
| 172 | |||
| 173 | #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c" | ||
| 174 | #define BYTE_TO_BINARY(byte) \ | ||
| 175 | (byte & 0x80 ? '1' : '0'), \ | ||
| 176 | (byte & 0x40 ? '1' : '0'), \ | ||
| 177 | (byte & 0x20 ? '1' : '0'), \ | ||
| 178 | (byte & 0x10 ? '1' : '0'), \ | ||
| 179 | (byte & 0x08 ? '1' : '0'), \ | ||
| 180 | (byte & 0x04 ? '1' : '0'), \ | ||
| 181 | (byte & 0x02 ? '1' : '0'), \ | ||
| 182 | (byte & 0x01 ? '1' : '0') | ||
| 183 | |||
| 184 | |||
| 185 | const char *brand_name(struct mechswitch ms); | ||
| 186 | const char *variant_name(struct mechswitch ms); | ||
| 187 | const char *color_name(struct mechswitch ms); | ||
| 188 | void switch_name(struct mechswitch ms, char *buf); | ||
| 189 | int bitfieldtoi(struct mechswitch ms); | ||
