summaryrefslogtreecommitdiff
path: root/keyboards/a_dux
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2023-12-18 14:06:47 +1100
committerGitHub <noreply@github.com>2023-12-18 14:06:47 +1100
commitf25226453fb253b5d1c2f1684365d6248d8b5750 (patch)
tree8fbc0eb6b4a56adcd6dca750ce2ccca9dc85bc1a /keyboards/a_dux
parent9539f135d8161557f0ffdfecb6e8c8c8b09786a2 (diff)
Remove obvious user keymaps, `keyboards/a*` edition. (#22692)
Diffstat (limited to 'keyboards/a_dux')
-rw-r--r--keyboards/a_dux/keymaps/daliusd/config.h35
-rw-r--r--keyboards/a_dux/keymaps/daliusd/flow.c336
-rw-r--r--keyboards/a_dux/keymaps/daliusd/flow.h27
-rw-r--r--keyboards/a_dux/keymaps/daliusd/keymap.c334
-rw-r--r--keyboards/a_dux/keymaps/daliusd/readme.md306
-rw-r--r--keyboards/a_dux/keymaps/daliusd/rules.mk5
-rw-r--r--keyboards/a_dux/keymaps/jcmkk3/keymap.c130
-rw-r--r--keyboards/a_dux/keymaps/jcmkk3/oneshot.c72
-rw-r--r--keyboards/a_dux/keymaps/jcmkk3/oneshot.h46
-rw-r--r--keyboards/a_dux/keymaps/jcmkk3/rules.mk1
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