diff options
author | satt99 <39004890+satt99@users.noreply.github.com> | 2018-12-31 01:34:06 +0900 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2018-12-30 08:34:06 -0800 |
commit | 46b4b4407ff6e23d0799b0f902e61f1fe3645a9a (patch) | |
tree | de3fe1ee10e65c08549cc20230f9f822954a8fee /keyboards/comet46/keymaps | |
parent | c2390bf32156884d6825686c7f13f9c621bab366 (diff) |
Comet46 add support for OLED (#4745)
* Add OLED support for Comet46
* fix length of char "name" of keylogger.c
* update ssd1306
* fix rules.mk
* update led-receiver keymap
* Update OLED related code
* add mod_state_reader & modify led_state_reader
* Update OLED related files
* Update kemaps
* Update readme
* change default-oled-display to default
* Add OSM compatibility to mod_state_reader
* Code formatting
* Use PROGMEM to store code_to_name
* Clean up satt keymap
* Rename default-led keymap to defult-rgbled
Diffstat (limited to 'keyboards/comet46/keymaps')
-rw-r--r-- | keyboards/comet46/keymaps/default-rgbled/keymap.c | 226 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/default-rgbled/readme.md | 3 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/default/config.h | 31 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/default/keymap.c | 189 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/default/readme.md | 3 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/default/rules.mk | 5 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/satt/action_pseudo_lut.c | 212 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/satt/config.h | 34 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/satt/keymap.c | 256 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/satt/keymap_jis2us.h | 46 | ||||
-rw-r--r-- | keyboards/comet46/keymaps/satt/rules.mk | 29 |
11 files changed, 771 insertions, 263 deletions
diff --git a/keyboards/comet46/keymaps/default-rgbled/keymap.c b/keyboards/comet46/keymaps/default-rgbled/keymap.c new file mode 100644 index 0000000000..d446d50d05 --- /dev/null +++ b/keyboards/comet46/keymaps/default-rgbled/keymap.c @@ -0,0 +1,226 @@ +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum comet46_layers +{ + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Ctl | A | S | D | F | G | Esc | | Del | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | { | | } | N | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | GUI | Lower| Space| | Enter| Raise| Alt | + * +--------------------/ \--------------------+ + */ + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_ESC, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT + ), + + /* Colemak + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Ctl | A | R | S | T | D | Esc | | Del | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | { | | } | K | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | GUI | Lower| Space| | Enter| Raise| Alt | + * +--------------------/ \--------------------+ + */ + [_COLEMAK] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_ESC, KC_DEL, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT + ), + + /* Dvorak + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Ctl | A | O | E | U | I | Esc | | Del | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | { | | } | B | M | W | V | Z | Shift| + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | GUI | Lower| Space| | Enter| Raise| Alt | + * +--------------------/ \--------------------+ + */ + [_DVORAK] = LAYOUT( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_ESC, KC_DEL, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCBR, KC_RCBR, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT + ), + + /* Lower + * ,-----------------------------------------+ +-----------------------------------------. + * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | | | | | | | | ` | \ | - | = | [ | ] | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | | | | | | | | ~ | | | _ | + | { | } | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | | | | | | | | + * +--------------------/ \--------------------+ + */ + [_LOWER] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + _______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, + _______, _______, _______, _______, _______, _______ + ), + + /* Raise + * ,-----------------------------------------+ +-----------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | | | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | End | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | PgDn | PgUp | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | | | | | | | | + * +--------------------/ \--------------------+ + */ + [_RAISE] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, _______, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______ + ), + + /* Adjust + * ,-----------------------------------------+ +-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | | | | | |Qwerty| |Colemk| | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | | | | | |Reset | |Dvorak| | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | | | | | | | | + * +--------------------/ \--------------------+ + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET, DVORAK, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + + +uint32_t layer_state_set_user(uint32_t state) { + return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); +} + +// settings for LED on receiver +void led_init(void) { + DDRD |= (1<<1); + PORTD |= (1<<1); + DDRF |= (1<<4) | (1<<5); + PORTF |= (1<<4) | (1<<5); +} + +#define red_led_off PORTF |= (1<<5) +#define red_led_on PORTF &= ~(1<<5) +#define blu_led_off PORTF |= (1<<4) +#define blu_led_on PORTF &= ~(1<<4) +#define grn_led_off PORTD |= (1<<1) +#define grn_led_on PORTD &= ~(1<<1) + +#define set_led_off red_led_off; grn_led_off; blu_led_off +#define set_led_red red_led_on; grn_led_off; blu_led_off +#define set_led_blue red_led_off; grn_led_off; blu_led_on +#define set_led_green red_led_off; grn_led_on; blu_led_off +#define set_led_yellow red_led_on; grn_led_on; blu_led_off +#define set_led_magenta red_led_on; grn_led_off; blu_led_on +#define set_led_cyan red_led_off; grn_led_on; blu_led_on +#define set_led_white red_led_on; grn_led_on; blu_led_on + +void matrix_init_user(void) { + led_init(); +} + +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + uint8_t default_layer = biton32(eeconfig_read_default_layer()); + switch (layer) { + case _LOWER: + set_led_red; + break; + case _RAISE: + set_led_blue; + break; + case _ADJUST: + set_led_magenta; + break; + default: + switch (default_layer) { + case _COLEMAK: + set_led_white; + break; + case _DVORAK: + set_led_yellow; + break; + default: + set_led_green; + break; + } + break; + } +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + break; + } + return true; +} diff --git a/keyboards/comet46/keymaps/default-rgbled/readme.md b/keyboards/comet46/keymaps/default-rgbled/readme.md new file mode 100644 index 0000000000..40cc744337 --- /dev/null +++ b/keyboards/comet46/keymaps/default-rgbled/readme.md @@ -0,0 +1,3 @@ +## default-led + +A keymap that is compatible with mitosis-type receivers, which use RGB LED for layer indication. diff --git a/keyboards/comet46/keymaps/default/config.h b/keyboards/comet46/keymaps/default/config.h new file mode 100644 index 0000000000..7873cf5a72 --- /dev/null +++ b/keyboards/comet46/keymaps/default/config.h @@ -0,0 +1,31 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2015 Jack Humbert + +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 2 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +// #include "../../config.h" + +/* Use I2C or Serial */ + +#define USE_I2C +#define SSD1306OLED + +#endif diff --git a/keyboards/comet46/keymaps/default/keymap.c b/keyboards/comet46/keymaps/default/keymap.c index b03ece4e95..c87492e4b9 100644 --- a/keyboards/comet46/keymaps/default/keymap.c +++ b/keyboards/comet46/keymaps/default/keymap.c @@ -2,6 +2,10 @@ // This is the canonical layout file for the Quantum project. If you want to add another keyboard, #include QMK_KEYBOARD_H +#ifdef SSD1306OLED + #include "ssd1306.h" +#endif + // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. @@ -9,13 +13,18 @@ // entirely and just use numbers. enum comet46_layers { - _QWERTY, - _LOWER, - _RAISE, + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST, }; enum custom_keycodes { QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, LOWER, RAISE, }; @@ -46,6 +55,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT ), + /* Colemak + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Ctl | A | R | S | T | D | Esc | | Del | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | { | | } | K | M | , | . | / | Shift| + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | GUI | Lower| Space| | Enter| Raise| Alt | + * +--------------------/ \--------------------+ + */ + [_COLEMAK] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_ESC, KC_DEL, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT + ), + + /* Dvorak + * ,-----------------------------------------+ +-----------------------------------------. + * | Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Ctl | A | O | E | U | I | Esc | | Del | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | { | | } | B | M | W | V | Z | Shift| + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | GUI | Lower| Space| | Enter| Raise| Alt | + * +--------------------/ \--------------------+ + */ + [_DVORAK] = LAYOUT( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_ESC, KC_DEL, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCBR, KC_RCBR, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT + ), + /* Lower * ,-----------------------------------------+ +-----------------------------------------. * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | @@ -70,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| * | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | End | | * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | | | | | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | PgDn | PgUp | | | | * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| * | | | | | | | | * +--------------------/ \--------------------+ @@ -78,26 +123,134 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = LAYOUT( _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, _______, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______ + ), + + /* Adjust + * ,-----------------------------------------+ +-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | | | | | |Qwerty| |Colemk| | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------| + * | | | | | | |Reset | |Dvorak| | | | | | | + * |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------| + * | | | | | | | | + * +--------------------/ \--------------------+ + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; +uint32_t layer_state_set_user(uint32_t state) { + return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); +} + +//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h +#ifdef SSD1306OLED + +// You need to add source files to SRC in rules.mk when using OLED display functions +void set_keylog(uint16_t keycode); +const char *read_keylog(void); +const char *read_modifier_state(void); +const char *read_host_led_state(void); + +void matrix_init_user(void) { + iota_gfx_init(false); // turns on the display +} + void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - switch (layer) { - case _QWERTY: - set_led_green; - break; - case _RAISE: - set_led_blue; - break; - case _LOWER: - set_led_red; - break; + iota_gfx_task(); // this is what updates the display continuously +} + +void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { + if (memcmp(dest->display, source->display, sizeof(dest->display))) { + memcpy(dest->display, source->display, sizeof(dest->display)); + dest->dirty = true; + } +} + +void render_status(struct CharacterMatrix *matrix) { + // Layer state + char layer_str[22]; + matrix_write(matrix, "Layer: "); + uint8_t layer = biton32(layer_state); + uint8_t default_layer = biton32(eeconfig_read_default_layer()); + switch (layer) { + case _QWERTY: + switch (default_layer) { + case _QWERTY: + snprintf(layer_str, sizeof(layer_str), "Qwerty"); + break; + case _COLEMAK: + snprintf(layer_str, sizeof(layer_str), "Colemak"); + break; + case _DVORAK: + snprintf(layer_str, sizeof(layer_str), "Dvorak"); + break; default: - set_led_green; - break; + snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer); + break; + } + break; + case _RAISE: + snprintf(layer_str, sizeof(layer_str), "Raise"); + break; + case _LOWER: + snprintf(layer_str, sizeof(layer_str), "Lower"); + break; + case _ADJUST: + snprintf(layer_str, sizeof(layer_str), "Adjust"); + break; + default: + snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer); + } + matrix_write_ln(matrix, layer_str); + // Last entered keycode + matrix_write_ln(matrix, read_keylog()); + // Modifier state + matrix_write_ln(matrix, read_modifier_state()); + // Host Keyboard LED Status + matrix_write(matrix, read_host_led_state()); +} + + +void iota_gfx_task_user(void) { + struct CharacterMatrix matrix; + matrix_clear(&matrix); + render_status(&matrix); + matrix_update(&display, &matrix); +} + +#endif//SSD1306OLED + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + #ifdef SSD1306OLED + if (record->event.pressed) { + set_keylog(keycode); } + #endif + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + break; + } + return true; } diff --git a/keyboards/comet46/keymaps/default/readme.md b/keyboards/comet46/keymaps/default/readme.md new file mode 100644 index 0000000000..b0085d2a62 --- /dev/null +++ b/keyboards/comet46/keymaps/default/readme.md @@ -0,0 +1,3 @@ +## default-oled-display + +A keymap that is compatible with receivers with an OLED display. diff --git a/keyboards/comet46/keymaps/default/rules.mk b/keyboards/comet46/keymaps/default/rules.mk new file mode 100644 index 0000000000..3fa01f96af --- /dev/null +++ b/keyboards/comet46/keymaps/default/rules.mk @@ -0,0 +1,5 @@ +# If you want to change display settings of the OLED, you need to change the following lines +SRC += ./lib/glcdfont.c \ + ./lib/keylogger.c \ + ./lib/modifier_state_reader.c \ + ./lib/host_led_state_reader.c diff --git a/keyboards/comet46/keymaps/satt/action_pseudo_lut.c b/keyboards/comet46/keymaps/satt/action_pseudo_lut.c index 5664d4d2a5..0ac7133591 100644 --- a/keyboards/comet46/keymaps/satt/action_pseudo_lut.c +++ b/keyboards/comet46/keymaps/satt/action_pseudo_lut.c @@ -10,133 +10,133 @@ static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE]; * Memo: Using other layer keymap to get keycode */ void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) { - uint8_t prev_shift; - uint16_t keycode; - uint16_t pseudo_keycode; + uint8_t prev_shift; + uint16_t keycode; + uint16_t pseudo_keycode; - /* get keycode from keymap you specified */ - keycode = keymap_key_to_keycode(base_keymap_id, record->event.key); + /* get keycode from keymap you specified */ + keycode = keymap_key_to_keycode(base_keymap_id, record->event.key); - prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); - if (record->event.pressed) { - /* when magic commands entered, keycode does not converted */ - if (IS_COMMAND()) { - if (prev_shift) { - add_shift_bit(keycode); - } - register_code(keycode); - return; - } + if (record->event.pressed) { + /* when magic commands entered, keycode does not converted */ + if (IS_COMMAND()) { + if (prev_shift) { + add_shift_bit(keycode); + } + register_code(keycode); + return; + } - if (prev_shift) { - pseudo_keycode = convert_keycode(keymap, keycode, true); - dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); - add_shift_bit(keycode); + if (prev_shift) { + pseudo_keycode = convert_keycode(keymap, keycode, true); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + add_shift_bit(keycode); - if (IS_LSFT(pseudo_keycode)) { - register_code(QK_LSFT ^ pseudo_keycode); - } else { - /* delete shift mod temporarily */ - del_mods(prev_shift); - send_keyboard_report(); - register_code(pseudo_keycode); - add_mods(prev_shift); - send_keyboard_report(); - } - } else { - pseudo_keycode = convert_keycode(keymap, keycode, false); - dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + if (IS_LSFT(pseudo_keycode)) { + register_code(QK_LSFT ^ pseudo_keycode); + } else { + /* delete shift mod temporarily */ + del_mods(prev_shift); + send_keyboard_report(); + register_code(pseudo_keycode); + add_mods(prev_shift); + send_keyboard_report(); + } + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); - if (IS_LSFT(pseudo_keycode)) { - add_weak_mods(MOD_BIT(KC_LSFT)); - send_keyboard_report(); - register_code(QK_LSFT ^ pseudo_keycode); - /* on Windows, prevent key repeat to avoid unintended output */ - unregister_code(QK_LSFT ^ pseudo_keycode); - del_weak_mods(MOD_BIT(KC_LSFT)); - send_keyboard_report(); - } else { - register_code(pseudo_keycode); - } - } + if (IS_LSFT(pseudo_keycode)) { + add_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + register_code(QK_LSFT ^ pseudo_keycode); + /* on Windows, prevent key repeat to avoid unintended output */ + unregister_code(QK_LSFT ^ pseudo_keycode); + del_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + } else { + register_code(pseudo_keycode); + } + } + } else { + if (get_shift_bit(keycode)) { + del_shift_bit(keycode); + pseudo_keycode = convert_keycode(keymap, keycode, true); } else { - if (get_shift_bit(keycode)) { - del_shift_bit(keycode); - pseudo_keycode = convert_keycode(keymap, keycode, true); - } else { - pseudo_keycode = convert_keycode(keymap, keycode, false); - } - dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode); + pseudo_keycode = convert_keycode(keymap, keycode, false); + } + dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode); - if (IS_LSFT(pseudo_keycode)) { - unregister_code(QK_LSFT ^ pseudo_keycode); - } else { - unregister_code(pseudo_keycode); - } + if (IS_LSFT(pseudo_keycode)) { + unregister_code(QK_LSFT ^ pseudo_keycode); + } else { + unregister_code(pseudo_keycode); } + } } uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded) { - uint16_t pseudo_keycode; + uint16_t pseudo_keycode; - switch (keycode) { - case KC_A ... KC_CAPSLOCK: -#if defined(__AVR__) - if (shift_modded) { - pseudo_keycode = pgm_read_word(&keymap[keycode][1]); - } else { - pseudo_keycode = pgm_read_word(&keymap[keycode][0]); - } -#else - if (shift_modded) { - pseudo_keycode = keymap[keycode][1]; - } else { - pseudo_keycode = keymap[keycode][0]; - } -#endif - /* if undefined, use got keycode as it is */ - if (pseudo_keycode == 0x00) { - if (shift_modded) { - pseudo_keycode = S(keycode); - } else { - pseudo_keycode = keycode; - } - } - break; - default: - if (shift_modded) { - pseudo_keycode = S(keycode); - } else { - pseudo_keycode = keycode; - } - break; - } - return pseudo_keycode; + switch (keycode) { + case KC_A ... KC_CAPSLOCK: + #if defined(__AVR__) + if (shift_modded) { + pseudo_keycode = pgm_read_word(&keymap[keycode][1]); + } else { + pseudo_keycode = pgm_read_word(&keymap[keycode][0]); + } + #else + if (shift_modded) { + pseudo_keycode = keymap[keycode][1]; + } else { + pseudo_keycode = keymap[keycode][0]; + } + #endif + /* if undefined, use got keycode as it is */ + if (pseudo_keycode == 0x00) { + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + } + break; + default: + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + break; + } + return pseudo_keycode; } uint8_t get_shift_bit(uint16_t keycode) { - if ((keycode >> 3) < SHIFT_BIT_SIZE) { - return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7)); - } else { - dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode); - return 0; - } + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7)); + } else { + dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode); + return 0; + } } void add_shift_bit(uint16_t keycode) { - if ((keycode >> 3) < SHIFT_BIT_SIZE) { - send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7)); - } else { - dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode); - } + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7)); + } else { + dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode); + } } void del_shift_bit(uint16_t keycode) { - if ((keycode >> 3) < SHIFT_BIT_SIZE) { - send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7)); - } else { - dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode); - } + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7)); + } else { + dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode); + } } diff --git a/keyboards/comet46/keymaps/satt/config.h b/keyboards/comet46/keymaps/satt/config.h new file mode 100644 index 0000000000..c99de2cf80 --- /dev/null +++ b/keyboards/comet46/keymaps/satt/config.h @@ -0,0 +1,34 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2015 Jack Humbert + +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 2 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +/* Use I2C or Serial */ + +#define USE_I2C +#define SSD1306OLED + +#endif diff --git a/keyboards/comet46/keymaps/satt/keymap.c b/keyboards/comet46/keymaps/satt/keymap.c index 7e728e5d08..eec40eff49 100644 --- a/keyboards/comet46/keymaps/satt/keymap.c +++ b/keyboards/comet46/keymaps/satt/keymap.c @@ -4,64 +4,96 @@ #include QMK_KEYBOARD_H #include "keymap_jis2us.h" #include "action_pseudo_lut.h" +#include "keymap_jp.h" +#ifdef SSD1306OLED + #include "ssd1306.h" +#endif // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. enum comet46_layers { - _QWERTY, - _LOWER, - _RAISE, - _PSEUDO_US, - _PSEUDO_US_LOWER, - _PSEUDO_US_RAISE, - _ADJUST + _QWERTY, + _LOWER, + _RAISE, + _PSEUDO_US, + _PSEUDO_US_LOWER, + _PSEUDO_US_RAISE, + _ADJUST }; enum custom_keycodes { QWERTY = SAFE_RANGE, PSEUDO_US, + JIS2US, }; -#define KC_LWR MO(_LOWER) -#define KC_RSE MO(_RAISE) +// JIS keycodes +#define KC_JZHT JP_ZHTG // hankaku/zenkaku|kanzi +#define KC_JCIR JP_CIRC // ^, ~ +#define KC_JAT JP_AT // @, ` +#define KC_JLBR JP_LBRC // [, { +#define KC_JCOL JP_COLN // :, * +#define KC_JRBR JP_RBRC // ], } +#define KC_JBSL JP_BSLS // \, _ +#define KC_JMHE JP_MHEN // muhenkan +#define KC_JHEN JP_HENK // henkan +#define KC_JKAN JP_KANA // katakana/hiragana|ro-mazi +#define KC_JMKA JP_MKANA //kana on MacOSX +#define KC_JMEI JP_MEISU //eisu on MacOSX +#define KC_JAMP JP_AMPR // & +#define KC_JQUO JP_QUOT // ' +#define KC_JLPR JP_LPRN // ( +#define KC_JRPR JP_RPRN // ) +#define KC_JEQL JP_EQL // = +#define KC_JTIL JP_TILD // ~ +#define KC_JPIP JP_PIPE // | +#define KC_JGRV JP_GRV // ` +#define KC_JLCB JP_LCBR // { +#define KC_JPLU JP_PLUS // + +#define KC_JAST JP_ASTR // * +#define KC_JRCB JP_RCBR // } +#define KC_JUND JP_UNDS // _ + +// Layer related keycodes +#define KC_LWR MO(_LOWER) +#define KC_RSE MO(_RAISE) #define KC_P_LW MO(_PSEUDO_US_LOWER) #define KC_P_RS MO(_PSEUDO_US_RAISE) #define KC_QWRT QWERTY #define KC_P_US PSEUDO_US +#define KC_J2US JIS2US + +// Special keycodes #define KC_SPCT CTL_T(KC_SPC) #define KC_ENSF SFT_T(KC_ENT) -#define KC_SFTA SFT_T(KC_A) -#define KC_CTSF S(KC_LCTL) +#define KC_CAEC MT(MOD_LCTL | MOD_LALT, KC_ESC) +#define KC_CSTB C_S_T(KC_TAB) #define KC_IMON ALT_T(KC_F13) #define KC_IMOF GUI_T(KC_F14) -#define KC_SRO S(KC_RO) -#define KC_SYEN S(KC_JYEN) #define KC_CAD LCA(KC_DEL) #define KC_RST RESET -#define LONGPRESS_DELAY 150 - // Fillers to make layering more clear -#define KC_ KC_TRNS +#define KC_ KC_TRNS #define KC_XXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_kc( + [_QWERTY] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL , + CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - TAB ,SFTA, S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC, + CSTB, A , S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - CTSF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT, + LSFT, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| IMOF,LWR ,SPCT, ENSF,RSE ,IMON // +----+----+---/ \---+----+----+ ), - [_LOWER] = LAYOUT_kc( + [_LOWER] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| @@ -69,60 +101,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| , F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + , , , , , // +----+----+---/ \---+----+----+ ), - [_RAISE] = LAYOUT_kc( + [_RAISE] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| , , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, , + , , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + , , , , , // +----+----+---/ \---+----+----+ ), - [_PSEUDO_US] = LAYOUT_kc( + [_PSEUDO_US] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL , + CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - TAB ,SFTA, S , D , F , G ,ASTR, LPRN, H , J , K , L ,FN0 ,BSPC, + CSTB, A , S , D , F , G ,JLPR, JRPR, H , J , K , L ,J2US,BSPC, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - CTSF, Z , X , C , V , B ,FN0 , FN0 , N , M ,COMM,DOT ,SLSH,FN0 , + LSFT, Z , X , C , V , B ,J2US, J2US, N , M ,COMM,DOT ,SLSH,J2US, //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| IMOF,P_LW,SPCT, ENSF,P_RS,IMON // +----+----+---/ \---+----+----+ ), - [_PSEUDO_US_LOWER] = LAYOUT_kc( + [_PSEUDO_US_LOWER] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. - ,EXLM,LBRC,HASH,DLR ,PERC, EQL ,CIRC, DQT,ASTR,LPRN, , + ,EXLM,JAT ,HASH,DLR ,PERC, JCIR,JAMP,JAST,JLPR,JRPR, , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , F1 , F2 , F3 , F4 , F5 , F6 , LCBR,JYEN,MINS,UNDS,RBRC,BSLS, , + , F1 , F2 , F3 , F4 , F5 , F6 , JGRV,JBSL,MINS,JEQL,JLBR,JRBR, , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , F7 , F8 , F9 , F10, F11, F12, PLUS,SYEN,SRO ,COLN,RCBR,PIPE, , + , F7 , F8 , F9 , F10, F11, F12, JTIL,JPIP,JUND,JPLU,JLCB,JRCB, , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + , , , , , // +----+----+---/ \---+----+----+ ), - [_PSEUDO_US_RAISE] = LAYOUT_kc( + [_PSEUDO_US_RAISE] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| - , , , , , , GRV, XXXX,LEFT,DOWN, UP ,RGHT,END , , + , , , , , ,JZHT, XXXX,LEFT,DOWN, UP ,RGHT,END , , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, , + , , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + , , , , , // +----+----+---/ \---+----+----+ ), - [_ADJUST] = LAYOUT_kc( + [_ADJUST] = LAYOUT_kc( //,----+----+----+----+----+----+ +----+----+----+----+----+----. , , , , , , , , , , , , //|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----| @@ -130,90 +162,130 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| , , , , , ,RST , P_US, , , , , , , //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - , , , , , + , , , , , // +----+----+---/ \---+----+----+ ) }; +uint32_t layer_state_set_user(uint32_t state) { + switch (biton32(state)) { + case _PSEUDO_US_LOWER: + case _PSEUDO_US_RAISE: + return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST); + break; + default: + return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); + break; + } +} -/* - * user defined action function - */ -enum function_id { - PSEUDO_US_FUNCTION, -}; +//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h +#ifdef SSD1306OLED -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) - { - case PSEUDO_US_FUNCTION: - action_pseudo_lut(record, _QWERTY, keymap_jis2us); - break; - } -} +// You need to add source files to SRC in rules.mk when using OLED display functions +void set_keylog(uint16_t keycode); +const char *read_keylog(void); +const char *read_modifier_state(void); +const char *read_host_led_state(void); -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(PSEUDO_US_FUNCTION), -}; +void matrix_init_user(void) { + iota_gfx_init(false); // turns on the display +} void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + iota_gfx_task(); // this is what updates the display continuously +} + +void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { + if (memcmp(dest->display, source->display, sizeof(dest->display))) { + memcpy(dest->display, source->display, sizeof(dest->display)); + dest->dirty = true; + } +} + +void render_status(struct CharacterMatrix *matrix) { + // Layer state + char layer_str[22]; + matrix_write(matrix, "Layer: "); + uint8_t layer = biton32(layer_state); + uint8_t default_layer = biton32(eeconfig_read_default_layer()); switch (layer) { - case _LOWER: - set_led_red; - break; + case _QWERTY: + switch (default_layer) { + case _QWERTY: + snprintf(layer_str, sizeof(layer_str), "Qwerty"); + break; + case _PSEUDO_US: + snprintf(layer_str, sizeof(layer_str), "Psuedo_US"); + break; + default: + snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer); + break; + } + break; case _RAISE: - set_led_blue; - break; - case _PSEUDO_US_LOWER: - set_led_yellow; - break; + snprintf(layer_str, sizeof(layer_str), "Raise"); + break; + case _LOWER: + snprintf(layer_str, sizeof(layer_str), "Lower"); + break; case _PSEUDO_US_RAISE: - set_led_cyan; - break; + snprintf(layer_str, sizeof(layer_str), "P_US_Raise"); + break; + case _PSEUDO_US_LOWER: + snprintf(layer_str, sizeof(layer_str), "P_US_Lower"); + break; case _ADJUST: - set_led_magenta; - break; + snprintf(layer_str, sizeof(layer_str), "Adjust"); + break; default: - set_led_green; - break; + snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer); } -}; + matrix_write_ln(matrix, layer_str); + // Last entered keycode + matrix_write_ln(matrix, read_keylog()); + // Modifier state + matrix_write_ln(matrix, read_modifier_state()); + // Host Keyboard LED Status + matrix_write(matrix, read_host_led_state()); +} -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case _PSEUDO_US: - return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST); - break; - case _PSEUDO_US_LOWER: - return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST); - break; - case _PSEUDO_US_RAISE: - return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST); - break; - default: - return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); - break; +void iota_gfx_task_user(void) { + struct CharacterMatrix matrix; + +#if DEBUG_TO_SCREEN + if (debug_enable) { + return; } +#endif + + matrix_clear(&matrix); + render_status(&matrix); + matrix_update(&display, &matrix); } +#endif//SSD1306OLED + bool process_record_user(uint16_t keycode, keyrecord_t *record) { + #ifdef SSD1306OLED + if (record->event.pressed) { + set_keylog(keycode); + } + #endif switch (keycode) { case QWERTY: if (record->event.pressed) { set_single_persistent_default_layer(_QWERTY); } - return false; break; case PSEUDO_US: if (record->event.pressed) { set_single_persistent_default_layer(_PSEUDO_US); } - return false; + break; + case JIS2US: + action_pseudo_lut(record, _QWERTY, keymap_jis2us); break; } return true; diff --git a/keyboards/comet46/keymaps/satt/keymap_jis2us.h b/keyboards/comet46/keymaps/satt/keymap_jis2us.h index cf2bd4f0e8..e32a0579aa 100644 --- a/keyboards/comet46/keymaps/satt/keymap_jis2us.h +++ b/keyboards/comet46/keymaps/satt/keymap_jis2us.h @@ -3,30 +3,30 @@ /* keymap for convert from JIS to US */ const uint16_t PROGMEM keymap_jis2us[][2] = { - [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */ + [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */ - [KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */ - [KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */ - [KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */ - [KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */ - [KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */ - [KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */ - [KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */ - [KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */ - [KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */ - [KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */ - [KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */ - [KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */ - [KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */ - [KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */ - [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */ - [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */ - [KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */ - [KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */ - [KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */ - [KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */ - [KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */ - [KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */ + [KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */ + [KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */ + [KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */ + [KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */ + [KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */ + [KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */ + [KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */ + [KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */ + [KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */ + [KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */ + [KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */ + [KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */ + [KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */ + [KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */ + [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */ + [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */ + [KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */ + [KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */ + [KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */ + [KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */ + [KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */ + [KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */ }; #endif diff --git a/keyboards/comet46/keymaps/satt/rules.mk b/keyboards/comet46/keymaps/satt/rules.mk index dc4355c78f..5839b778b8 100644 --- a/keyboards/comet46/keymaps/satt/rules.mk +++ b/keyboards/comet46/keymaps/satt/rules.mk @@ -1,26 +1,7 @@ SRC += action_pseudo_lut.c -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = no # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -ONEHAND_ENABLE = no # Enable one-hand typing - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif +# If you want to change display settings of the OLED, you need to change the following lines +SRC += ./lib/glcdfont.c \ + ./lib/keylogger.c \ + ./lib/modifier_state_reader.c \ + ./lib/host_led_state_reader.c |