qmk_firmware

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

keymap.c (13947B)


      1 #include QMK_KEYBOARD_H
      2 
      3 #ifdef RGBLIGHT_ENABLE
      4 //Following line allows macro to read current RGB settings
      5 extern rgblight_config_t rgblight_config;
      6 #endif
      7 
      8 // Each layer gets a name for readability, which is then used in the keymap matrix below.
      9 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
     10 // Layer names don't all need to be of the same length, obviously, and you can also skip them
     11 // entirely and just use numbers.
     12 #define _QWERTY 0
     13 #define _LOWER 1
     14 #define _RAISE 2
     15 #define _ADJUST 3
     16 
     17 enum custom_keycodes {
     18   LOWER = SAFE_RANGE,
     19   RAISE,
     20   ADJUST,
     21   RGBRST
     22 };
     23 
     24 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     25 /* QWERTY
     26  * ,-----------------------------------------.                                  ,-----------------------------------------.
     27  * |  `   |   1  |   2  |   3  |   4  |   5  |                                  |   6  |   7  |   8  |   9  |   0  |  -   |
     28  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     29  * | Tab  |   Q  |   W  |   E  |   R  |   T  |                                  |   Y  |   U  |   I  |   O  |   P  |  =   |
     30  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     31  * |LShift|   A  |   S  |   D  |   F  |   G  |                                  |   H  |   J  |   K  |   L  |   ;  |  '   |
     32  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     33  * |LCTRL |   Z  |   X  |   C  |   V  |   B  |-------.-------.  ,---------------|   N  |   M  |   ,  |   .  |   /  |  \   |
     34  * `-----------------------------------------/  Del  /       /   \       \ Bksp \----------------------------------------'
     35  *                          | LAlt |ADJUST| /-------/ Space /     \ Enter \-------\  |   [  |  ]   |
     36  *                          |      |      |/ LOWER /       /       \       \ RAISE \ |      |      |
     37  *                          `-----------------------------'         '------------------------------'
     38  */
     39  [_QWERTY] = LAYOUT(
     40   KC_GRV,   KC_1, KC_2, KC_3, KC_4,    KC_5,                                       KC_6,    KC_7,    KC_8,    KC_9,   KC_0,    KC_MINS,
     41   KC_TAB,   KC_Q, KC_W, KC_E, KC_R,    KC_T,                                       KC_Y,    KC_U,    KC_I,    KC_O,   KC_P,    KC_EQL,
     42   KC_LSFT,  KC_A, KC_S, KC_D, KC_F,    KC_G,                                       KC_H,    KC_J,    KC_K,    KC_L,   KC_SCLN, KC_QUOT,
     43   KC_LCTL,  KC_Z, KC_X, KC_C, KC_V,    KC_B,   KC_DEL, KC_SPC, KC_ENT, KC_BSPC,    KC_N,    KC_M,    KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
     44                               KC_LALT, ADJUST, LOWER,                  RAISE,      KC_LBRC, KC_RBRC
     45   ),
     46 
     47 /* LOWER
     48  * ,-----------------------------------------.                                  ,-----------------------------------------.
     49  * | ESC  |  F1  |  F2  |  F3  |  F4  |  F5  |                                  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |
     50  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     51  * | Tab  |   /  |   -  |   7  |   8  |   9  |                                  |   !  |   @  |   #  |   $  |   %  |  F12 |
     52  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     53  * |LShift|   *  |   +  |   4  |   5  |   6  |                                  |   ^  |   &  |   *  |   (  |   )  |   -  |
     54  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     55  * |LCTRL |   .  |   0  |   1  |   2  |   3  |-------.-------.  ,---------------|      |   _  |   +  |   {  |   }  |   |  |
     56  * `-----------------------------------------/  F11  /       /   \       \  F12  \----------------------------------------'
     57  *                          | LAlt | LGUI | /-------/ Space /     \ Enter \-------\  | Caps |  Num |
     58  *                          |      |      |/ LOWER /       /       \       \       \ |      |      |
     59  *                          `-----------------------------'         '------------------------------'
     60  */
     61  [_LOWER] = LAYOUT(
     62   KC_ESC,  KC_F1,   KC_F2,   KC_F3, KC_F4,   KC_F5,                                        KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
     63   _______, KC_PSLS, KC_PMNS, KC_P7, KC_P8,   KC_P9,                                        KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_F12,
     64   _______, KC_PAST, KC_PPLS, KC_P4, KC_P5,   KC_P6,                                        KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
     65   _______, KC_PDOT, KC_P0,   KC_P1, KC_P2,   KC_P3,   _______,  _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
     66                                     _______, KC_LGUI, _______,                    XXXXXXX, KC_CAPS, KC_NUM
     67 
     68   ),
     69 
     70 /* RAISE
     71  * ,-----------------------------------------.                                  ,-----------------------------------------.
     72  * |      |      |      |      |      |      |                                  |      |      |      |      |      |      |
     73  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     74  * |      |   1  |   2  |   3  |   4  |   5  |                                  |   6  |   7  |   8  |   9  |   0  |      |
     75  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     76  * |  F1  |  F2  |  F3  | F4  |  F5  |  F6  |                                  |      |  ª  |      |      |      |      |
     77  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     78  * |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |-------.-------.  ,---------------|  ©  |  «  |  ¨  |      |      |      |
     79  * `-----------------------------------------/       /       /   \       \       \----------------------------------------'
     80  *                          |      |      | /-------/ Space /     \ Enter \-------\  |      |      |
     81  *                          |      |      |/       /       /       \       \ RAISE \ |      |      |
     82  *                          `-----------------------------'         '------------------------------'
     83  */
     84  [_RAISE] = LAYOUT(
     85   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX,                                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
     86   XXXXXXX, KC_1,    KC_2,    KC_3,    KC_4,     KC_5,                                        KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    XXXXXXX,
     87   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,    KC_F6,                                       XXXXXXX, KC_UP,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
     88   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,   KC_F12,  XXXXXXX, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
     89                                       XXXXXXX,  XXXXXXX, XXXXXXX,                   _______, XXXXXXX, XXXXXXX
     90   ),
     91 
     92 /*   ADJUST
     93  * ,-----------------------------------------.                                  ,-----------------------------------------.
     94  * |QK_BOOT |      |      |      |      |      |                                  | Mute | Vol+ | Play |      |      |      |
     95  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     96  * |      |      |      | PSCR | SLCK | Pause|                                  | Prev | Vol- | Next |      |      |      |
     97  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
     98  * |      |      |      |Insert| Home |PageUP|                                  |      |      |RGB ON| HUE+ | SAT+ | VAL+ |
     99  * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
    100  * |      |      |      |  Del | End  |PageDN|-------.-------.  ,---------------|      |RGB Re| MODE | HUE- | SAT- | VAL- |
    101  * `-----------------------------------------/       /       /   \       \       \----------------------------------------'
    102  *                          |      |ADJUST| /-------/ Space /     \ Enter \-------\  |      |      |
    103  *                          |      |      |/       /       /       \       \       \ |      |      |
    104  *                          `-----------------------------'         '------------------------------'
    105  */
    106  [_ADJUST] = LAYOUT(
    107   QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                     KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX,
    108   XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SCRL, KC_PAUS,                                     KC_MPRV, KC_VOLD, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX,
    109   XXXXXXX, XXXXXXX, XXXXXXX, KC_INS,  KC_HOME, KC_PGUP,                                     XXXXXXX, XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,
    110   XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL,  KC_END,  KC_PGDN, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, RGBRST,  UG_NEXT, UG_HUED, UG_SATD, UG_VALD,
    111                                       XXXXXXX, _______, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX
    112   ) 
    113 };
    114 
    115 
    116 int RGB_current_mode;
    117 
    118 // Setting ADJUST layer RGB back to default
    119 void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
    120   if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
    121     layer_on(layer3);
    122   } else {
    123     layer_off(layer3);
    124   }
    125 }
    126 
    127 void matrix_init_user(void) {
    128     #ifdef RGBLIGHT_ENABLE
    129       RGB_current_mode = rgblight_config.mode;
    130     #endif
    131 }
    132 
    133 #ifdef OLED_ENABLE
    134 
    135 //assign the right code to your layers for OLED display
    136 #define L_QWERTY 0
    137 #define L_LOWER 2
    138 #define L_RAISE 4
    139 #define L_ADJUST 8
    140 
    141 // When add source files to SRC in rules.mk, you can use functions.
    142 const char *read_logo(void);
    143 
    144 bool oled_task_user(void) {
    145   if (is_keyboard_master()) {
    146     static char indctr[2][20][5]=
    147     {
    148       // white icon
    149       {
    150         {0x80,0x81,0x82,0x83,0},
    151         {0x88,0x89,0x8A,0x8B,0},
    152         {0x90,0x91,0x92,0x93,0},
    153         {0x98,0x99,0x9A,0x9B,0},
    154         {0x01,0x02,0x03,0x04,0},
    155         {0xA0,0xA1,0xA2,0xA3,0},
    156         {0xA8,0xA9,0xAA,0xAB,0},
    157         {0xB0,0xB1,0xB2,0xB3,0},
    158         {0xB8,0xB9,0xBA,0xBB,0},
    159         {0x21,0x22,0x23,0x24,0},
    160         {0xC0,0xC1,0xC2,0xC3,0},
    161         {0xC8,0xC9,0xCA,0xCB,0},
    162         {0xD0,0xD1,0xD2,0xD3,0},
    163         {0xD8,0xD9,0xDA,0xDB,0},
    164         {0x41,0x42,0x43,0x44,0},
    165         {0xE0,0xE1,0xE2,0xE3,0},
    166         {0xE8,0xE9,0xEA,0xEB,0},
    167         {0xF0,0xF1,0xF2,0xF3,0},
    168         {0xF8,0xF9,0xFA,0xFB,0},
    169         {0x61,0x62,0x63,0x64,0}
    170       },
    171       // Black icon
    172       {
    173         {0x84,0x85,0x86,0x87,0},
    174         {0x8C,0x8D,0x8E,0x8F,0},
    175         {0x94,0x95,0x96,0x97,0},
    176         {0x9C,0x9D,0x9E,0x9F,0},
    177         {0x05,0x06,0x07,0x08,0},
    178         {0xA4,0xA5,0xA6,0xA7,0},
    179         {0xAC,0xAD,0xAE,0xAF,0},
    180         {0xB4,0xB5,0xB6,0xB7,0},
    181         {0xBC,0xBD,0xBE,0xBF,0},
    182         {0x25,0x26,0x27,0x28,0},
    183         {0xC4,0xC5,0xC6,0xC7,0},
    184         {0xCC,0xCD,0xCE,0xCF,0},
    185         {0xD4,0xD5,0xD6,0xD7,0},
    186         {0xDC,0xDD,0xDE,0xDF,0},
    187         {0x45,0x46,0x47,0x48,0},
    188         {0xE4,0xE5,0xE6,0xE7,0},
    189         {0xEC,0xED,0xEE,0xEF,0},
    190         {0xF4,0xF5,0xF6,0xF7,0},
    191         {0xFC,0xFD,0xFE,0xFF,0},
    192         {0x65,0x66,0x67,0x68,0}
    193       }
    194     };
    195 
    196     int rown = 0;
    197     int rowc = 0;
    198     int rowl = 0;
    199     int rowr = 0;
    200     int rowa = 0;
    201 
    202     //Set Indicator icon
    203     led_t led_state = host_keyboard_led_state();
    204     if (led_state.num_lock) { rown = 1; } else { rown = 0; }
    205     if (led_state.caps_lock) { rowc = 1; } else { rowc = 0; }
    206     if (layer_state == L_LOWER) { rowl = 1; }
    207     if (layer_state == L_RAISE) { rowr = 1; }
    208     if (layer_state == L_ADJUST) { rowa = 1; }
    209 
    210     oled_write(indctr[rowl]  [0], false);
    211     oled_write(indctr[rowr]  [1], false);
    212     oled_write(indctr[rowa]  [2], false);
    213     oled_write(indctr[rowc]  [3], false);
    214     oled_write(indctr[rown]  [4], false);
    215     oled_write_char(0x13, false);
    216     oled_write(indctr[rowl]  [5], false);
    217     oled_write(indctr[rowr]  [6], false);
    218     oled_write(indctr[rowa]  [7], false);
    219     oled_write(indctr[rowc]  [8], false);
    220     oled_write(indctr[rown]  [9], false);
    221     oled_write_char(0x13, false);
    222     oled_write(indctr[rowl]  [10], false);
    223     oled_write(indctr[rowr]  [11], false);
    224     oled_write(indctr[rowa]  [12], false);
    225     oled_write(indctr[rowc]  [13], false);
    226     oled_write(indctr[rown]  [14], false);
    227     oled_write_char(0x13, false);
    228     oled_write(indctr[rowl]  [15], false);
    229     oled_write(indctr[rowr]  [16], false);
    230     oled_write(indctr[rowa]  [17], false);
    231     oled_write(indctr[rowc]  [18], false);
    232     oled_write(indctr[rown]  [19], false);
    233 
    234   }else{
    235     oled_write(read_logo(), false);
    236   }
    237   return false;
    238 }
    239 
    240 #endif
    241 
    242 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    243   switch (keycode) {
    244     case LOWER:
    245       if (record->event.pressed) {
    246         layer_on(_LOWER);
    247       } else {
    248         layer_off(_LOWER);
    249       }
    250       return false;
    251       break;
    252     case RAISE:
    253       if (record->event.pressed) {
    254         layer_on(_RAISE);
    255       } else {
    256         layer_off(_RAISE);
    257       }
    258       return false;
    259       break;
    260     case ADJUST:
    261         if (record->event.pressed) {
    262           layer_on(_ADJUST);
    263         } else {
    264           layer_off(_ADJUST);
    265         }
    266         return false;
    267         break;
    268     case QK_UNDERGLOW_MODE_NEXT:
    269       #ifdef RGBLIGHT_ENABLE
    270         if (record->event.pressed) {
    271           rgblight_mode(RGB_current_mode);
    272           rgblight_step();
    273           RGB_current_mode = rgblight_config.mode;
    274         }
    275       #endif
    276       return false;
    277       break;
    278     case RGBRST:
    279       #ifdef RGBLIGHT_ENABLE
    280         if (record->event.pressed) {
    281           eeconfig_update_rgblight_default();
    282           rgblight_enable();
    283           RGB_current_mode = rgblight_config.mode;
    284         }
    285       #endif
    286       break;
    287   }
    288   return true;
    289 }