diff options
| author | Konstantin Đorđević <vomindoraan@gmail.com> | 2019-01-14 18:09:47 +0100 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-01-14 09:09:47 -0800 |
| commit | 9105bf2434c54c40362173e1734a24485cfbe702 (patch) | |
| tree | 5a31a50767ad464b5d3d75341f6f0d9686a116f4 /users/konstantin/konstantin.c | |
| parent | ee96b7a89dd2de78b9372d3b8ce899757e3190c4 (diff) | |
| download | qmk_firmware-9105bf2434c54c40362173e1734a24485cfbe702.tar.gz qmk_firmware-9105bf2434c54c40362173e1734a24485cfbe702.zip | |
Add personal userspace, update keymaps (#4845)
* Add kbd6x:konstantin keymap
* Prevent tap dance from sending LShift as a weak mod in KBD6X
* Move config.h and rules.mk definitions into userspace
* Add UC_WIN to UNICODE_SELECTED_MODES
* Temporarily use Bootmagic until Command is fixed
* Move common behavior from keyboards into userspace
* Update kbd6x:konstantin keymap and userspace
* Make a RCTRL layer in kbd6x:konstantin
* Make KC_ESC turn off layers
* KC_ESC turns L_FN off only if it was locked on
* Add missing record->event.pressed checks
* Move numpad toggling logic into function
* Disable Bootmagic, enable KEYBOARD_SHARED_EP with Command
Diffstat (limited to 'users/konstantin/konstantin.c')
| -rw-r--r-- | users/konstantin/konstantin.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c new file mode 100644 index 000000000..977111c1f --- /dev/null +++ b/users/konstantin/konstantin.c | |||
| @@ -0,0 +1,77 @@ | |||
| 1 | #include "konstantin.h" | ||
| 2 | |||
| 3 | #ifdef LAYER_NUMPAD | ||
| 4 | static void toggle_numpad(void) { | ||
| 5 | layer_invert(L_NUMPAD); | ||
| 6 | bool num_lock = host_keyboard_leds() & 1<<USB_LED_NUM_LOCK; | ||
| 7 | if (num_lock != (bool)IS_LAYER_ON(L_NUMPAD)) { | ||
| 8 | tap_code(KC_NLCK); // Toggle Num Lock to match layer state | ||
| 9 | } | ||
| 10 | } | ||
| 11 | #endif | ||
| 12 | |||
| 13 | __attribute__((weak)) | ||
| 14 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||
| 15 | return true; | ||
| 16 | } | ||
| 17 | |||
| 18 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 19 | if (!process_record_keymap(keycode, record)) { | ||
| 20 | return false; | ||
| 21 | } | ||
| 22 | |||
| 23 | switch (keycode) { | ||
| 24 | case CLEAR: | ||
| 25 | if (record->event.pressed) { | ||
| 26 | SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE)); | ||
| 27 | } | ||
| 28 | return false; | ||
| 29 | |||
| 30 | #ifdef LAYER_FN | ||
| 31 | static bool fn_lock; | ||
| 32 | |||
| 33 | case FN_FNLK: | ||
| 34 | if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { | ||
| 35 | fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this | ||
| 36 | } | ||
| 37 | return true; | ||
| 38 | #endif | ||
| 39 | |||
| 40 | #ifdef LAYER_NUMPAD | ||
| 41 | case NUMPAD: | ||
| 42 | if (record->event.pressed) { | ||
| 43 | toggle_numpad(); | ||
| 44 | } | ||
| 45 | return false; | ||
| 46 | #endif | ||
| 47 | |||
| 48 | case KC_ESC: | ||
| 49 | if (record->event.pressed) { | ||
| 50 | #ifdef LAYER_NUMPAD | ||
| 51 | if (IS_LAYER_ON(L_NUMPAD)) { | ||
| 52 | toggle_numpad(); | ||
| 53 | return false; | ||
| 54 | } | ||
| 55 | #endif | ||
| 56 | #ifdef LAYER_FN | ||
| 57 | if (IS_LAYER_ON(L_FN) && fn_lock) { | ||
| 58 | layer_off(L_FN); | ||
| 59 | return fn_lock = false; | ||
| 60 | } | ||
| 61 | #endif | ||
| 62 | } | ||
| 63 | return true; | ||
| 64 | |||
| 65 | default: | ||
| 66 | return true; | ||
| 67 | } | ||
| 68 | } | ||
| 69 | |||
| 70 | __attribute__((weak)) | ||
| 71 | uint32_t layer_state_set_keymap(uint32_t state) { | ||
| 72 | return state; | ||
| 73 | } | ||
| 74 | |||
| 75 | uint32_t layer_state_set_user(uint32_t state) { | ||
| 76 | return layer_state_set_keymap(state); | ||
| 77 | } | ||
