]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/crkbd/keymaps/drashna/keymap.c
Update to drashna userspace and keymaps (#4459)
[qmk_firmware.git] / keyboards / crkbd / keymaps / drashna / keymap.c
index 99dcdb4e1736efe8ac68301bac4614341be61b03..282ee2572534e95a910b8764de719dfe02cd2304 100644 (file)
@@ -26,10 +26,10 @@ enum crkbd_keycodes {
     K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A  \
   ) \
   LAYOUT_wrapper( \
-    KC_ESC,  K01,    K02,     K03,      K04,     K05,                        K06,     K07,     K08,     K09,     K0A,     KC_BSPC, \
-    KC_TAB,  K11,    K12,     K13,      K14,     K15,                        K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
+    KC_ESC,  K01,    K02,     K03,      K04,     K05,                        K06,     K07,     K08,     K09,     K0A,     KC_MINS, \
+    KC_TAB, ALT_T(K11),  K12, K13,      K14,     K15,                        K16,     K17,     K18,     K19,     K1A, RGUI_T(KC_QUOT), \
     OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,                        K26,     K27,     K28,     K29,  CTL_T(K2A), OS_RSFT, \
-                           LT(_LOWER,KC_GRV), KC_SPC,  LALT_T(KC_BSPC),  KC_DEL,  KC_ENT,  RAISE                                    \
+                           LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,     KC_DEL,  KC_ENT,  RAISE                                        \
   )
 #define LAYOUT_crkbd_base_wrapper(...)       LAYOUT_crkbd_base(__VA_ARGS__)
 
@@ -66,14 +66,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   ),
 
   [_LOWER] = LAYOUT_wrapper(
-    KC_TILD, _________________LOWER_L1__________________,                    _________________LOWER_R1__________________, KC_BSPC,
-    KC_F11,  _________________LOWER_L2__________________,                    _________________LOWER_R2__________________, KC_PIPE,
-    KC_F12,  _________________LOWER_L3__________________,                    _________________LOWER_R3__________________, _______,
+    KC_F11,  _________________LOWER_L1__________________,                    _________________LOWER_R1__________________, KC_F11,
+    KC_F12,  _________________LOWER_L2__________________,                    _________________LOWER_R2__________________, KC_PIPE,
+    _______, _________________LOWER_L3__________________,                    _________________LOWER_R3__________________, _______,
                                      _______, _______, _______,        _______, _______, _______
   ),
 
   [_RAISE] = LAYOUT_wrapper( \
-    KC_GRV,  _________________RAISE_L1__________________,                    _________________RAISE_R1__________________, KC_BSPC,
+    _______, _________________RAISE_L1__________________,                    _________________RAISE_R1__________________, _______,
     _______, _________________RAISE_L2__________________,                    _________________RAISE_R2__________________, KC_BSLS,
     _______, _________________RAISE_L3__________________,                    _________________RAISE_R3__________________, _______,
                                      _______, _______, _______,        _______, _______, _______
@@ -81,18 +81,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
   [_ADJUST] = LAYOUT_wrapper( \
     KC_MAKE, _________________ADJUST_L1_________________,                    _________________ADJUST_R1_________________, KC_RESET,
-    VRSN,    _________________ADJUST_L2_________________,                    _________________ADJUST_R2_________________, EPRM,
-    TG_MODS, _________________ADJUST_L3_________________,                    _________________ADJUST_R3_________________, KC_MPLY,
-                                     _______, _______, _______,        _______, _______, _______
+    VRSN,    _________________ADJUST_L2_________________,                    _________________ADJUST_R2_________________, EEP_RST,
+    _______, _________________ADJUST_L3_________________,                    _________________ADJUST_R3_________________, KC_MPLY,
+                                     _______, _______, _______,        KC_NUKE, TG_MODS, _______
   )
 };
 
-int RGB_current_mode;
-
 void matrix_init_keymap(void) {
-    #ifdef RGBLIGHT_ENABLE
-      RGB_current_mode = rgblight_config.mode;
-    #endif
     //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
     #ifdef SSD1306OLED
         iota_gfx_init(!has_usb());   // turns on the display
@@ -102,53 +97,118 @@ void matrix_init_keymap(void) {
   PORTD &= ~(1<<5);
 
   DDRB &= ~(1<<0);
-  PORTB &= ~(1<<0);}
+  PORTB &= ~(1<<0);
+}
 
 //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
 #ifdef SSD1306OLED
 
 // When add source files to SRC in rules.mk, you can use functions.
