qmk_firmware

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

keymap.c (3864B)


      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 
      8 enum custom_layers {
      9   _BASE,
     10   _LOWER,
     11   _RAISE,
     12   _ADJUST
     13 };
     14 
     15 enum custom_keycodes {
     16   LOWER = SAFE_RANGE,
     17   RAISE,
     18 };
     19 
     20 // Custom macros
     21 #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl
     22 #define CTL_TTAB    CTL_T(KC_TAB)               // Tap for Esc, hold for Ctrl
     23 #define CTL_ENT     CTL_T(KC_ENT)               // Tap for Enter, hold for Ctrl
     24 #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift
     25 // Requires KC_TRNS/_______ for the trigger key in the destination layer
     26 #define LT_MC(kc)   LT(_MOUSECURSOR, kc)        // L-ayer T-ap M-ouse C-ursor
     27 #define LT_RAI(kc)  LT(_RAISE, kc)              // L-ayer T-ap to Raise
     28 
     29 
     30 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     31 
     32 /* Base
     33  * ,------.
     34  * | Esc  | 
     35  * |------+------+-------------.
     36  * |   :  |   7  |   8  |   9  | 
     37  * |------+------+------+------|
     38  * | RAISE|   4  |   5  |   6  | 
     39  * |------+------+------+------|
     40  * | LOWER|   1  |   2  |   3  |
     41  * `---------------------------'
     42  */
     43 [_BASE] = LAYOUT(
     44   KC_ESC,
     45   KC_COLN, KC_P7,  KC_P8,  KC_P9,
     46   RAISE,   KC_P4,  KC_P5,  KC_P6,
     47   LOWER,   KC_P1,  KC_P2,  KC_P3
     48 ),
     49 
     50 /* Lower
     51  * ,------.
     52  * | Nmlk | 
     53  * |------+------+-------------.
     54  * |  :   |   /  |   *  |   -  | 
     55  * |------+------+------+------|
     56  * |      |      |   =  |   +  | 
     57  * |------+------+------+------|
     58  * |      |  0   |   .  |  ENT |
     59  * `---------------------------'
     60  */
     61 [_LOWER] = LAYOUT(
     62   KC_NUM,
     63   KC_COLN,  KC_PSLS, KC_PAST, KC_PMNS,
     64   _______,  XXXXXXX, KC_EQL,  KC_PPLS,
     65   _______,  KC_P0,   KC_PDOT, KC_PENT
     66 ),
     67 
     68 /* Raise
     69  * ,------.
     70  * | Esc  | 
     71  * |------+------+-------------.
     72  * |RGB TG|RGB M+|RGB M-|      |
     73  * |------+------+------+------|
     74  * |      |RGB H+|RGB S+|RGB V+| 
     75  * |------+------+------+------|
     76  * |  `   |RGB H-|RGB S-|RGB V-|
     77  * `---------------------------'
     78  */
     79 [_RAISE] = LAYOUT(
     80   KC_NUM,
     81   RM_TOGG, RM_NEXT, RM_PREV,  XXXXXXX,
     82   _______, RM_HUEU, RM_SATU,  RM_VALU,
     83   _______, RM_HUED, RM_SATD,  RM_VALD
     84 
     85 ),
     86 
     87 /* Adjust
     88  * ,------.
     89  * | DFU  | 
     90  * |------+------+-------------.
     91  * |HPT TG|HPT FB|HPT RS| BKSP | 
     92  * |------+------+------+------|
     93  * |      |HPT M+|      |      | 
     94  * |------+------+------+------|
     95  * |      |HPT M-|Clk TG| Del  |
     96  * `---------------------------'
     97  */
     98 [_ADJUST] = LAYOUT(
     99   QK_BOOT,
    100   HF_TOGG, HF_FDBK, HF_RST,  KC_BSPC,
    101   _______, HF_NEXT, XXXXXXX, XXXXXXX,
    102   _______, HF_PREV, CK_TOGG, KC_DEL
    103 ),
    104 
    105 
    106 };
    107 
    108 layer_state_t layer_state_set_user(layer_state_t state) {
    109   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
    110 }
    111 
    112 
    113 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    114   switch (keycode) {
    115     case LOWER:
    116       if (record->event.pressed) {
    117           //not sure how to have keyboard check mode and set it to a variable, so my work around
    118           //uses another variable that would be set to true after the first time a reactive key is pressed.
    119         layer_on(_LOWER);
    120       } else {
    121         layer_off(_LOWER);
    122       }
    123       return false;
    124       break;
    125     case RAISE:
    126       if (record->event.pressed) {
    127         //not sure how to have keyboard check mode and set it to a variable, so my work around
    128         //uses another variable that would be set to true after the first time a reactive key is pressed.
    129         layer_on(_RAISE);
    130       } else {
    131         layer_off(_RAISE);
    132       }
    133       return false;
    134       break;
    135   }
    136   return true;
    137 }
    138 
    139 bool music_mask_user(uint16_t keycode) {
    140   switch (keycode) {
    141     case RAISE:
    142     case LOWER:
    143       return false;
    144     default:
    145       return true;
    146   }
    147 }