summaryrefslogtreecommitdiffstats
path: root/users/konstantin/konstantin.c
diff options
context:
space:
mode:
authorKonstantin Đorđević <vomindoraan@gmail.com>2019-01-14 18:09:47 +0100
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-01-14 09:09:47 -0800
commit9105bf2434c54c40362173e1734a24485cfbe702 (patch)
tree5a31a50767ad464b5d3d75341f6f0d9686a116f4 /users/konstantin/konstantin.c
parentee96b7a89dd2de78b9372d3b8ce899757e3190c4 (diff)
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.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c
new file mode 100644
index 0000000000..977111c1f9
--- /dev/null
+++ b/users/konstantin/konstantin.c
@@ -0,0 +1,77 @@
+#include "konstantin.h"
+
+#ifdef LAYER_NUMPAD
+static void toggle_numpad(void) {
+ layer_invert(L_NUMPAD);
+ bool num_lock = host_keyboard_leds() & 1<<USB_LED_NUM_LOCK;
+ if (num_lock != (bool)IS_LAYER_ON(L_NUMPAD)) {
+ tap_code(KC_NLCK); // Toggle Num Lock to match layer state
+ }
+}
+#endif
+
+__attribute__((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keymap(keycode, record)) {
+ return false;
+ }
+
+ switch (keycode) {
+ case CLEAR:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
+ }
+ return false;
+
+#ifdef LAYER_FN
+ static bool fn_lock;
+
+ case FN_FNLK:
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this
+ }
+ return true;
+#endif
+
+#ifdef LAYER_NUMPAD
+ case NUMPAD:
+ if (record->event.pressed) {
+ toggle_numpad();
+ }
+ return false;
+#endif
+
+ case KC_ESC:
+ if (record->event.pressed) {
+#ifdef LAYER_NUMPAD
+ if (IS_LAYER_ON(L_NUMPAD)) {
+ toggle_numpad();
+ return false;
+ }
+#endif
+#ifdef LAYER_FN
+ if (IS_LAYER_ON(L_FN) && fn_lock) {
+ layer_off(L_FN);
+ return fn_lock = false;
+ }
+#endif
+ }
+ return true;
+
+ default:
+ return true;
+ }
+}
+
+__attribute__((weak))
+uint32_t layer_state_set_keymap(uint32_t state) {
+ return state;
+}
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return layer_state_set_keymap(state);
+}