From 4d4b845cf59749c4af4f91d05c39b9196b00ab99 Mon Sep 17 00:00:00 2001
From: marksard <38324387+marksard@users.noreply.github.com>
Date: Tue, 17 Jul 2018 12:08:31 +0900
Subject: [PATCH] Keymap: Modified of 'Helix five rows JIS" keymap (#3425)
* Change key layout in raise-layer.
* Improvement update cycle to mouse key changes.
* Update the readme.md
---
.../helix/rev2/keymaps/five_rows_jis/config.h | 17 +
.../helix/rev2/keymaps/five_rows_jis/keymap.c | 484 +++++++++---------
.../rev2/keymaps/five_rows_jis/readme.md | 8 +-
.../rev2/keymaps/five_rows_jis/readme_jp.md | 8 +-
4 files changed, 266 insertions(+), 251 deletions(-)
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/config.h b/keyboards/helix/rev2/keymaps/five_rows_jis/config.h
index b4390551e..f0904a6f9 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/config.h
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/config.h
@@ -114,4 +114,21 @@ along with this program. If not, see .
#define USB_MAX_POWER_CONSUMPTION 100
#endif
+#ifdef MOUSEKEY_ENABLE
+ #undef MOUSEKEY_INTERVAL
+ #define MOUSEKEY_INTERVAL 0
+
+ #undef MOUSEKEY_TIME_TO_MAX
+ #define MOUSEKEY_TIME_TO_MAX 150
+
+ #undef MOUSEKEY_MAX_SPEED
+ #define MOUSEKEY_MAX_SPEED 3
+
+ #undef MOUSEKEY_MOVE_DELTA
+ #define MOUSEKEY_MOVE_DELTA 5
+
+ #undef MOUSEKEY_DELAY
+ #define MOUSEKEY_DELAY 0
+#endif
+
#endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
index 480ae2f03..eeb22df7a 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
@@ -159,9 +159,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Raise JIS Normal
* ,-----------------------------------------. ,-----------------------------------------.
- * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | | | | Home |PageUp|
+ * | | | | | | | | F12 | | | | Home |PageUp|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | End |PageDn|
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
@@ -171,8 +171,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT( \
- KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, \
+ _______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F12 , XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, \
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END, KC_PGDN, \
_______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, \
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R \
@@ -180,9 +180,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Raise JIS Exchange L and R
* ,-----------------------------------------. ,-----------------------------------------.
- * | F7 | F8 | F9 | F10 | F11 | F12 | | F1 | F2 | F3 | F4 | F5 | F6 |
+ * | F6 | F7 | F8 | F9 | F10 | F11 | | | F1 | F2 | F3 | F4 | F5 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | | | | | | | | |
+ * | F12 | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
@@ -192,8 +192,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
[_RAI_E] = LAYOUT( \
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, \
+ KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, _______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
_______, _______, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX \
@@ -221,194 +221,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
};
-#elif HELIX_ROWS == 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // Do it yourself :)
-};
-
#else
#error "undefined keymaps"
#endif
+#ifdef SSD1306OLED
+char keylog[20] = {};
+const char code_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ',
+ ' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
+
+inline void set_keylog(uint16_t keycode, keyrecord_t *record)
+{
+ char name = ' ';
+ uint8_t leds = host_keyboard_leds();
+
+ if (keycode < 60)
+ {
+ name = code_to_name[keycode];
+ }
+
+ // update keylog
+ snprintf(keylog, sizeof(keylog), "\n%dx%d %2x %c %c %c %c",
+ record->event.key.row,
+ record->event.key.col,
+ keycode,
+ name,
+ (leds & (1<event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_qwerty);
- #endif
- persistent_default_layer_set(1UL<<_BASE);
- }
- return false;
- break;
- case BAS_E:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_qwerty);
- #endif
- persistent_default_layer_set(1UL<<_BAS_E);
- }
- return false;
- break;
- case LOWER:
- toggle_lower_raise_layer(record->event.pressed, _LOWER, _LOWER, _RAISE);
- return false;
- break;
- case LOW_E:
- toggle_lower_raise_layer(record->event.pressed, _LOW_E, _LOW_E, _RAI_E);
- return false;
- break;
- case RAISE:
- toggle_lower_raise_layer(record->event.pressed, _RAISE, _LOWER, _RAISE);
- return false;
- break;
- case RAI_E:
- toggle_lower_raise_layer(record->event.pressed, _RAI_E, _LOW_E, _RAI_E);
- return false;
- break;
- case ADJUST:
- if (record->event.pressed) {
- #ifdef RGBLIGHT_ENABLE
- rgblight_mode(14);
- #endif
- layer_on(_ADJUST);
- } else {
- #ifdef RGBLIGHT_ENABLE
- rgblight_mode(RGB_current_mode);
- #endif
- layer_off(_ADJUST);
- }
- return false;
- break;
- //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
- case RGB_MOD:
- #ifdef RGBLIGHT_ENABLE
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- rgblight_step();
- RGB_current_mode = rgblight_config.mode;
- }
- #endif
- return false;
- break;
- case EISU:
- if (record->event.pressed) {
- if (keymap_config.swap_lalt_lgui==false) {
- register_code(KC_LANG2);
- } else {
- SEND_STRING(SS_LALT("`"));
- }
- } else {
- unregister_code(KC_LANG2);
- }
- return false;
- break;
- #ifdef KANA_ENABLE
- case KANA:
- if (record->event.pressed) {
- if(keymap_config.swap_lalt_lgui==false){
- register_code(KC_LANG1);
- }else{
- SEND_STRING(SS_LALT("`"));
- }
- } else {
- unregister_code(KC_LANG1);
- }
- return false;
- break;
- #endif
- case RGBRST:
- #ifdef RGBLIGHT_ENABLE
- if (record->event.pressed) {
- eeconfig_update_rgblight_default();
- rgblight_enable();
- RGB_current_mode = rgblight_config.mode;
- }
- #endif
- break;
- }
-
- return true;
- // return process_layer_control(keycode, record, false) ? process_layer_control(keycode, record, true) : true;
-}
-
-void matrix_init_user(void) {
- #ifdef AUDIO_ENABLE
- startup_user();
- #endif
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
-}
-
-
-#ifdef AUDIO_ENABLE
void startup_user()
{
@@ -431,8 +283,168 @@ void music_scale_user(void)
PLAY_SONG(music_scale);
}
+#else
+float tone_qwerty;
+float music_scale;
+#define PLAY_SONG(tone)
#endif
+// define variables for reactive RGB
+int RGB_current_mode;
+#ifdef ADJUST_MACRO_ENABLE
+// Setting ADJUST layer RGB back to default
+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ RGBLIGHT(RGB_current_mode);
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
+#define ADJUST_MACRO(layer1, layer2, layer3) update_tri_layer_RGB(layer1, layer2, layer3)
+#else
+#define ADJUST_MACRO(layer1, layer2, layer3)
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT(mode) rgblight_mode(mode)
+#else
+#define RGBLIGHT(mode)
+#endif
+
+
+inline void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+bool TOG_STATUS = false;
+
+void toggle_lower_raise_layer(bool pressed, uint16_t dist_layer, uint16_t lower_layer, uint16_t raise_layer) {
+ if (pressed) {
+ //not sure how to have keyboard check mode and set it to a variable, so my work around
+ //uses another variable that would be set to true after the first time a reactive key is pressed.
+ if (!TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
+ TOG_STATUS = !TOG_STATUS;
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_mode((dist_layer == _LOWER || dist_layer == _LOW_E) ? 16 : 15);
+ #endif
+ }
+
+ layer_on(dist_layer);
+ ADJUST_MACRO(lower_layer, raise_layer, _ADJUST);
+ } else {
+ RGBLIGHT(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
+ TOG_STATUS = false;
+ layer_off(dist_layer);
+ ADJUST_MACRO(lower_layer, raise_layer, _ADJUST);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ #ifdef SSD1306OLED
+ if (record->event.pressed) {
+ set_keylog(keycode, record);
+ }
+ #endif
+
+ switch (keycode) {
+ case BASE:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_qwerty);
+ persistent_default_layer_set(1UL<<_BASE);
+ }
+ break;
+ case BAS_E:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_qwerty);
+ persistent_default_layer_set(1UL<<_BAS_E);
+ }
+ break;
+ case LOWER:
+ toggle_lower_raise_layer(record->event.pressed, _LOWER, _LOWER, _RAISE);
+ break;
+ case LOW_E:
+ toggle_lower_raise_layer(record->event.pressed, _LOW_E, _LOW_E, _RAI_E);
+ break;
+ case RAISE:
+ toggle_lower_raise_layer(record->event.pressed, _RAISE, _LOWER, _RAISE);
+ break;
+ case RAI_E:
+ toggle_lower_raise_layer(record->event.pressed, _RAI_E, _LOW_E, _RAI_E);
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ RGBLIGHT(14);
+ layer_on(_ADJUST);
+ } else {
+ RGBLIGHT(RGB_current_mode);
+ layer_off(_ADJUST);
+ }
+ break;
+ //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
+ case RGB_MOD:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ #endif
+ break;
+ case EISU:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lalt_lgui==false) {
+ register_code(KC_LANG2);
+ } else {
+ SEND_STRING(SS_LALT("`"));
+ }
+ } else {
+ unregister_code(KC_LANG2);
+ }
+ break;
+ #ifdef KANA_ENABLE
+ case KANA:
+ if (record->event.pressed) {
+ if(keymap_config.swap_lalt_lgui==false){
+ register_code(KC_LANG1);
+ }else{
+ SEND_STRING(SS_LALT("`"));
+ }
+ } else {
+ unregister_code(KC_LANG1);
+ }
+ break;
+ #endif
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ #endif
+ break;
+ default:
+ return true;
+ }
+
+ return false;
+}
+
+void matrix_init_user(void) {
+ #ifdef AUDIO_ENABLE
+ startup_user();
+ #endif
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ #ifdef SSD1306OLED
+ TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
+ iota_gfx_init(!has_usb()); // turns on the display
+ #endif
+}
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
@@ -441,7 +453,7 @@ void matrix_scan_user(void) {
iota_gfx_task(); // this is what updates the display continuously
}
-void matrix_update(struct CharacterMatrix *dest,
+inline 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));
@@ -459,76 +471,62 @@ void matrix_update(struct CharacterMatrix *dest,
#define L_RAI_E (1<<_RAI_E)
#define L_ADJUST_TRIE (L_ADJUST|L_RAI_E|L_LOW_E)
-static void render_logo(struct CharacterMatrix *matrix) {
+const char helix_logo[]={
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
+ 0};
+inline void render_logo(struct CharacterMatrix *matrix) {
- static char logo[]={
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
- 0};
- matrix_write(matrix, logo);
- //matrix_write_P(&matrix, PSTR(" Split keyboard kit"));
+ matrix_write(matrix, helix_logo);
}
-
-
-void render_status(struct CharacterMatrix *matrix) {
+const char mac_win_logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
+inline void render_status(struct CharacterMatrix *matrix) {
// Render to mode icon
- static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
if(keymap_config.swap_lalt_lgui==false){
- matrix_write(matrix, logo[0][0]);
+ matrix_write(matrix, mac_win_logo[0][0]);
matrix_write_P(matrix, PSTR("\n"));
- matrix_write(matrix, logo[0][1]);
+ matrix_write(matrix, mac_win_logo[0][1]);
} else {
- matrix_write(matrix, logo[1][0]);
+ matrix_write(matrix, mac_win_logo[1][0]);
matrix_write_P(matrix, PSTR("\n"));
- matrix_write(matrix, logo[1][1]);
+ matrix_write(matrix, mac_win_logo[1][1]);
}
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
- char buf[16];
+ char buf[20];
matrix_write_P(matrix, PSTR("\nLayer: "));
- switch (layer_state) {
- case L_BASE:
- if (default_layer_state == (1UL<<_BAS_E)) {
- matrix_write_P(matrix, PSTR("Base_Ex"));
- } else {
- matrix_write_P(matrix, PSTR("Base"));
- }
- break;
- case L_RAISE:
- matrix_write_P(matrix, PSTR("Raise"));
- break;
- case L_RAI_E:
- matrix_write_P(matrix, PSTR("Raise_Ex"));
- break;
- case L_LOWER:
- matrix_write_P(matrix, PSTR("Lower"));
- break;
- case L_LOW_E:
- matrix_write_P(matrix, PSTR("Lower_Ex"));
- break;
- case L_ADJUST:
- case L_ADJUST_TRI:
- case L_ADJUST_TRIE:
- matrix_write_P(matrix, PSTR("Adjust"));
- break;
- default:
- snprintf(buf, sizeof(buf), "Undef-%d", (short)layer_state);
- matrix_write(matrix, buf);
- }
+ switch (layer_state) {
+ case L_BASE:
+ matrix_write_P(matrix, default_layer_state == (1UL<<_BAS_E) ? PSTR("BaseEx") : PSTR("Base"));
+ break;
+ case L_RAISE:
+ matrix_write_P(matrix, PSTR("Raise"));
+ break;
+ case L_RAI_E:
+ matrix_write_P(matrix, PSTR("RaiseEx"));
+ break;
+ case L_LOWER:
+ matrix_write_P(matrix, PSTR("Lower"));
+ break;
+ case L_LOW_E:
+ matrix_write_P(matrix, PSTR("LowerEx"));
+ break;
+ case L_ADJUST:
+ case L_ADJUST_TRI:
+ case L_ADJUST_TRIE:
+ matrix_write_P(matrix, PSTR("Adjust"));
+ break;
+ default:
+ snprintf(buf, sizeof(buf), "%d", (short)layer_state);
+ matrix_write(matrix, buf);
+ }
- // Host Keyboard LED Status
- char led[32];
- snprintf(led, sizeof(led), "\n%s %s %s",
- (host_keyboard_leds() & (1<