qmk_firmware

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

keymap.c (3190B)


      1 /* Copyright 2024 Daniel Reisch (djreisch)
      2  *
      3  * This program is free software: you can redistribute it and/or modify
      4  * it under the terms of the GNU General Public License as published by
      5  * the Free Software Foundation, either version 2 of the License, or
      6  * (at your option) any later version.
      7  *
      8  * This program is distributed in the hope that it will be useful,
      9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11  * GNU General Public License for more details.
     12  *
     13  * You should have received a copy of the GNU General Public License
     14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15  */
     16 
     17 #include QMK_KEYBOARD_H
     18 
     19 enum custom_keycodes { MACRO_GG = QK_USER };
     20 
     21 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     22     /*
     23          Main
     24          ,-----------------------------------------.
     25          | ESC  |   1  |   2  |   3  |   4  |   5  |
     26          |------+------+------+------+------+------|
     27          | Tab  |   G  |   Q  |   W  |   E  |   R  |
     28          |------+------+------+------+------+------|
     29          |   LSHIFT    |   A  |   S  |   D  |   F  |
     30          |------+------+------+------+------+------|
     31          | LCTL |   B  |   Z  |   X  |   C  |   V  |-------|
     32          `-----------------------------------------/       /
     33                                   | LAlt |  FN  | / Space /
     34                                   |      |      |/       /
     35                                   `---------------------'
     36     */
     37     [0] = LAYOUT(KC_ESC,  KC_1,  KC_2, KC_3, KC_4, KC_5,
     38 	             KC_TAB,  KC_G,  KC_Q, KC_W, KC_E, KC_R,
     39                  KC_LSFT, KC_A,  KC_S, KC_D, KC_F,
     40                  KC_LCTL, KC_B,  KC_Z, KC_X, KC_C, KC_V,
     41                  KC_LALT, MO(1), KC_SPACE),
     42 
     43     /*
     44          Alt
     45          ,-----------------------------------------.
     46          | ESC  |   0  |   9  |   8  |   7  |   6  |
     47          |------+------+------+------+------+------|
     48          |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |
     49          |------+------+------+------+------+------|
     50          |   LSHIFT    |   A  |   S  |   Y  |   H  |
     51          |------+------+------+------+------+------|
     52          | LCTL |   B  |   Z  |   X  |   C  |   M  |-------|
     53          `-----------------------------------------/       /
     54                                   | LAlt |  FN  | / Enter /
     55                                   |      |      |/       /
     56                                   `---------------------'
     57     */
     58     [1] = LAYOUT(KC_ESC, KC_0, KC_9, KC_8, KC_7, KC_6,
     59                  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
     60                  KC_LSFT, KC_A, KC_S, KC_Y, KC_H,
     61                  KC_LCTL, MACRO_GG, KC_Z, KC_X, KC_C, KC_M,
     62                  KC_LALT, KC_TRNS, KC_ENTER)
     63 };
     64 
     65 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     66     switch (keycode) {
     67         case MACRO_GG:
     68             if (record->event.pressed) {
     69                 // when keycode MACRO_GG is pressed, press shift+enter, send string "gg" and press enter
     70                 SEND_STRING(SS_DOWN(X_LSFT) SS_DELAY(10) SS_TAP(X_ENTER) SS_UP(X_LSFT) "gg" SS_TAP(X_ENTER));
     71             }
     72             break;
     73     }
     74 
     75     return true;
     76 }