mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-28 20:18:49 +06:00
050472a4d0
Co-authored-by: Drashna Jaelre <drashna@live.com>
200 lines
8.7 KiB
C
200 lines
8.7 KiB
C
/*
|
|
Copyright 2018-2022 Eric Gebhart <e.a.gebhart@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/>.
|
|
*/
|
|
/********************************************************************************/
|
|
/* NAVIGATION - MOUSE, Scroll, Buttons, Arrows, Tab, Home, page up/down, End */
|
|
/* Navigation layers: */
|
|
/* 3 row Layer */
|
|
/* 4 Row Layer with repeated and swapped VI arrows, and Scroll wheel. */
|
|
/********************************************************************************/
|
|
/* */
|
|
/* Navigation layer with optional 4th Row.... */
|
|
/* */
|
|
/* M = Mouse */
|
|
/* B = Button */
|
|
/* W = Wheel */
|
|
/* AC = Acceleration */
|
|
/* CCCV = Tap -> Ctrl-C, hold for double tap duration -> Ctrl-V */
|
|
/* CTCN = Tap -> Ctrl-T, hold for double tap duration -> Ctrl-N */
|
|
/* CWCQ = Tap -> Ctrl-W, hold for double tap duration -> Ctrl-Q */
|
|
/* HOME = TAB & PGDN */
|
|
/* END = BKTAB & PGUP -- See combos. */
|
|
/* */
|
|
/* MB5 MB4 MB3 MB2 MB1 MAC0 | CTCN MB1 MB2 MB3 MB4 MB5 */
|
|
/* TAB MLeft MDown MUp MRight MAC1 | CCCV Left Down UP Right TAB */
|
|
/* WLeft WDown WUp WRight MAC2 | CWCQ TAB PGDN PGUP BKTAB */
|
|
/* */
|
|
/* Left Down Up Right CCCV | CCCV MLeft MDown MUp MRight */
|
|
/* */
|
|
/********************************************************************************/
|
|
|
|
#ifdef MOUSEKEY_ENABLE
|
|
#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
|
|
#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
|
|
// really BTN 1, 2, 3, 8, 9 - according to xev.
|
|
#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5
|
|
#define ___4MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4
|
|
#define ___3MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2
|
|
// really BTN 9, 8, 3, 2, 1 - according to xev
|
|
#define ___4MOUSE_BTNS_L___ KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1
|
|
#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1
|
|
#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
|
|
#define ___MACCL___ ___MOUSE_ACCL_012___
|
|
#endif
|
|
|
|
#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
|
|
#define ___HOME_PGDN_PGUP_END___ KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
|
#define ___TAB_PGDN_PGUP_BKTAB___ KC_TAB, KC_PGDN, KC_PGUP, KC_BKTAB
|
|
// home and end are combos. tab/pgdn = home, bktab/pgup = end.
|
|
|
|
#define ___REDO_CUT_COPY_PASTE_UNDO___ S_REDO, S_CUT, S_COPY, S_PASTE, S_UNDO
|
|
|
|
#ifdef MOUSEKEY_ENABLE
|
|
#define ___NAV_La_1___ ___SML_MODS_L___, KC_ACL0
|
|
#define ___NAV_L_1___ ___4MOUSE_BTNS_L___, KC_ACL0
|
|
#define ___NAV_L_2___ ___MOUSE_LDUR___, KC_ACL1
|
|
#define ___NAV_L_3___ ___MWHEEL_LDUR___, KC_ACL2
|
|
#define ___NAV_L_4___ ___VI_ARROWS___, KC_CCCV
|
|
|
|
#define ___NAV_R_1___ KC_CTCN, ___4MOUSE_BTNS_R___
|
|
#define ___NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___
|
|
|
|
#else
|
|
|
|
#define ___NAV_La_1___ ___NAV_L_1___
|
|
#define ___NAV_L_1___ ___OS_MODS_L___
|
|
#define ___NAV_L_2___ ___SML_MODS_L___, ___
|
|
#define ___NAV_L_3___ ___5___
|
|
#define ___NAV_L_4___ ___VI_ARROWS___, KC_CCCV
|
|
|
|
#define ___NAV_R_1___ KC_CTCN, ___SML_MODS_R___
|
|
#define ___NAV_R_4___ KC_CCCV, ___4___
|
|
|
|
#endif // end mousekey
|
|
|
|
#define ___NAV_R_2___ KC_CCCV, ___VI_ARROWS___
|
|
#define ___NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___
|
|
#define ___NAV_Ra_3___ KC_CWCQ, ___TAB_PGDN_PGUP_BKTAB___
|
|
|
|
#ifdef MOUSEKEY_ENABLE
|
|
|
|
#define ___6NAV_L_1___ ___MOUSE_BTNS_L___, KC_ACL0
|
|
#define ___6NAV_L_2___ TAB_BKTAB, ___MOUSE_LDUR___, KC_ACL1
|
|
#define ___6NAV_L_3___ ___, ___MWHEEL_LDUR___, KC_ACL2
|
|
#define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV
|
|
|
|
#define ___6NAV_R_1___ KC_CTCN, ___MOUSE_BTNS_R___
|
|
#define ___6NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___, ___
|
|
|
|
#else
|
|
|
|
#define ___6NAV_L_1___ ___6___
|
|
#define ___6NAV_L_2___ TAB_BKTAB, ___SML_MODS_L___, ___
|
|
|
|
#define ___6NAV_L_3___ ___, ___5___
|
|
#define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV
|
|
|
|
#define ___6NAV_R_1___ KC_CTCN, ___SML_MODS_R___
|
|
#define ___6NAV_R_4___ KC_CCCV, ___4___, ___
|
|
|
|
#endif // end mousekey
|
|
|
|
#define ___6NAV_R_2___ KC_CCCV, ___VI_ARROWS___, TAB_BKTAB
|
|
#define ___6NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___, ___
|
|
|
|
// compact. 3x10 per layer.
|
|
#define ___10_NAV_1a___ ___NAV_La_1___, ___NAV_R_1___
|
|
#define ___10_NAV_1___ ___NAV_L_1___, ___NAV_R_1___
|
|
#define ___10_NAV_2___ ___NAV_L_2___, ___NAV_R_2___
|
|
#define ___10_NAV_3___ ___NAV_L_3___, ___NAV_Ra_3___
|
|
|
|
// designed without mouse, mods on left.
|
|
#define ___NAVnm_La_1___ ___NAV_L_1___
|
|
#define ___NAVnm_L_1___ ___SML_MODS_L___
|
|
#define ___NAVnm_L_2___ ___OS_MODS_L___, ___
|
|
#ifdef MOUSEKEY_ENABLE
|
|
#define ___NAVnm_L_3___ ___2___, SML_NAVm, ___2___ // get to mouse layer if enabled.
|
|
#else
|
|
#define ___NAVnm_L_3___ ___5___
|
|
#endif
|
|
|
|
#define ___10_NAVnm_1___ ___SML_MODS_L___, ___, ___NAV_R_1___
|
|
#define ___10_NAVnm_2___ ___OS_MODS_L___, ___NAV_R_2___
|
|
#define ___10_NAVnm_3___ ___NAVnm_L_3___, ___NAV_R_3___
|
|
|
|
#ifdef MOUSEKEY_ENABLE
|
|
// Mouse layer only. mods on right.
|
|
#define ___10_NAVm_1___ ___NAV_L_1___, ___NAV_R_1___
|
|
#define ___10_NAVm_2___ ___NAV_L_2___, ___NAV_R_2___
|
|
#define ___10_NAVm_3___ ___NAV_L_3___, ___NAV_R_3___
|
|
#endif
|
|
|
|
/********************************************************************************/
|
|
/* The Navigation LAYER Chunks */
|
|
/********************************************************************************/
|
|
// A Navigation Layer
|
|
#define CARTE_NAV \
|
|
carte_de_map("54321 0 ctn 12345", \
|
|
" ldur 1 ccv ldur", \
|
|
" ldur 2 cwq tdubt")
|
|
|
|
#define CARTE_NAVA \
|
|
carte_de_map(" gacs 0 ctn 12345", \
|
|
" ldur 1 ccv ldur", \
|
|
" ldur 2 cwq tdubt")
|
|
|
|
#define CARTE_NAVnm \
|
|
carte_de_map(" gacsc2 ctn cscag ", \
|
|
" gacs ccv ldur", \
|
|
" __M_ cwq tdubt")
|
|
|
|
// currently the same as NAVA
|
|
#define CARTE_NAVm \
|
|
carte_de_map(" gacs 0 ctn 12345", \
|
|
" ldur 1 ccv ldur", \
|
|
" ldur 2 cwq tdubt")
|
|
|
|
#define CARTE_NAV_miryoku \
|
|
carte_de_map(" rdo ccp undo", \
|
|
" Caps ldur", \
|
|
" Ins HDUE")
|
|
|
|
#define CARTE_NAVm_miryoku \
|
|
carte_de_map(" rdo ccp undo", \
|
|
" ldur", \
|
|
" ldur")
|
|
|
|
|
|
#ifdef MOUSEKEY_ENABLE
|
|
#define ___NAVm_3x10___ ___10_NAVm_1___, ___10_NAVm_2___, ___10_NAVm_3___
|
|
#endif
|
|
|
|
#define ___NAVnm_3x10___ ___10_NAVnm_1___, ___10_NAVnm_2___, ___10_NAVnm_3___
|
|
#define ___NAVA_3x10___ ___10_NAV_1a___, ___10_NAV_2___, ___10_NAV_3___
|
|
#define ___NAV_3x10___ ___10_NAV_1___, ___10_NAV_2___, ___10_NAV_3___
|
|
#define ___NAV_3x12___ ___12_NAV_1___, ___12_NAV_2___, ___12_NAV_3___
|
|
#define ___NAV_miryoku___ \
|
|
___5___, ___redo_cut_copy_paste_undo___, \
|
|
___5___, KC_CAPS, ___VI_ARROWS___, \
|
|
___5___, KC_INSERT, ___HOME_PGDN_PGUP_END___
|
|
|
|
#ifdef MOUSEKEY_ENABLE
|
|
#define ___NAVm_miryoku___ \
|
|
___5___, ___redo_cut_copy_paste_undo___, \
|
|
___5___, ___, ___MOUSE_LDUR___, \
|
|
___5___, ___, ___MWHEEL_LDUR___,
|
|
#endif
|