ctucx.git: tastenbrett

a custom 50ish% ortholinear keyboard

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
/* Copyright 2019 Milan Pässler
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include QMK_KEYBOARD_H

// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
    QMKBEST = SAFE_RANGE
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base */
    [0] = LAYOUT(
        KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_MINS, KC_BSPC,
        KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCOLON,          KC_ENT,
        KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          MT(MOD_RSFT, KC_UP),
        KC_LCTL, MO(1),   KC_LGUI, KC_LALT,     KC_SPC,           KC_SPC,       KC_RALT, KC_BSLS, LT(1, KC_LEFT), LT(2, KC_DOWN), MT(MOD_RCTL, KC_RIGHT)
    ),
    [1] = LAYOUT(
        KC_GRV,  KC_1,        KC_2,         KC_3,         KC_4,         KC_5,        KC_6,         KC_7,         KC_8,                KC_9,                KC_0,      KC_EQUAL,  KC_BSPC,
        KC_TAB,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,        XXXXXXX,         KC_QUOTE,       KC_WH_U,
        KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRACKET, KC_RBRACKET,  KC_DEL,           KC_WH_D,
        KC_LCTL, MO(1),       KC_LGUI,    KC_LALT,                  KC_SPC,                    KC_SPC,         KC_RALT,          QMKBEST,            _______,  _______,   _______
    ),
    [2] = LAYOUT(
        RESET,       KC_MUTE, KC_VOLD,  KC_VOLU,   KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI,  RGB_HUD, RGB_SAI,   RGB_SAD, RGB_VAI,  RGB_VAD, XXXXXXX,          XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,        XXXXXXX,                   XXXXXXX,            XXXXXXX, XXXXXXX, MO(2),    XXXXXXX, XXXXXXX
    )

};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case QMKBEST:
            if (record->event.pressed) {
                 if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { 
                     SEND_STRING(":");
                 } else {
                     SEND_STRING(".");
                 }
            } else {
                // when keycode QMKBEST is released
            }
            break;
    }
    return true;
}

/*
void matrix_init_user(void) {

}

void matrix_scan_user(void) {

}

bool led_update_user(led_t led_state) {
    return true;
}
*/