diff options
author | lokher <lokher@gmail.com> | 2022-12-06 17:10:48 +0800 |
---|---|---|
committer | lokher <lokher@gmail.com> | 2022-12-07 15:50:49 +0800 |
commit | a336c2c5005251e4cb0f3a62ccabdb4cfccad915 (patch) | |
tree | 3c948b631a5e3b6f940dabe02fad3c7487e6f350 /keyboards/a_dux/keymaps/daliusd | |
parent | 27fc28fd2ff52e079a5bc58d6aaea4c752420615 (diff) |
Merge upstream master to 2022 Q4 breaking change
Diffstat (limited to 'keyboards/a_dux/keymaps/daliusd')
-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 |
6 files changed, 0 insertions, 1043 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 72f2417278..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 PROGMEM unicode_map[] = { - [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 X(SNEK) -#define K_EURO X(EURO) -#define K_LT_A XP(LT_S_A, LT_L_A) -#define K_LT_AU X(LT_L_A) -#define K_LT_C XP(LT_S_C, LT_L_C) -#define K_LT_CU X(LT_L_C) -#define K_LT_E1 XP(LT_S_E1, LT_L_E1) -#define K_LT_E1U X(LT_L_E1) -#define K_LT_E2 XP(LT_S_E2, LT_L_E2) -#define K_LT_E2U X(LT_L_E2) -#define K_LT_I XP(LT_S_I, LT_L_I) -#define K_LT_IU X(LT_L_I) -#define K_LT_S XP(LT_S_S, LT_L_S) -#define K_LT_SU X(LT_L_S) -#define K_LT_U1 XP(LT_S_U1, LT_L_U1) -#define K_LT_U1U X(LT_L_U1) -#define K_LT_U2 XP(LT_S_U2, LT_L_U2) -#define K_LT_U2U X(LT_L_U2) -#define K_LT_Z XP(LT_S_Z, LT_L_Z) -#define K_LT_ZU X(LT_L_Z) -#define K_LT_OB X(LT_OB) -#define K_LT_CB X(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_ |