-const char *read_layer_state(void);
 const char *read_logo(void);
-void set_keylog(uint16_t keycode, keyrecord_t *record);
-const char *read_keylog(void);
-const char *read_keylogs(void);
 char layer_state_str[24];
+char modifier_state_str[24];
+char host_led_state_str[24];
+char keylog_str[24] = {};
+char keylogs_str[21] = {};
+int keylogs_str_idx = 0;
+
 // const char *read_mode_icon(bool swap);
-const char *read_host_led_state(void);
 // void set_timelog(void);
 // const char *read_timelog(void);
 
+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', '_', '-', '=', '[', ']', '\\',
+    '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+  char name = ' ';
+  if (keycode < 60) {
+    name = code_to_name[keycode];
+  }
+
+  // update keylog
+  snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
+           record->event.key.row, record->event.key.col,
+           keycode, name);
+
+  // update keylogs
+  if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
+    keylogs_str_idx = 0;
+    for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
+      keylogs_str[i] = ' ';
+    }
+  }
+
+  keylogs_str[keylogs_str_idx] = name;
+  keylogs_str_idx++;
+}
+
+const char *read_keylog(void) {
+  return keylog_str;
+}
+
+const char *read_keylogs(void) {
+  return keylogs_str;
+}
+
+
+const char* read_modifier_state(void) {
+  uint8_t modifiers = get_mods();
+  uint8_t one_shot = get_oneshot_mods();
+
+  snprintf(modifier_state_str, sizeof(modifier_state_str), "Mods:%s %s %s %s",
+    (modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) ? "CTL" : "   ",
+    (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK) ? "GUI" : "   ",
+    (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) ? "ALT" : "   ",
+    (modifiers & MODS_SHIFT_MASK || one_shot & MODS_SHIFT_MASK) ? "SFT" : "   "
+  );
+
+  return modifier_state_str;
+}
+
+const char *read_host_led_state(void) {
+  uint8_t leds = host_keyboard_leds();
+
+  snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
+    (leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
+    (leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
+    (leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- "
+  );
+
+  return host_led_state_str;
+}
 
 const char* read_layer_state(void) {
-  switch (layer_state) {
-    case _QWERTY:
-      switch (default_layer_state) {
+  switch (biton32(layer_state)) {
+    case _RAISE:
+      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise  ");
+      break;
+    case _LOWER:
+      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower  ");
+      break;
+    case _ADJUST:
+      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust ");
+      break;
+    default:
+      switch (biton32(default_layer_state)) {
         case _QWERTY:
-          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: QWERTY");
+          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty ");
           break;
         case _COLEMAK:
           snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak");
           break;
         case _DVORAK:
-          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak");
+          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak ");
           break;
         case _WORKMAN:
           snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Workman");
           break;
       }
       break;
-    case _RAISE:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise");
-      break;
-    case _LOWER:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower");
-      break;
-    case _ADJUST:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
-      break;
-    default:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
   }
 
     return layer_state_str;
@@ -160,12 +220,13 @@ void matrix_scan_keymap(void) {
 
 void matrix_render_user(struct CharacterMatrix *matrix) {
   if (is_master) {
-    // If you want to change the display of OLED, you need to change here
+    //If you want to change the display of OLED, you need to change here
     matrix_write_ln(matrix, read_layer_state());
-    matrix_write_ln(matrix, read_keylog());
+    matrix_write_ln(matrix, read_modifier_state());
+    // matrix_write_ln(matrix, read_keylog());
     matrix_write_ln(matrix, read_keylogs());
-    //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
-    matrix_write_ln(matrix, read_host_led_state());
+    // matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
+    matrix_write(matrix, read_host_led_state());
     //matrix_write_ln(matrix, read_timelog());
   } else {
     matrix_write(matrix, read_logo());
@@ -187,8 +248,14 @@ void iota_gfx_task_user(void) {
 }
 
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  if (record->event.pressed) {
-    set_keylog(keycode, record);
+  switch (keycode) {
+    case KC_A ... KC_SLASH:
+    case KC_F1 ... KC_F12:
+    case KC_INSERT ... KC_UP:
+    case KC_KP_SLASH ... KC_KP_DOT:
+    case KC_F13 ... KC_F24:
+    if (record->event.pressed) { set_keylog(keycode, record); }
+      break;
     // set_timelog();
   }
   return true;