qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

keymap.c (8989B)


      1 #include QMK_KEYBOARD_H
      2 
      3 // Each layer gets a name for readability, which is then used in the keymap matrix below.
      4 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
      5 // Layer names don't all need to be of the same length, obviously, and you can also skip them
      6 // entirely and just use numbers.
      7 enum layers {
      8     _QWERTY,
      9     _LOWER,
     10     _RAISE,
     11     _ADJUST,
     12 };
     13 
     14 enum custom_keycodes {
     15   LOWER = SAFE_RANGE,
     16   RAISE,
     17   ADJUST,
     18   RGBRST
     19 };
     20 
     21 
     22 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     23   [_QWERTY] = LAYOUT(
     24  //,-----------------------------------------------.          ,-----------------------------------------------.
     25      KC_ESC,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,              KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_BSPC,
     26  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     27     KC_LCTL,   KC_A,   KC_S,   KC_D,   KC_F,   KC_G,              KC_H,   KC_J,   KC_K,   KC_L,KC_SCLN,KC_QUOT,
     28  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     29      ADJUST,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,              KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_BSLS,
     30  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     31     KC_LSFT,                          LOWER,KC_LGUI,           KC_LALT,  RAISE,                        KC_RSFT,
     32  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     33                                      KC_SPC,                            KC_ENT
     34  //`-----------------------------------------------'          `-----------------------------------------------'
     35  ),
     36  [_LOWER] = LAYOUT(
     37  //,-----------------------------------------------.          ,-----------------------------------------------.
     38     KC_TRNS,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,              KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_TRNS,
     39  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     40     KC_TRNS,KC_HOME,KC_LEFT,  KC_UP,KC_RGHT,KC_PGUP,             KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,
     41  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     42     KC_TRNS, KC_END,KC_PSCR,KC_DOWN, KC_INS,KC_PGDN,             KC_F7,  KC_F8,  KC_F9, KC_F10, KC_F11, KC_F12,
     43  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     44     KC_TRNS,                        KC_TRNS,KC_TRNS,           KC_TRNS,KC_TRNS,                        KC_TRNS,
     45  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     46                                     KC_TRNS,                           KC_TRNS
     47  //`-----------------------------------------------'          `-----------------------------------------------'
     48  ),
     49  [_RAISE] = LAYOUT(
     50  //,-----------------------------------------------.          ,-----------------------------------------------.
     51     KC_TRNS,KC_EXLM,  KC_AT,KC_HASH, KC_DLR,KC_PERC,           KC_CIRC,KC_PSLS,KC_PAST,KC_PMNS,KC_PPLS,KC_TRNS,
     52  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     53     KC_TRNS,KC_RBRC,KC_LABK,KC_ASTR,KC_SCLN,KC_LBRC,              KC_1,   KC_2,   KC_3,   KC_4,   KC_5, KC_EQL,
     54  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     55     KC_TRNS,KC_BSLS,KC_RABK,KC_LPRN,KC_INT3,KC_UNDS,              KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_PENT,
     56  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+--- ---+-------+-------|
     57     KC_TRNS,                        KC_TRNS,KC_TRNS,           KC_TRNS,KC_TRNS,                        KC_TRNS,
     58  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+--- ---+-------+-------|
     59                                     KC_TRNS,                           KC_TRNS
     60  //`-----------------------------------------------'          `-----------------------------------------------'
     61  ),
     62  [_ADJUST] = LAYOUT(
     63  //,-----------------------------------------------.          ,-----------------------------------------------.
     64     KC_TRNS, RGBRST,UG_TOGG,  KC_NO,  KC_NO,  KC_NO,             KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
     65  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     66     KC_TRNS,UG_HUEU,UG_SATU,UG_VALU,AG_SWAP,  KC_NO,             KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
     67  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     68     KC_TRNS,UG_HUED,UG_SATD,UG_VALD,AG_NORM,  KC_NO,             KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,
     69  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     70     KC_TRNS,                        KC_TRNS,KC_TRNS,           KC_TRNS,KC_TRNS,                        KC_TRNS,
     71  //|-------+-------+-------+-------+-------+-------|          |-------+-------+-------+-------+-------+-------|
     72                                     KC_TRNS,                           KC_TRNS
     73  //`-----------------------------------------------'          `-----------------------------------------------'
     74  )
     75 };
     76 
     77 int RGB_current_mode;
     78 
     79 void keyboard_post_init_user(void) {
     80     #ifdef RGBLIGHT_ENABLE
     81       RGB_current_mode = rgblight_get_mode();
     82     #endif
     83 }
     84 
     85 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     86   if (record->event.pressed) {
     87     // set_timelog();
     88   }
     89 
     90   switch (keycode) {
     91       case LOWER:
     92       if (record->event.pressed) {
     93         layer_on(_LOWER);
     94         update_tri_layer(_LOWER, _RAISE, _ADJUST);
     95       } else {
     96         layer_off(_LOWER);
     97         update_tri_layer(_LOWER, _RAISE, _ADJUST);
     98       }
     99       return false;
    100       break;
    101     case RAISE:
    102       if (record->event.pressed) {
    103         layer_on(_RAISE);
    104         update_tri_layer(_LOWER, _RAISE, _ADJUST);
    105       } else {
    106         layer_off(_RAISE);
    107         update_tri_layer(_LOWER, _RAISE, _ADJUST);
    108       }
    109       return false;
    110       break;
    111     case ADJUST:
    112         if (record->event.pressed) {
    113           layer_on(_ADJUST);
    114         } else {
    115           layer_off(_ADJUST);
    116         }
    117         return false;
    118         break;
    119     case QK_UNDERGLOW_TOGGLE:
    120       #ifdef RGBLIGHT_ENABLE
    121         if (record->event.pressed) {
    122           rgblight_mode(RGB_current_mode);
    123           rgblight_step();
    124           RGB_current_mode = rgblight_get_mode();
    125         }
    126       #endif
    127       return false;
    128       break;
    129     case RGBRST:
    130       #ifdef RGBLIGHT_ENABLE
    131         if (record->event.pressed) {
    132           eeconfig_update_rgblight_default();
    133           rgblight_enable();
    134           RGB_current_mode = rgblight_get_mode();
    135         }
    136       #endif
    137       break;
    138   }
    139   return true;
    140 }
    141 
    142 #ifdef OLED_ENABLE
    143 
    144 oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    145     if (!is_keyboard_master()) {
    146         return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
    147     }
    148 
    149     return rotation;
    150 }
    151 
    152 bool oled_task_user(void) {
    153   void render_status(void) {
    154     // Host Keyboard Layer Status
    155     oled_write_P(PSTR("Layer: "), false);
    156 
    157     switch (get_highest_layer(layer_state)) {
    158         case _QWERTY:
    159             oled_write_P(PSTR("Default\n"), false);
    160             break;
    161         case _LOWER:
    162             oled_write_P(PSTR("LOWER\n"), false);
    163             break;
    164         case _RAISE:
    165             oled_write_P(PSTR("RAISE\n"), false);
    166             break;
    167         case _ADJUST:
    168             oled_write_P(PSTR("ADJUST\n"), false);
    169             break;
    170         default:
    171             // Or use the write_ln shortcut over adding '\n' to the end of your string
    172             oled_write_ln_P(PSTR("Undefined"), false);
    173     }
    174 
    175     // Host Keyboard LED Status
    176     led_t led_state = host_keyboard_led_state();
    177     oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);
    178     oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    179     oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
    180   }
    181 
    182 
    183   void render_logo(void) {
    184       static const char PROGMEM qmk_logo[] = {
    185           0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
    186           0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
    187           0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
    188       };
    189 
    190       oled_write_P(qmk_logo, false);
    191   }
    192 
    193     if (is_keyboard_master()) {
    194         render_status();  // Renders the current keyboard state (layer, lock, caps, scroll, etc)
    195     } else {
    196         render_logo();  // Renders a static logo
    197     }
    198     return false;
    199 }
    200 #endif