|
@@ -1,3 +1,5 @@
|
|
|
|
|
+// Copyright 2023 QMK
|
|
|
|
|
+// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
#include QMK_KEYBOARD_H
|
|
#include QMK_KEYBOARD_H
|
|
|
|
|
|
|
|
enum sofle_layers {
|
|
enum sofle_layers {
|
|
@@ -10,16 +12,14 @@ enum sofle_layers {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
enum custom_keycodes {
|
|
enum custom_keycodes {
|
|
|
- KC_QWERTY = SAFE_RANGE,
|
|
|
|
|
|
|
+ KC_QWERTY = QK_USER,
|
|
|
KC_COLEMAK,
|
|
KC_COLEMAK,
|
|
|
KC_PRVWD,
|
|
KC_PRVWD,
|
|
|
KC_NXTWD,
|
|
KC_NXTWD,
|
|
|
KC_LSTRT,
|
|
KC_LSTRT,
|
|
|
- KC_LEND,
|
|
|
|
|
- KC_DLINE
|
|
|
|
|
|
|
+ KC_LEND
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-
|
|
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
/*
|
|
/*
|
|
|
* QWERTY
|
|
* QWERTY
|
|
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
|
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
|
- KC_LGUI,KC_LALT,KC_LCTL, MO(_LOWER), KC_ENT, KC_SPC, MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
|
|
|
|
|
|
|
+ KC_LGUI,KC_LALT,KC_LCTL, TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
|
|
|
),
|
|
),
|
|
|
/*
|
|
/*
|
|
|
* COLEMAK
|
|
* COLEMAK
|
|
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
|
KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
|
|
KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
|
KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
|
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
|
- KC_LGUI,KC_LALT,KC_LCTL,MO(_LOWER), KC_ENT, KC_SPC, MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
|
|
|
|
|
|
|
+ KC_LGUI,KC_LALT,KC_LCTL,TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
|
|
|
),
|
|
),
|
|
|
/* LOWER
|
|
/* LOWER
|
|
|
* ,-----------------------------------------. ,-----------------------------------------.
|
|
* ,-----------------------------------------. ,-----------------------------------------.
|
|
@@ -104,9 +104,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
*/
|
|
*/
|
|
|
[_RAISE] = LAYOUT(
|
|
[_RAISE] = LAYOUT(
|
|
|
_______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
|
|
_______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
|
|
|
- _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC,
|
|
|
|
|
|
|
+ _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,C(KC_BSPC), KC_BSPC,
|
|
|
_______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
|
|
_______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
|
|
|
- _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
|
|
|
|
|
|
|
+ _______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
|
|
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
|
|
),
|
|
),
|
|
|
/* ADJUST
|
|
/* ADJUST
|
|
@@ -132,86 +132,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
)
|
|
)
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-#ifdef OLED_ENABLE
|
|
|
|
|
-
|
|
|
|
|
-static void render_logo(void) {
|
|
|
|
|
- static const char PROGMEM qmk_logo[] = {
|
|
|
|
|
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
|
|
|
|
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
|
|
|
|
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- oled_write_P(qmk_logo, false);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static void print_status_narrow(void) {
|
|
|
|
|
- // Print current mode
|
|
|
|
|
- oled_write_P(PSTR("\n\n"), false);
|
|
|
|
|
- oled_write_ln_P(PSTR("MODE"), false);
|
|
|
|
|
- oled_write_ln_P(PSTR(""), false);
|
|
|
|
|
- if (keymap_config.swap_lctl_lgui) {
|
|
|
|
|
- oled_write_ln_P(PSTR("MAC"), false);
|
|
|
|
|
- } else {
|
|
|
|
|
- oled_write_ln_P(PSTR("WIN"), false);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- switch (get_highest_layer(default_layer_state)) {
|
|
|
|
|
- case _QWERTY:
|
|
|
|
|
- oled_write_ln_P(PSTR("Qwrt"), false);
|
|
|
|
|
- break;
|
|
|
|
|
- case _COLEMAK:
|
|
|
|
|
- oled_write_ln_P(PSTR("Clmk"), false);
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- oled_write_P(PSTR("Undef"), false);
|
|
|
|
|
- }
|
|
|
|
|
- oled_write_P(PSTR("\n\n"), false);
|
|
|
|
|
- // Print current layer
|
|
|
|
|
- oled_write_ln_P(PSTR("LAYER"), false);
|
|
|
|
|
- switch (get_highest_layer(layer_state)) {
|
|
|
|
|
- case _COLEMAK:
|
|
|
|
|
- case _QWERTY:
|
|
|
|
|
- oled_write_P(PSTR("Base\n"), false);
|
|
|
|
|
- break;
|
|
|
|
|
- case _RAISE:
|
|
|
|
|
- oled_write_P(PSTR("Raise"), false);
|
|
|
|
|
- break;
|
|
|
|
|
- case _LOWER:
|
|
|
|
|
- oled_write_P(PSTR("Lower"), false);
|
|
|
|
|
- break;
|
|
|
|
|
- case _ADJUST:
|
|
|
|
|
- oled_write_P(PSTR("Adj\n"), false);
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- oled_write_ln_P(PSTR("Undef"), false);
|
|
|
|
|
- }
|
|
|
|
|
- oled_write_P(PSTR("\n\n"), false);
|
|
|
|
|
- led_t led_usb_state = host_keyboard_led_state();
|
|
|
|
|
- oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
|
|
|
|
- if (is_keyboard_master()) {
|
|
|
|
|
- return OLED_ROTATION_270;
|
|
|
|
|
- }
|
|
|
|
|
- return rotation;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-bool oled_task_user(void) {
|
|
|
|
|
- if (is_keyboard_master()) {
|
|
|
|
|
- print_status_narrow();
|
|
|
|
|
- } else {
|
|
|
|
|
- render_logo();
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
-layer_state_t layer_state_set_user(layer_state_t state) {
|
|
|
|
|
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
|
switch (keycode) {
|
|
switch (keycode) {
|
|
|
case KC_QWERTY:
|
|
case KC_QWERTY:
|
|
@@ -298,73 +218,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case KC_DLINE:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- register_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- register_code(KC_BSPC);
|
|
|
|
|
- } else {
|
|
|
|
|
- unregister_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- unregister_code(KC_BSPC);
|
|
|
|
|
- }
|
|
|
|
|
- break;
|
|
|
|
|
- case KC_COPY:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- register_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- register_code(KC_C);
|
|
|
|
|
- } else {
|
|
|
|
|
- unregister_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- unregister_code(KC_C);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_PASTE:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- register_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- register_code(KC_V);
|
|
|
|
|
- } else {
|
|
|
|
|
- unregister_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- unregister_code(KC_V);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- case KC_CUT:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- register_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- register_code(KC_X);
|
|
|
|
|
- } else {
|
|
|
|
|
- unregister_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- unregister_code(KC_X);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
- break;
|
|
|
|
|
- case KC_UNDO:
|
|
|
|
|
- if (record->event.pressed) {
|
|
|
|
|
- register_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- register_code(KC_Z);
|
|
|
|
|
- } else {
|
|
|
|
|
- unregister_mods(mod_config(MOD_LCTL));
|
|
|
|
|
- unregister_code(KC_Z);
|
|
|
|
|
- }
|
|
|
|
|
- return false;
|
|
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-#ifdef ENCODER_ENABLE
|
|
|
|
|
-
|
|
|
|
|
-bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
|
|
|
- if (index == 0) {
|
|
|
|
|
- if (clockwise) {
|
|
|
|
|
- tap_code(KC_VOLU);
|
|
|
|
|
- } else {
|
|
|
|
|
- tap_code(KC_VOLD);
|
|
|
|
|
- }
|
|
|
|
|
- } else if (index == 1) {
|
|
|
|
|
- if (clockwise) {
|
|
|
|
|
- tap_code(KC_PGDN);
|
|
|
|
|
- } else {
|
|
|
|
|
- tap_code(KC_PGUP);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return true;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-#endif
|
|
|