diff options
author | Nick Brassel <nick@tzarc.org> | 2023-12-18 14:06:47 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-18 14:06:47 +1100 |
commit | f25226453fb253b5d1c2f1684365d6248d8b5750 (patch) | |
tree | 8fbc0eb6b4a56adcd6dca750ce2ccca9dc85bc1a /keyboards/a_dux/keymaps | |
parent | 9539f135d8161557f0ffdfecb6e8c8c8b09786a2 (diff) |
Remove obvious user keymaps, `keyboards/a*` edition. (#22692)
Diffstat (limited to 'keyboards/a_dux/keymaps')
-rw-r--r-- | keyboards/a_dux/keymaps/daliusd/config.h | 35 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/daliusd/flow.c | 336 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/daliusd/flow.h | 27 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/daliusd/keymap.c | 334 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/daliusd/readme.md | 306 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/daliusd/rules.mk | 5 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/jcmkk3/keymap.c | 130 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/jcmkk3/oneshot.c | 72 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/jcmkk3/oneshot.h | 46 | ||||
-rw-r--r-- | keyboards/a_dux/keymaps/jcmkk3/rules.mk | 1 |
10 files changed, 0 insertions, 1292 deletions
diff --git a/keyboards/a_dux/keymaps/daliusd/config.h b/keyboards/a_dux/keymaps/daliusd/config.h deleted file mode 100644 index 78a96dd7ac..0000000000 --- a/keyboards/a_dux/keymaps/daliusd/config.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021 Dalius Dobravolskas <dalius.dobravolskas@gmail.com> - -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/>. -*/ - -#pragma once - -#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX - -#define MOUSEKEY_INTERVAL 12 -#define MOUSEKEY_MAX_SPEED 6 -#define MOUSEKEY_TIME_TO_MAX 50 - -#define MOUSEKEY_DELAY 20 -// It makes sense to use the same delay for the mouseweel -#define MOUSEKEY_WHEEL_DELAY 100 -// The default is 100 -#define MOUSEKEY_WHEEL_INTERVAL 50 -// The default is 40 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 - -#define FLOW_COUNT 6 -#define FLOW_LAYERS_COUNT 5 diff --git a/keyboards/a_dux/keymaps/daliusd/flow.c b/keyboards/a_dux/keymaps/daliusd/flow.c deleted file mode 100644 index 6e4db873fe..0000000000 --- a/keyboards/a_dux/keymaps/daliusd/flow.c +++ /dev/null @@ -1,336 +0,0 @@ -/* Copyright 2022 @daliusd - * - * 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 "flow.h" - -extern const uint16_t flow_config[FLOW_COUNT][2]; -extern const uint16_t flow_layers_config[FLOW_LAYERS_COUNT][2]; - -// Represents the states a flow key can be in -typedef enum { - flow_up_unqueued, - flow_up_queued, - flow_up_queued_used, - flow_down_unused, - flow_down_used, -} flow_state_t; - -#ifdef FLOW_ONESHOT_TERM -const int g_flow_oneshot_term = FLOW_ONESHOT_TERM; -#else -const int g_flow_oneshot_term = 500; -#endif - -#ifdef FLOW_ONESHOT_WAIT_TERM -const int g_flow_oneshot_wait_term = FLOW_ONESHOT_WAIT_TERM; -#else -const int g_flow_oneshot_wait_term = 500; -#endif - -flow_state_t flow_state[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = flow_up_unqueued }; -bool flow_pressed[FLOW_COUNT][2] = { [0 ... FLOW_COUNT - 1] = {false, false} }; -uint16_t flow_timers[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = 0 }; -bool flow_timeout_timers_active[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = false }; -uint16_t flow_timeout_timers_value[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = 0 }; -uint16_t flow_timeout_wait_timers_value[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = 0 }; - -flow_state_t flow_layers_state[FLOW_LAYERS_COUNT] = { - [0 ... FLOW_LAYERS_COUNT - 1] = flow_up_unqueued -}; -bool flow_layer_timeout_timers_active[FLOW_LAYERS_COUNT] = { [0 ... FLOW_LAYERS_COUNT - 1] = false }; -uint16_t flow_layer_timeout_timers_value[FLOW_LAYERS_COUNT] = { [0 ... FLOW_LAYERS_COUNT - 1] = 0 }; -uint16_t flow_layer_timeout_wait_timers_value[FLOW_LAYERS_COUNT] = { [0 ... FLOW_LAYERS_COUNT - 1] = 0 }; - -bool is_flow_ignored_key(uint16_t keycode) { - for (int i = 0; i < FLOW_COUNT; i++) { - if (flow_config[i][0] == keycode) { - return true; - } - } - - for (int i = 0; i < FLOW_LAYERS_COUNT; i++) { - if (flow_layers_config[i][0] == keycode) { - return true; - } - } - - if (keycode == KC_LSFT || keycode == KC_RSFT - || keycode == KC_LCTL || keycode == KC_RCTL - || keycode == KC_LALT || keycode == KC_RALT - || keycode == KC_LGUI || keycode == KC_RGUI) { - return true; - } - - return false; -} - -bool update_flow_mods( - uint16_t keycode, - bool pressed -) { - bool pass = true; - bool flow_key_list_triggered[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = false }; - bool flow_key_list_pressed[FLOW_COUNT] = { [0 ... FLOW_COUNT - 1] = false }; - - bool flow_triggered = false; - - for (uint8_t i = 0; i < FLOW_COUNT; i++) { - // Layer key - if (keycode == flow_config[i][0]) { - if (pressed) { - flow_pressed[i][0] = true; - } else { - flow_pressed[i][0] = false; - } - // KC mod key - } else if (keycode == flow_config[i][1]) { - if (pressed) { - if (flow_pressed[i][0]) { - flow_pressed[i][1] = true; - flow_key_list_triggered[i] = true; - flow_triggered = true; - flow_key_list_pressed[i] = true; - pass = false; - } - } else if (flow_pressed[i][1]) { - flow_pressed[i][1] = false; - if (flow_pressed[i][0]) { - flow_key_list_triggered[i] = true; - flow_triggered = true; - pass = false; - } else if ((flow_state[i] == flow_down_unused) - || (flow_state[i] == flow_down_used)) { - flow_key_list_triggered[i] = true; - flow_triggered = true; - pass = false; - } - } - } - } - - for (uint8_t i = 0; i < FLOW_COUNT; i++) { - if (flow_key_list_triggered[i]) { - if (flow_key_list_pressed[i]) { - if (flow_state[i] == flow_up_unqueued) { - register_code(flow_config[i][1]); - } - flow_timeout_wait_timers_value[i] = timer_read(); - flow_state[i] = flow_down_unused; - } else { - // Trigger keyup - switch (flow_state[i]) { - case flow_down_unused: - if (!flow_pressed[i][1]) { - if (timer_elapsed(flow_timeout_wait_timers_value[i]) > g_flow_oneshot_wait_term) { - flow_state[i] = flow_up_unqueued; - unregister_code(flow_config[i][1]); - } else { - // If we didn't use the mod while trigger was held, queue it. - flow_state[i] = flow_up_queued; - flow_timeout_timers_active[i] = true; - flow_timeout_timers_value[i] = timer_read(); - } - } - break; - case flow_down_used: - // If we did use the mod while trigger was held, unregister it. - if (!flow_pressed[i][1]) { - flow_state[i] = flow_up_unqueued; - unregister_code(flow_config[i][1]); - } - break; - default: - break; - } - } - } else if (!flow_triggered) { - if (pressed) { - if (!is_flow_ignored_key(keycode)) { - switch (flow_state[i]) { - case flow_up_queued: - flow_state[i] = flow_up_queued_used; - flow_timeout_timers_active[i] = false; - break; - case flow_up_queued_used: - flow_state[i] = flow_up_unqueued; - unregister_code(flow_config[i][1]); - break; - default: - break; - } - } - } else { - if (!is_flow_ignored_key(keycode)) { - // On non-ignored keyup, consider the oneshot used. - switch (flow_state[i]) { - case flow_down_unused: - flow_state[i] = flow_down_used; - break; - case flow_up_queued: - flow_state[i] = flow_up_unqueued; - unregister_code(flow_config[i][1]); - break; - case flow_up_queued_used: - flow_state[i] = flow_up_unqueued; - unregister_code(flow_config[i][1]); - break; - default: - break; - } - } - } - } - } - - return pass; -} - -void change_pressed_status(uint16_t keycode, bool pressed) { - for (int i = 0; i < FLOW_COUNT; i++) { - if (flow_config[i][0] == keycode) { - flow_pressed[i][0] = pressed; - } - } -} - -bool update_flow_layers( - uint16_t keycode, - bool pressed, - keypos_t key_position -) { - uint8_t key_layer = read_source_layers_cache(key_position); - bool pass = true; - - for (int i = 0; i < FLOW_LAYERS_COUNT; i++) { - uint16_t trigger = flow_layers_config[i][0]; - uint16_t layer = flow_layers_config[i][1]; - - if (keycode == trigger) { - if (pressed) { - // Trigger keydown - if (flow_layers_state[i] == flow_up_unqueued) { - layer_on(layer); - change_pressed_status(trigger, true); - } - flow_layer_timeout_wait_timers_value[i] = timer_read(); - flow_layers_state[i] = flow_down_unused; - pass = false; - } else { - // Trigger keyup - switch (flow_layers_state[i]) { - case flow_down_unused: - if (timer_elapsed(flow_layer_timeout_wait_timers_value[i]) > g_flow_oneshot_wait_term) { - flow_layers_state[i] = flow_up_unqueued; - layer_off(layer); - change_pressed_status(trigger, false); - pass = false; - } else { - // If we didn't use the layer while trigger was held, queue it. - flow_layers_state[i] = flow_up_queued; - flow_layer_timeout_timers_active[i] = true; - flow_layer_timeout_timers_value[i] = timer_read(); - pass = false; - change_pressed_status(trigger, true); - } - break; - case flow_down_used: - // If we did use the layer while trigger was held, turn off it. - flow_layers_state[i] = flow_up_unqueued; - layer_off(layer); - change_pressed_status(trigger, false); - pass = false; - break; - default: - break; - } - } - } else { - if (pressed) { - if (key_layer == layer) { - // On non-ignored keyup, consider the oneshot used. - switch (flow_layers_state[i]) { - case flow_down_unused: - flow_layers_state[i] = flow_down_used; - break; - case flow_up_queued: - flow_layers_state[i] = flow_up_queued_used; - flow_layer_timeout_timers_active[i] = false; - break; - case flow_up_queued_used: - flow_layers_state[i] = flow_up_unqueued; - layer_off(layer); - change_pressed_status(trigger, false); - pass = false; - break; - default: - break; - } - } - } else { - // Ignore key ups from other layers - if (key_layer == layer) { - // On non-ignored keyup, consider the oneshot used. - switch (flow_layers_state[i]) { - case flow_up_queued: - flow_layers_state[i] = flow_up_unqueued; - layer_off(layer); - change_pressed_status(trigger, false); - break; - case flow_up_queued_used: - flow_layers_state[i] = flow_up_unqueued; - layer_off(layer); - change_pressed_status(trigger, false); - break; - default: - break; - } - } - } - } - } - - return pass; -} - -bool update_flow( - uint16_t keycode, - bool pressed, - keypos_t key_position -) { - bool pass = update_flow_mods(keycode, pressed); - pass = update_flow_layers(keycode, pressed, key_position) & pass; - return pass; -} - -void flow_matrix_scan(void) { - for (int i = 0; i < FLOW_COUNT; i++) { - if (flow_timeout_timers_active[i] - && timer_elapsed(flow_timeout_timers_value[i]) > g_flow_oneshot_term) { - flow_timeout_timers_active[i] = false; - flow_state[i] = flow_up_unqueued; - unregister_code(flow_config[i][1]); - } - } - - for (int i = 0; i < FLOW_LAYERS_COUNT; i++) { - if (flow_layer_timeout_timers_active[i] - && timer_elapsed(flow_layer_timeout_timers_value[i]) > g_flow_oneshot_term) { - flow_layer_timeout_timers_active[i] = false; - flow_layers_state[i] = flow_up_unqueued; - layer_off(flow_layers_config[i][1]); - change_pressed_status(flow_layers_config[i][0], false); - } - } -} diff --git a/keyboards/a_dux/keymaps/daliusd/flow.h b/keyboards/a_dux/keymaps/daliusd/flow.h deleted file mode 100644 index e9ac32c8ed..0000000000 --- a/keyboards/a_dux/keymaps/daliusd/flow.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2022 Dalius Dobravolskas <dalius.dobravolskas@gmail.com> - -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/>. -*/ -#pragma once - -#include QMK_KEYBOARD_H - -bool update_flow( - uint16_t keycode, - bool pressed, - keypos_t key_position -); - -void flow_matrix_scan(void); diff --git a/keyboards/a_dux/keymaps/daliusd/keymap.c b/keyboards/a_dux/keymaps/daliusd/keymap.c deleted file mode 100644 index dcc41a36ee..0000000000 --- a/keyboards/a_dux/keymaps/daliusd/keymap.c +++ /dev/null @@ -1,334 +0,0 @@ -/* Copyright 2021 @daliusd - * - * 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 - -#include "flow.h" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum layers { - _QWERTY, - _SYM, - _NAV, - _MISC, - _TMUX, - _MOUSE, - _FUNC, - _LT_MAC, - _LT_LINUX, -}; - -enum custom_keycodes { - TM_NEXT = SAFE_RANGE, - TM_PREV, - TM_LEFT, - TM_RIGHT, - TM_NEW, - TM_SLCT, - TM_SRCH, - TM_URL, - OS_MISC, - OS_TMUX, - OS_FUNC, - LT_OSLNX, -}; - -// Shortcut to make keymap more readable - -#define L_NAV MO(_NAV) -#define L_SYM MO(_SYM) -#define L_MOUSE MO(_MOUSE) - -#define K_PRINT (QK_LCTL | QK_LSFT | QK_LGUI | KC_4) -#define K_VIDEO (QK_LSFT | QK_LGUI | KC_5) - -// flow_config should correspond to following format: -// * layer keycode -// * modifier keycode -const uint16_t flow_config[FLOW_COUNT][2] = { - {L_NAV, KC_LALT}, - {L_NAV, KC_LGUI}, - {L_NAV, KC_LCTL}, - {L_SYM, KC_RCTL}, - {L_SYM, KC_RGUI}, - {L_SYM, KC_RALT}, -}; - -const uint16_t flow_layers_config[FLOW_LAYERS_COUNT][2] = { - {OS_MISC, _MISC}, - {OS_TMUX, _TMUX}, - {OS_FUNC, _FUNC}, -}; - -// Unicode characters -enum unicode_names { - SNEK, - EURO, - LT_S_A, - LT_L_A, - LT_S_C, - LT_L_C, - LT_S_E1, - LT_L_E1, - LT_S_E2, - LT_L_E2, - LT_S_I, - LT_L_I, - LT_S_S, - LT_L_S, - LT_S_U1, - LT_L_U1, - LT_S_U2, - LT_L_U2, - LT_S_Z, - LT_L_Z, - LT_OB, - LT_CB, -}; - -const uint32_t unicode_map[] PROGMEM = { - [SNEK] = 0x1F40D, // ๐ - [EURO] = 0x20ac, // โฌ - [LT_S_A] = 0x105, // ฤ
- [LT_L_A] = 0x104, // ฤ - [LT_S_C] = 0x10d, // ฤ - [LT_L_C] = 0x10c, // ฤ - [LT_S_E1] = 0x119, // ฤ - [LT_L_E1] = 0x118, // ฤ - [LT_S_E2] = 0x117, // ฤ - [LT_L_E2] = 0x116, // ฤ - [LT_S_I] = 0x12f, // ฤฏ - [LT_L_I] = 0x12e, // ฤฎ - [LT_S_S] = 0x161, // ลก - [LT_L_S] = 0x160, // ล - [LT_S_U1] = 0x173, // ลณ - [LT_L_U1] = 0x172, // ลฒ - [LT_S_U2] = 0x16b, // ลซ - [LT_L_U2] = 0x16a, // ลช - [LT_S_Z] = 0x17e, // ลพ - [LT_L_Z] = 0x17d, // ลฝ - [LT_OB] = 0x201e, // โ - [LT_CB] = 0x201c, // โ -}; - -#define K_SNEK UM(SNEK) -#define K_EURO UM(EURO) -#define K_LT_A UP(LT_S_A, LT_L_A) -#define K_LT_AU UM(LT_L_A) -#define K_LT_C UP(LT_S_C, LT_L_C) -#define K_LT_CU UM(LT_L_C) -#define K_LT_E1 UP(LT_S_E1, LT_L_E1) -#define K_LT_E1U UM(LT_L_E1) -#define K_LT_E2 UP(LT_S_E2, LT_L_E2) -#define K_LT_E2U UM(LT_L_E2) -#define K_LT_I UP(LT_S_I, LT_L_I) -#define K_LT_IU UM(LT_L_I) -#define K_LT_S UP(LT_S_S, LT_L_S) -#define K_LT_SU UM(LT_L_S) -#define K_LT_U1 UP(LT_S_U1, LT_L_U1) -#define K_LT_U1U UM(LT_L_U1) -#define K_LT_U2 UP(LT_S_U2, LT_L_U2) -#define K_LT_U2U UM(LT_L_U2) -#define K_LT_Z UP(LT_S_Z, LT_L_Z) -#define K_LT_ZU UM(LT_L_Z) -#define K_LT_OB UM(LT_OB) -#define K_LT_CB UM(LT_CB) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - KC_Q ,KC_W ,KC_E ,KC_R ,KC_T, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH, - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - L_NAV , KC_SPC , KC_LSFT , L_SYM - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_SYM] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC , KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,KC_GRV ,KC_LBRC ,KC_RBRC ,KC_PLUS , KC_MINS ,KC_PIPE ,KC_RCTL ,KC_RGUI ,KC_RALT , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_DEL ,KC_BSPC ,KC_LCBR ,KC_RCBR ,KC_EQL , KC_UNDS ,KC_QUOT ,KC_DQT ,OS_MISC ,KC_BSLS , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - _______ , _______ , _______ , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_NAV] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_LALT ,KC_LGUI ,KC_LCTL ,KC_TAB ,KC_ENT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,KC_PGUP , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_LSFT ,KC_BSPC ,KC_ESC ,KC_TILDE,OS_TMUX , OS_FUNC ,L_MOUSE ,KC_COMM ,KC_DOT ,KC_PGDN , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - XXXXXXX , _______ , _______ , _______ - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_MISC] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - QK_BOOT ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BRID ,KC_BRIU ,KC_PSCR ,XXXXXXX ,K_PRINT , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,XXXXXXX ,DB_TOGG ,LT_OSLNX,XXXXXXX , KC_MPRV ,KC_MPLY ,KC_MNXT ,XXXXXXX ,K_VIDEO , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_VOLD ,KC_VOLU ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_TMUX] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,TM_URL ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , TM_LEFT ,TM_NEXT ,TM_PREV ,TM_RIGHT,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , TM_NEW ,TM_SLCT ,XXXXXXX ,XXXXXXX ,TM_SRCH , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_MOUSE] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - XXXXXXX ,XXXXXXX ,KC_MS_U ,KC_BTN3 ,KC_WH_U , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D , XXXXXXX ,XXXXXXX ,KC_RCTL ,KC_RGUI ,KC_RALT , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - KC_BTN1 , KC_BTN2 , _______ , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_FUNC] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 , XXXXXXX ,XXXXXXX ,KC_RCTL ,KC_RGUI ,KC_RALT , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_F11 ,KC_F12 ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_LT_MAC] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC , KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_PLUS ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_EQL ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,KC_BSPC ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - XXXXXXX , XXXXXXX , _______ , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), - - [_LT_LINUX] = LAYOUT( - //โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโ - K_LT_AU ,K_LT_CU ,K_LT_E1U,K_LT_E2U,K_LT_IU , K_LT_SU ,K_LT_U1U,K_LT_U2U,K_LT_ZU ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - K_LT_A ,K_LT_C ,K_LT_E1 ,K_LT_E2 ,K_LT_I , K_LT_S ,K_LT_U1 ,K_LT_U2 ,K_LT_Z ,XXXXXXX , - //โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค โโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโผโโโโโโโโโค - XXXXXXX ,KC_BSPC ,XXXXXXX ,K_SNEK ,K_LT_OB , K_LT_CB ,K_EURO ,XXXXXXX ,XXXXXXX ,XXXXXXX , - //โโโโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโฌโโโโดโโโโโฌโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโฌโโโโโดโโโโฌโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโ - XXXXXXX , XXXXXXX , _______ , XXXXXXX - // โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ - ), -}; - -#define TMUX_PREFIX SS_DOWN(X_LCTL) "b" SS_UP(X_LCTL) - -bool lt_os_is_linux = false; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!update_flow(keycode, record->event.pressed, record->event.key)) return false; - - switch (keycode) { - case TM_LEFT: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX "<"); - return false; - case TM_RIGHT: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX ">"); - return false; - case TM_NEXT: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX "n"); - return false; - case TM_PREV: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX "p"); - return false; - case TM_NEW: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX "c"); - return false; - case TM_SLCT: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX "["); - return false; - case TM_SRCH: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX "\t"); - return false; - case TM_URL: - if (!record->event.pressed) return true; - SEND_STRING(TMUX_PREFIX SS_LCTL("u")); - return false; - case LT_OSLNX: - if (!record->event.pressed) return true; - lt_os_is_linux = !lt_os_is_linux; - return false; - } - return true; -} - -void matrix_scan_user(void) { - flow_matrix_scan(); -} - -bool lang_layer_on = false; - -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _SYM, _NAV, lt_os_is_linux ? _LT_LINUX : _LT_MAC); - - uint8_t hl = get_highest_layer(state); - if (hl == _LT_MAC) { - if (!lang_layer_on) { - tap_code16(LCTL(KC_SPC)); - lang_layer_on = true; - } - } else { - if (lang_layer_on) { - tap_code16(LCTL(KC_SPC)); - lang_layer_on = false; - } - } - - return state; -} diff --git a/keyboards/a_dux/keymaps/daliusd/readme.md b/keyboards/a_dux/keymaps/daliusd/readme.md deleted file mode 100644 index fde19ee630..0000000000 --- a/keyboards/a_dux/keymaps/daliusd/readme.md +++ /dev/null @@ -1,306 +0,0 @@ -# My 34 keys layout - -This is my principles for layout: - -* I am using Callum style layout. Here you can read explanation by - Callum himself and his reasoning for not using mod-tap: - [here](../../../../users/callum/readme.md) - -* There should be only one way to type key. Key can be on - different layer but it must maintain its physical location. I - broke this rule for Shift key only. - -* The less features are used the better. - -* There is simple TMUX layer. - -* Common keys must be accessible using two keys if possible. - -* It should be possible to work with left keyboard side and mouse - in right hand without lifting hands for some scenarios (that's - why I had to duplicate Shift key). - -## Improvements over Callum - -* I have added one shot layers compatible with Callum's one shot - keys. - -* There is one issue with accidental uppercase characters fixed - that exists in original Callum layout's implementation. - -* Another annoying feature of Callum layer is one shot keys are - frozen until you cancel them. This is problem when you use one - hand for keyboard and another for mouse. E.g. you click Ctrl and - mouse to get some menu (on Mac OS X), and then you want to click - some item in that menu. You have to remember to cancel one shot in such - situation. I have added two settings two handle situations like - this: - - * `FLOW_ONESHOT_WAIT_TERM` - if hold one shot key longer than - `FLOW_ONESHOT_WAIT_TERM` ms then mod key / layer key is not - treated as one shot key (defaults to 500ms). - - * `FLOW_ONESHOT_TERM` - if you do not click another key in - `FLOW_ONESHOT_TERM` ms then one shot key / layer key is treated - as normal key. Therefore if you lift it after `FLOW_ONESHOT_TERM` - it will not be treated as one shot (defaults to 500ms). - - After adding those two settings I have found out that I don't - need one shot cancel key anymore so I have removed it. - -Since differences are significant I named this layout `flow`. - -## Using flow with your keyboard - -Copy `flow.c` and `flow.h` to keyboard folder. - -Add following line to `rules.mk`: - -```make -SRC += flow.c -``` - -Define following in `config.h` for modifiers and layers: - -```c -#define FLOW_COUNT 7 -#define FLOW_LAYERS_COUNT 3 -``` - -In your `keymap.c` add and configure like this: - -```c -#include "flow.h" - -... - -// flow_config should correspond to following format: -// * layer keycode -// * modifier keycode -const uint16_t flow_config[FLOW_COUNT][2] = { - {L_NAV, KC_LALT}, - {L_NAV, KC_LGUI}, - {L_NAV, KC_LCTL}, - {L_NAV, KC_LSFT}, - {L_SYM, KC_LCTL}, - {L_SYM, KC_LGUI}, - {L_SYM, KC_LALT}, -}; - - -// for layers configuration follow this format: -// * custom layer key -// * layer name -const uint16_t flow_layers_config[FLOW_LAYERS_COUNT][2] = { - {OS_TMUX, _TMUX}, - {OS_MISC, _MISC}, - {OS_FUNC, _FUNC}, -}; - -... - -// Add following to handle flow - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!update_flow(keycode, record->event.pressed, record->event.key)) return false; - return true; -} - -void matrix_scan_user(void) { - flow_matrix_scan(); -} - -``` - -## Lithuanian letters - -There are at least two ways how to enter Lithuanian letters: to -use Unicode support from QMK or to switch OS language when -necessary. Unicode support has some problems: - -* it is OS specific (you need to change Unicode input mode based - on your OS and I sometimes switch between Mac OS X and Ubuntu). - This is minor issue but it is still issue. - -* There is bug in Mac OS X and I can't enter `ล ` using unicode - input method. - -* Unicode Hex Input in Mac OS X is not perfect and there are some - minor issue while using it. - -On Linux Unicode support meanwhile works perfectly. - -This leaves us with other option to use OS language switching as -you most probably have done before. Still there is space for -improvement. E.g. I have added Lithuanian letters to trilayer and -trilayer activation toggles OS language (this works because I use -only two languages). Check `layer_state_set_user` implementation -for details. - -# Rejected ideas - -## Mods as combos - -Sometimes when I press `NAV (layer key) + S + Tab` to get `Command -+ Tab` I ended up with `S + Nav + Tab`. This happened because I -did that really fast and sometimes clicked S slightly earlier than -NAV layer key. Initially I have solved this problem using Combo -keys, but that's additional dependency and combo keys are not -ideal for Callum layer. You need to release both keys to trigger -Combo key release. Therefore I have written custom code that -allows pressing S some milliseconds earlier. This is controlled by -FLOW_TERM and defaults to 10. I do not recommend setting this to -higher than 30. - -This idea was rejected because it looks like 10ms did not made -that big difference. - -## Swapper - -Idea of swapper is to have key that registers Mode key (e.g. -Command while layer and some key is pressed) to simulate two key -combo, e.g. Command + Tab. Overall I found that 3 keys combo that -I have currently for swapping windows is equally good as 2 keys -swapper. Another problem with swapper is that it is OS specific. -Still if you want here is swapper implementation I have used: - -```c -bool active; - -void update_swapper( - uint16_t trigger, - uint16_t keycode, - bool pressed -) { - if (keycode == trigger) { - if (pressed) { - if (!active) { - active = true; - register_code(KC_LGUI); - } - register_code(KC_TAB); - } else { - unregister_code(KC_TAB); - } - } else if (active && keycode != KC_LSFT && keycode != KC_LEFT && keycode != KC_RIGHT) { - unregister_code(KC_LGUI); - active = false; - } -} -``` - -## Combos - -I have seen that some people use two letter horizontal combos for -some actions, e.g. XC for Command+C, CV for Command+V, JK for ESC -and etc. I found that this kind of kicks me out of the flow when -working as it requires different kind of action and I need to -pause to make that action. - -## Comma-space - -I have noticed that I put space after comma `,` usually. That -means I can use comma + letter for something else with backspace, -e.g. for Lithuanian letters. Performance wise that works OK, but -practically that does not feel really good. Trilayer with language -layer switch works better. - -Still if you are interested here is comma-space implementation: - -```c -void swap_layout(void) { - uint8_t saved_mods = get_mods(); - clear_mods(); - tap_code16(LCTL(KC_SPC)); - set_mods(saved_mods); -} - -void press_with_layout_swap(uint16_t keycode) { - tap_code16(KC_BSPC); - swap_layout(); - tap_code16(keycode); - swap_layout(); -} - -bool comma_pressed = false; - -bool update_commaspace( - uint16_t keycode, - bool pressed -) { - if (keycode == KC_COMM) { - if (!(get_mods() & MOD_MASK_SHIFT)) { - comma_pressed = true; - } - } else if (comma_pressed) { - if (keycode != KC_LSFT) { - comma_pressed = false; - } - - switch(keycode) { - case KC_Q: - if (pressed) { - press_with_layout_swap(KC_1); - return false; - } - break; - case KC_W: - if (pressed) { - press_with_layout_swap(KC_2); - return false; - } - break; - case KC_E: - if (pressed) { - press_with_layout_swap(KC_3); - return false; - } - break; - case KC_R: - if (pressed) { - press_with_layout_swap(KC_4); - return false; - } - break; - case KC_T: - if (pressed) { - press_with_layout_swap(KC_5); - return false; - } - break; - case KC_Y: - if (pressed) { - press_with_layout_swap(KC_6); - return false; - } - break; - case KC_U: - if (pressed) { - press_with_layout_swap(KC_7); - return false; - } - break; - case KC_I: - if (pressed) { - press_with_layout_swap(KC_8); - return false; - } - break; - case KC_O: - if (pressed) { - press_with_layout_swap(KC_EQL); - return false; - } - break; - } - } - - return true; -}; -``` - -## Using one shot layers on top layer keys (NAV and SYM) - -While this looked promising and fun it was really easy to get lost -in which layer you actually are. You can still use it as `flow` -supports this scenario, but I do not recommend it. diff --git a/keyboards/a_dux/keymaps/daliusd/rules.mk b/keyboards/a_dux/keymaps/daliusd/rules.mk deleted file mode 100644 index dda50a4f78..0000000000 --- a/keyboards/a_dux/keymaps/daliusd/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -UNICODE_ENABLE = no -UNICODEMAP_ENABLE = yes -#CONSOLE_ENABLE = yes - -SRC += flow.c diff --git a/keyboards/a_dux/keymaps/jcmkk3/keymap.c b/keyboards/a_dux/keymaps/jcmkk3/keymap.c deleted file mode 100644 index 608e0c522e..0000000000 --- a/keyboards/a_dux/keymaps/jcmkk3/keymap.c +++ /dev/null @@ -1,130 +0,0 @@ -/* Copyright 2021 @jcmkk3 - * - * 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 - -#include "oneshot.h" - -#define LA_UPP OSL(UPP) -#define LA_SYM OSL(SYM) -#define LA_NAV MO(NAV) - -enum layers { - DEF, - UPP, - SYM, - NAV, - NUM, -}; - -enum keycodes { - // Custom oneshot mod implementation with no timers. - OS_SHFT = SAFE_RANGE, - OS_CTRL, - OS_ALT, - OS_GUI, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [DEF] = LAYOUT( - KC_Y, KC_C, KC_L, KC_M, KC_K, KC_Z, KC_F, KC_U, KC_QUOT, KC_DQUO, - KC_I, KC_S, KC_R, KC_T, KC_G, KC_P, KC_N, KC_E, KC_A, KC_O, - KC_Q, KC_V, KC_W, KC_D, KC_J, KC_B, KC_H, KC_COMM, KC_DOT, KC_X, - LA_NAV, KC_SPC, LA_UPP, LA_SYM - ), - - [UPP] = LAYOUT( - S(KC_Y), S(KC_C), S(KC_L), S(KC_M), S(KC_K), S(KC_Z), S(KC_F), S(KC_U), KC_EXLM, KC_QUES, - S(KC_I), S(KC_S), S(KC_R), S(KC_T), S(KC_G), S(KC_P), S(KC_N), S(KC_E), S(KC_A), S(KC_O), - S(KC_Q), S(KC_V), S(KC_W), S(KC_D), S(KC_J), S(KC_B), S(KC_H), KC_SCLN, KC_COLN, S(KC_X), - _______, _______, _______, _______ - ), - - [SYM] = LAYOUT( - KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_CIRC, KC_DLR, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, - KC_HASH, KC_UNDS, KC_EQL, KC_MINS, KC_PLUS, KC_AMPR, OS_CTRL, OS_SHFT, OS_ALT, OS_GUI, - KC_PERC, KC_GRV, KC_TILD, KC_SLSH, KC_ASTR, KC_PIPE, KC_BSLS, KC_SCLN, KC_COLN, KC_AT, - _______, _______, _______, _______ - ), - - [NAV] = LAYOUT( - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TAB, KC_UP, KC_ENT, KC_DEL, - OS_GUI, OS_ALT, OS_SHFT, OS_CTRL, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, - C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, KC_BSPC, _______ - ), - - [NUM] = LAYOUT( - KC_7, KC_5, KC_3, KC_1, KC_9, KC_8, KC_0, KC_2, KC_4, KC_6, - OS_GUI, OS_ALT, OS_SHFT, OS_CTRL, XXXXXXX, XXXXXXX, OS_CTRL, OS_SHFT, OS_ALT, OS_GUI, - XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, - _______, _______, KC_BSPC, _______ - ), -}; - -bool is_oneshot_cancel_key(uint16_t keycode) { - switch (keycode) { - case LA_SYM: - case LA_NAV: - return true; - default: - return false; - } -} - -bool is_oneshot_ignored_key(uint16_t keycode) { - switch (keycode) { - case LA_SYM: - case LA_NAV: - case KC_LSFT: - case OS_SHFT: - case OS_CTRL: - case OS_ALT: - case OS_GUI: - return true; - default: - return false; - } -} - -oneshot_state os_shft_state = os_up_unqueued; -oneshot_state os_ctrl_state = os_up_unqueued; -oneshot_state os_alt_state = os_up_unqueued; -oneshot_state os_gui_state = os_up_unqueued; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - update_oneshot( - &os_shft_state, KC_LSFT, OS_SHFT, - keycode, record - ); - update_oneshot( - &os_ctrl_state, KC_LCTL, OS_CTRL, - keycode, record - ); - update_oneshot( - &os_alt_state, KC_LALT, OS_ALT, - keycode, record - ); - update_oneshot( - &os_gui_state, KC_LGUI, OS_GUI, - keycode, record - ); - - return true; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, SYM, NAV, NUM); -} diff --git a/keyboards/a_dux/keymaps/jcmkk3/oneshot.c b/keyboards/a_dux/keymaps/jcmkk3/oneshot.c deleted file mode 100644 index e84b5a7b1d..0000000000 --- a/keyboards/a_dux/keymaps/jcmkk3/oneshot.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2021 @jcmkk3 - * - * 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 "oneshot.h" - -void update_oneshot( - oneshot_state *state, - uint16_t mod, - uint16_t trigger, - uint16_t keycode, - keyrecord_t *record -) { - if (keycode == trigger) { - if (record->event.pressed) { - // Trigger keydown - if (*state == os_up_unqueued) { - register_code(mod); - } - *state = os_down_unused; - } else { - // Trigger keyup - switch (*state) { - case os_down_unused: - // If we didn't use the mod while trigger was held, queue it. - *state = os_up_queued; - break; - case os_down_used: - // If we did use the mod while trigger was held, unregister it. - *state = os_up_unqueued; - unregister_code(mod); - break; - default: - break; - } - } - } else { - if (record->event.pressed) { - if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { - // Cancel oneshot on designated cancel keydown. - *state = os_up_unqueued; - unregister_code(mod); - } - } else { - if (!is_oneshot_ignored_key(keycode)) { - // On non-ignored keyup, consider the oneshot used. - switch (*state) { - case os_down_unused: - *state = os_down_used; - break; - case os_up_queued: - *state = os_up_unqueued; - unregister_code(mod); - break; - default: - break; - } - } - } - } -} diff --git a/keyboards/a_dux/keymaps/jcmkk3/oneshot.h b/keyboards/a_dux/keymaps/jcmkk3/oneshot.h deleted file mode 100644 index b88e68d1d5..0000000000 --- a/keyboards/a_dux/keymaps/jcmkk3/oneshot.h +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2021 @jcmkk3 - * - * 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/>. - */ -#pragma once - -#include QMK_KEYBOARD_H - -// Represents the four states a oneshot key can be in -typedef enum { - os_up_unqueued, - os_up_queued, - os_down_unused, - os_down_used, -} oneshot_state; - -// Custom oneshot mod implementation that doesn't rely on timers. If a mod is -// used while it is held it will be unregistered on keyup as normal, otherwise -// it will be queued and only released after the next non-mod keyup. -void update_oneshot( - oneshot_state *state, - uint16_t mod, - uint16_t trigger, - uint16_t keycode, - keyrecord_t *record -); - -// To be implemented by the consumer. Defines keys to cancel oneshot mods. -bool is_oneshot_cancel_key(uint16_t keycode); - -// To be implemented by the consumer. Defines keys to ignore when determining -// whether a oneshot mod has been used. Setting this to modifiers and layer -// change keys allows stacking multiple oneshot modifiers, and carrying them -// between layers. -bool is_oneshot_ignored_key(uint16_t keycode); diff --git a/keyboards/a_dux/keymaps/jcmkk3/rules.mk b/keyboards/a_dux/keymaps/jcmkk3/rules.mk deleted file mode 100644 index b7dcd87b1e..0000000000 --- a/keyboards/a_dux/keymaps/jcmkk3/rules.mk +++ /dev/null @@ -1 +0,0 @@ -SRC += oneshot.c |