Merge remote-tracking branch 'upstream/master' into develop
This commit is contained in:
		
						commit
						2c191e21c2
					
				
					 1875 changed files with 649 additions and 120281 deletions
				
			
		| 
						 | 
				
			
			@ -1,155 +0,0 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
 | 
			
		||||
 * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
#ifdef VIA_ENABLE
 | 
			
		||||
/* Via configuration. */
 | 
			
		||||
#    define DYNAMIC_KEYMAP_LAYER_COUNT 8
 | 
			
		||||
#endif // VIA_ENABLE
 | 
			
		||||
 | 
			
		||||
#ifndef __arm__
 | 
			
		||||
/* Disable unused features. */
 | 
			
		||||
#    define NO_ACTION_ONESHOT
 | 
			
		||||
#endif // __arm__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Configure the global tapping term (default: 200ms).
 | 
			
		||||
 * If you have a lot of accidental mod activations, crank up the tapping term.
 | 
			
		||||
 *
 | 
			
		||||
 * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TAPPING_TERM
 | 
			
		||||
#    define TAPPING_TERM 160
 | 
			
		||||
#endif // TAPPING_TERM
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Enable rapid switch from tap to hold.  Disable auto-repeat when pressing key
 | 
			
		||||
 * twice, except for one-shot keys.
 | 
			
		||||
 *
 | 
			
		||||
 * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-force-hold
 | 
			
		||||
 */
 | 
			
		||||
#define QUICK_TAP_TERM 0
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Tap-or-Hold decision modes.
 | 
			
		||||
 *
 | 
			
		||||
 * Note that the following flags behave differently when combined (ie. when 2 or
 | 
			
		||||
 * more are enabled).
 | 
			
		||||
 *
 | 
			
		||||
 * See bit.ly/tap-or-hold for a visual explanation of the following tap-or-hold
 | 
			
		||||
 * decision modes.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Faster tap-hold trigger.
 | 
			
		||||
 *
 | 
			
		||||
 * Without `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
 | 
			
		||||
 *   Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ ae
 | 
			
		||||
 * With `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
 | 
			
		||||
 *   Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ Mod+e
 | 
			
		||||
 *
 | 
			
		||||
 * See docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold
 | 
			
		||||
 */
 | 
			
		||||
#define PERMISSIVE_HOLD
 | 
			
		||||
 | 
			
		||||
/** Charybdis-specific features. */
 | 
			
		||||
 | 
			
		||||
#ifdef POINTING_DEVICE_ENABLE
 | 
			
		||||
// Automatically enable the pointer layer when moving the trackball.  See also:
 | 
			
		||||
// - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS`
 | 
			
		||||
// - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD`
 | 
			
		||||
// #define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
 | 
			
		||||
 | 
			
		||||
// Flip horizontal direction for drag-scroll.
 | 
			
		||||
#    define CHARYBDIS_DRAGSCROLL_REVERSE_X
 | 
			
		||||
// #define CHARYBDIS_DRAGSCROLL_REVERSE_Y
 | 
			
		||||
#endif // POINTING_DEVICE_ENABLE
 | 
			
		||||
 | 
			
		||||
/** RGB Matrix. */
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
#    ifdef __arm__
 | 
			
		||||
// Enable all animations on ARM boards since they have plenty of memory
 | 
			
		||||
// available for it.
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_ALPHAS_MODS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BREATHING
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BAND_SAT
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BAND_VAL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_ALL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_DUAL_BEACON
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_RAINBOW_BEACON
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_RAINDROPS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_HUE_BREATHING
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_HUE_PENDULUM
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_HUE_WAVE
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_TYPING_HEATMAP
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_DIGITAL_RAIN
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SPLASH
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_MULTISPLASH
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_SPLASH
 | 
			
		||||
#        define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
 | 
			
		||||
#    else
 | 
			
		||||
// Disable control of RGB matrix by keycodes (must use firmware implementation
 | 
			
		||||
// to control the feature).
 | 
			
		||||
#        define RGB_MATRIX_DISABLE_KEYCODES
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
// Limit maximum brightness to keep power consumption reasonable, and avoid
 | 
			
		||||
// disconnects.
 | 
			
		||||
#    undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
 | 
			
		||||
#    define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64
 | 
			
		||||
 | 
			
		||||
// Rainbow swirl as startup mode.
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
 | 
			
		||||
// Slow swirl at startup.
 | 
			
		||||
#    undef RGB_MATRIX_DEFAULT_SPD
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_SPD 32
 | 
			
		||||
 | 
			
		||||
// Startup values.
 | 
			
		||||
#    undef RGB_MATRIX_DEFAULT_HUE
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_HUE 0
 | 
			
		||||
#    undef RGB_MATRIX_DEFAULT_SAT
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_SAT 255
 | 
			
		||||
#    undef RGB_MATRIX_DEFAULT_VAL
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
 | 
			
		||||
#endif // RGB_MATRIX_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -1,212 +0,0 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
 | 
			
		||||
 * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
enum charybdis_keymap_bstiq_layers {
 | 
			
		||||
    LAYER_BASE = 0,
 | 
			
		||||
    LAYER_MBO,
 | 
			
		||||
    LAYER_MEDIA,
 | 
			
		||||
    LAYER_NAV,
 | 
			
		||||
    LAYER_MOUSE,
 | 
			
		||||
    LAYER_SYM,
 | 
			
		||||
    LAYER_NUM,
 | 
			
		||||
    LAYER_FUN,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Automatically enable sniping when the mouse layer is on.
 | 
			
		||||
#define CHARYBDIS_AUTO_SNIPING_ON_LAYER LAYER_MOUSE
 | 
			
		||||
 | 
			
		||||
#define BSP_NAV LT(LAYER_NAV, KC_BSPC)
 | 
			
		||||
#define ENT_MBO LT(LAYER_MBO, KC_ENT)
 | 
			
		||||
#define TAB_MED LT(LAYER_MEDIA, KC_TAB)
 | 
			
		||||
#define ESC_SYM LT(LAYER_SYM, KC_ESC)
 | 
			
		||||
#define SPC_NUM LT(LAYER_NUM, KC_SPC)
 | 
			
		||||
#define MOUSE(KC) LT(LAYER_MOUSE, KC)
 | 
			
		||||
 | 
			
		||||
#define USR_RDO KC_AGAIN
 | 
			
		||||
#define USR_PST S(KC_INS)
 | 
			
		||||
#define USR_CPY C(KC_INS)
 | 
			
		||||
#define USR_CUT S(KC_DEL)
 | 
			
		||||
#define USR_UND KC_UNDO
 | 
			
		||||
 | 
			
		||||
#define MS_L KC_MS_LEFT
 | 
			
		||||
#define MS_R KC_MS_RIGHT
 | 
			
		||||
#define MS_D KC_MS_DOWN
 | 
			
		||||
#define MS_U KC_MS_UP
 | 
			
		||||
 | 
			
		||||
#define WH_L KC_MS_WH_LEFT
 | 
			
		||||
#define WH_R KC_MS_WH_RIGHT
 | 
			
		||||
#define WH_D KC_MS_WH_DOWN
 | 
			
		||||
#define WH_U KC_MS_WH_UP
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
/** Convenience macro. */
 | 
			
		||||
#define _KC_LAYOUT_wrapper(                                                                             \
 | 
			
		||||
         k00,      k01,      k02,      k03,      k04,      k05,      k06,      k07,      k08,      k09, \
 | 
			
		||||
         k10,      k11,      k12,      k13,      k14,      k15,      k16,      k17,      k18,      k19, \
 | 
			
		||||
         k20,      k21,      k22,      k23,      k24,      k25,      k26,      k27,      k28,      k29, \
 | 
			
		||||
         ...)                                                                                           \
 | 
			
		||||
    KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, \
 | 
			
		||||
    KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, \
 | 
			
		||||
    KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, \
 | 
			
		||||
    __VA_ARGS__
 | 
			
		||||
#define KC_LAYOUT_wrapper(...) _KC_LAYOUT_wrapper(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/** Base layer with BÉPO layout. */
 | 
			
		||||
#define LAYOUT_LAYER_BASE_BEPO KC_LAYOUT_wrapper(               \
 | 
			
		||||
       B,    Z,    P,    O, QUOT,  DOT,    V,    D,    L,    J, \
 | 
			
		||||
       A,    U,    I,    E, COMM,    C,    T,    S,    R,    N, \
 | 
			
		||||
       W,    Y,    X, SLSH,    K,    M,    Q,    G,    H,    F, \
 | 
			
		||||
       BSP_NAV, ENT_MBO, TAB_MED,    ESC_SYM, SPC_NUM)
 | 
			
		||||
 | 
			
		||||
/** Convenience key shorthands. */
 | 
			
		||||
#define U_NA KC_NO // Present but not available for use.
 | 
			
		||||
#define U_NU KC_NO // Available but not used.
 | 
			
		||||
 | 
			
		||||
/** Convenience row shorthands. */
 | 
			
		||||
#define __________________RESET_L__________________ QK_BOOT,    U_NA,    U_NA,    U_NA,    U_NA
 | 
			
		||||
#define __________________RESET_R__________________    U_NA,    U_NA,    U_NA,    U_NA, QK_BOOT
 | 
			
		||||
#define ______________HOME_ROW_GASC_L______________ KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_ALGR_L______________    U_NA, KC_ALGR,    U_NA,    U_NA,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_GASC_R______________    U_NA, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI
 | 
			
		||||
#define ______________HOME_ROW_ALGR_R______________    U_NA,    U_NA,    U_NA, KC_ALGR,    U_NA
 | 
			
		||||
 | 
			
		||||
/** Layers. */
 | 
			
		||||
 | 
			
		||||
// Buttons.
 | 
			
		||||
#define LAYOUT_LAYER_MBO                                                                      \
 | 
			
		||||
    __________________RESET_L__________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________, KC_CAPS, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, \
 | 
			
		||||
    KC_BTN3, KC_ALGR, KC_BTN2, KC_BTN1,    U_NA,  KC_INS, KC_HOME, KC_PGDN, KC_PGUP,  KC_END, \
 | 
			
		||||
                         U_NA,    U_NA,    U_NA,  KC_ENT,  KC_DEL
 | 
			
		||||
 | 
			
		||||
// Media.
 | 
			
		||||
#define LAYOUT_LAYER_MEDIA                                                                    \
 | 
			
		||||
    __________________RESET_L__________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________,    U_NU,    MS_L,    MS_D,    MS_U,    MS_R, \
 | 
			
		||||
    ______________HOME_ROW_ALGR_L______________,    U_NU,    WH_L,    WH_D,    WH_U,    WH_R, \
 | 
			
		||||
                         U_NA,    U_NA,    U_NA, KC_BTN1, KC_BTN3
 | 
			
		||||
 | 
			
		||||
// Navigation.
 | 
			
		||||
#define LAYOUT_LAYER_NAV                                                                      \
 | 
			
		||||
    __________________RESET_L__________________, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________,    U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
 | 
			
		||||
    ______________HOME_ROW_ALGR_L______________,    U_NU,    U_NU,    U_NU,    U_NU,    U_NU, \
 | 
			
		||||
                         U_NA,    U_NA,    U_NA, KC_MSTP, KC_MPLY
 | 
			
		||||
 | 
			
		||||
// Mouse.
 | 
			
		||||
#define LAYOUT_LAYER_MOUSE                                                                    \
 | 
			
		||||
    S_D_MOD, USR_PST, USR_CPY, USR_CUT, USR_UND, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    DPI_MOD, DRGSCRL, KC_LSFT, KC_LCTL, _______,    U_NU,    MS_L,    MS_D,    MS_U,    MS_R, \
 | 
			
		||||
    USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND,    U_NU,    WH_L,    WH_D,    WH_U,    WH_R, \
 | 
			
		||||
                      KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN1, KC_BTN3
 | 
			
		||||
 | 
			
		||||
// Symbols.
 | 
			
		||||
#define LAYOUT_LAYER_SYM                                                                      \
 | 
			
		||||
    KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, __________________RESET_R__________________, \
 | 
			
		||||
    KC_COLN,  KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
    KC_TILD, KC_EXLM,   KC_AT, KC_HASH, KC_PIPE, ______________HOME_ROW_ALGR_R______________, \
 | 
			
		||||
                      KC_LPRN, KC_RPRN, KC_UNDS,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
// Numerals.
 | 
			
		||||
#define LAYOUT_LAYER_NUM                                                                      \
 | 
			
		||||
    KC_LBRC,    KC_7,    KC_8,    KC_9, KC_RBRC, __________________RESET_R__________________, \
 | 
			
		||||
    KC_SCLN,    KC_4,    KC_5,    KC_6,  KC_EQL, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
     KC_GRV,    KC_1,    KC_2,    KC_3, KC_BSLS, ______________HOME_ROW_ALGR_R______________, \
 | 
			
		||||
                       KC_DOT,    KC_0, KC_MINS,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
// Function keys.
 | 
			
		||||
#define LAYOUT_LAYER_FUN                                                                      \
 | 
			
		||||
     KC_F12,   KC_F7,   KC_F8,   KC_F9, KC_PSCR, __________________RESET_R__________________, \
 | 
			
		||||
     KC_F11,   KC_F4,   KC_F5,   KC_F6, KC_SCRL, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
     KC_F10,   KC_F1,   KC_F2,   KC_F3, KC_PAUS, ______________HOME_ROW_ALGR_R______________,\
 | 
			
		||||
                       KC_APP,  KC_SPC,  KC_TAB,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add Home Row mod to a layout.
 | 
			
		||||
 *
 | 
			
		||||
 * Expects a 10-key per row layout.  Adds support for GASC (Gui, Alt, Shift, Ctl)
 | 
			
		||||
 * home row.  The layout passed in parameter must contain at least 20 keycodes.
 | 
			
		||||
 *
 | 
			
		||||
 * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
 | 
			
		||||
 *
 | 
			
		||||
 *     HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO)
 | 
			
		||||
 */
 | 
			
		||||
#define _HOME_ROW_MOD_GASC(                                            \
 | 
			
		||||
    L00, L01, L02, L03, L04, R05, R06, R07, R08, R09,                  \
 | 
			
		||||
    L10, L11, L12, L13, L14, R15, R16, R17, R18, R19,                  \
 | 
			
		||||
    ...)                                                               \
 | 
			
		||||
             L00,         L01,         L02,         L03,         L04,  \
 | 
			
		||||
             R05,         R06,         R07,         R08,         R09,  \
 | 
			
		||||
      LGUI_T(L10), LALT_T(L11), LSFT_T(L12), LCTL_T(L13),        L14,  \
 | 
			
		||||
             R15,  RCTL_T(R16), RSFT_T(R17), LALT_T(R18), RGUI_T(R19), \
 | 
			
		||||
      __VA_ARGS__
 | 
			
		||||
#define HOME_ROW_MOD_GASC(...) _HOME_ROW_MOD_GASC(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add mouse layer keys to a layout.
 | 
			
		||||
 *
 | 
			
		||||
 * Expects a 10-key per row layout.  The layout passed in parameter must contain
 | 
			
		||||
 * at least 30 keycodes.
 | 
			
		||||
 *
 | 
			
		||||
 * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
 | 
			
		||||
 *
 | 
			
		||||
 *     MOUSE_MOD(LAYOUT_LAYER_BASE_BEPO)
 | 
			
		||||
 */
 | 
			
		||||
#define _MOUSE_MOD(                                               \
 | 
			
		||||
    L00, L01, L02, L03, L04, R05, R06, R07, R08, R09,             \
 | 
			
		||||
    L10, L11, L12, L13, L14, R15, R16, R17, R18, R19,             \
 | 
			
		||||
    L20, L21, L22, L23, L24, R25, R26, R27, R28, R29,             \
 | 
			
		||||
    ...)                                                          \
 | 
			
		||||
            L00,        L01,        L02,        L03,        L04,  \
 | 
			
		||||
            R05,        R06,        R07,        R08,        R09,  \
 | 
			
		||||
            L10,        L11,        L12,        L13,        L14,  \
 | 
			
		||||
            R15,        R16,        R17,        R18,        R19,  \
 | 
			
		||||
      MOUSE(L20),       L21,        L22,        L23,        L24,  \
 | 
			
		||||
            R25,        R26,        R27,        R28,  MOUSE(R29), \
 | 
			
		||||
      __VA_ARGS__
 | 
			
		||||
#define MOUSE_MOD(...) _MOUSE_MOD(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [LAYER_BASE] = LAYOUT_wrapper(
 | 
			
		||||
    MOUSE_MOD(HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO))
 | 
			
		||||
  ),
 | 
			
		||||
  [LAYER_MBO] = LAYOUT_wrapper(LAYOUT_LAYER_MBO),
 | 
			
		||||
  [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
 | 
			
		||||
  [LAYER_NAV] = LAYOUT_wrapper(LAYOUT_LAYER_NAV),
 | 
			
		||||
  [LAYER_MOUSE] = LAYOUT_wrapper(LAYOUT_LAYER_MOUSE),
 | 
			
		||||
  [LAYER_SYM] = LAYOUT_wrapper(LAYOUT_LAYER_SYM),
 | 
			
		||||
  [LAYER_NUM] = LAYOUT_wrapper(LAYOUT_LAYER_NUM),
 | 
			
		||||
  [LAYER_FUN] = LAYOUT_wrapper(LAYOUT_LAYER_FUN),
 | 
			
		||||
};
 | 
			
		||||
// clang-format on
 | 
			
		||||
 | 
			
		||||
#if defined(POINTING_DEVICE_ENABLE) && defined(CHARYBDIS_AUTO_SNIPING_ON_LAYER)
 | 
			
		||||
layer_state_t layer_state_set_kb(layer_state_t state) {
 | 
			
		||||
    state = layer_state_set_user(state);
 | 
			
		||||
    charybdis_set_pointer_sniping_enabled(layer_state_cmp(state, CHARYBDIS_AUTO_SNIPING_ON_LAYER));
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
#endif // POINTING_DEVICE_ENABLE && CHARYBDIS_AUTO_SNIPING_ON_LAYER
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
// Forward-declare this helper function since it is defined in rgb_matrix.c.
 | 
			
		||||
void rgb_matrix_update_pwm_buffers(void);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
# Charybdis (3x5) @bstiq keymap
 | 
			
		||||
 | 
			
		||||
Inspired from Miryoku, using home-rows.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,10 +0,0 @@
 | 
			
		|||
ifeq ($(MCU),atmega32u4)
 | 
			
		||||
	# Space saving settings.
 | 
			
		||||
	TAP_DANCE_ENABLE = no
 | 
			
		||||
	COMBO_ENABLE = no
 | 
			
		||||
	QMK_SETTINGS = no
 | 
			
		||||
else ifeq ($(MCU),STM32F411)
 | 
			
		||||
	EEPROM_DRIVER = vendor
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
VIA_ENABLE = yes
 | 
			
		||||
| 
						 | 
				
			
			@ -1,138 +0,0 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
 | 
			
		||||
 * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
#ifdef VIA_ENABLE
 | 
			
		||||
/* Via configuration. */
 | 
			
		||||
#    define DYNAMIC_KEYMAP_LAYER_COUNT 8
 | 
			
		||||
#endif // VIA_ENABLE
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Configure the global tapping term (default: 200ms).
 | 
			
		||||
 * If you have a lot of accidental mod activations, crank up the tapping term.
 | 
			
		||||
 *
 | 
			
		||||
 * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TAPPING_TERM
 | 
			
		||||
#    define TAPPING_TERM 160
 | 
			
		||||
#endif // TAPPING_TERM
 | 
			
		||||
 | 
			
		||||
// disable trackpad taps
 | 
			
		||||
// #define CIRQUE_PINNACLE_TAPPING_TERM 0
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Enable rapid switch from tap to hold.  Disable auto-repeat when pressing key
 | 
			
		||||
 * twice, except for one-shot keys.
 | 
			
		||||
 *
 | 
			
		||||
 * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-force-hold
 | 
			
		||||
 */
 | 
			
		||||
#define QUICK_TAP_TERM 0
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Tap-or-Hold decision modes.
 | 
			
		||||
 *
 | 
			
		||||
 * Note that the following flags behave differently when combined (ie. when 2 or
 | 
			
		||||
 * more are enabled).
 | 
			
		||||
 *
 | 
			
		||||
 * See bit.ly/tap-or-hold for a visual explanation of the following tap-or-hold
 | 
			
		||||
 * decision modes.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Faster tap-hold trigger.
 | 
			
		||||
 *
 | 
			
		||||
 * Without `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
 | 
			
		||||
 *   Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ ae
 | 
			
		||||
 * With `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
 | 
			
		||||
 *   Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ Mod+e
 | 
			
		||||
 *
 | 
			
		||||
 * See docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold
 | 
			
		||||
 */
 | 
			
		||||
#define PERMISSIVE_HOLD
 | 
			
		||||
 | 
			
		||||
/** Dilemma-specific features. */
 | 
			
		||||
 | 
			
		||||
#ifdef POINTING_DEVICE_ENABLE
 | 
			
		||||
// Flip horizontal direction for drag-scroll.
 | 
			
		||||
#    define DILEMMA_DRAGSCROLL_REVERSE_X
 | 
			
		||||
// #define DILEMMA_DRAGSCROLL_REVERSE_Y
 | 
			
		||||
#endif // POINTING_DEVICE_ENABLE
 | 
			
		||||
 | 
			
		||||
/** RGB Matrix. */
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
// Enable all animations on ARM boards since they have plenty of memory
 | 
			
		||||
// available for it.
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_ALPHAS_MODS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BREATHING
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BAND_SAT
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BAND_VAL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_ALL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_DUAL_BEACON
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_RAINBOW_BEACON
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_RAINDROPS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_HUE_BREATHING
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_HUE_PENDULUM
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_HUE_WAVE
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_TYPING_HEATMAP
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_DIGITAL_RAIN
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SPLASH
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_MULTISPLASH
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_SPLASH
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
 | 
			
		||||
 | 
			
		||||
// Limit maximum brightness to keep power consumption reasonable, and avoid
 | 
			
		||||
// disconnects.
 | 
			
		||||
#    undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
 | 
			
		||||
#    define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64
 | 
			
		||||
 | 
			
		||||
// Rainbow swirl as startup mode.
 | 
			
		||||
#    define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
 | 
			
		||||
 | 
			
		||||
// Slow swirl at startup.
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_SPD 32
 | 
			
		||||
 | 
			
		||||
// Startup values.
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_HUE 0
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_SAT 255
 | 
			
		||||
#    define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
 | 
			
		||||
#endif // RGB_MATRIX_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -1,212 +0,0 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
 | 
			
		||||
 * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
enum bstiq_layers {
 | 
			
		||||
    LAYER_BASE = 0,
 | 
			
		||||
    LAYER_MBO,
 | 
			
		||||
    LAYER_MEDIA,
 | 
			
		||||
    LAYER_NAV,
 | 
			
		||||
    LAYER_MOUSE,
 | 
			
		||||
    LAYER_SYM,
 | 
			
		||||
    LAYER_NUM,
 | 
			
		||||
    LAYER_FUN,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Automatically enable sniping when the mouse layer is on.
 | 
			
		||||
#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_MOUSE
 | 
			
		||||
 | 
			
		||||
#define BSP_NAV LT(LAYER_NAV, KC_BSPC)
 | 
			
		||||
#define ENT_MBO LT(LAYER_MBO, KC_ENT)
 | 
			
		||||
#define TAB_MED LT(LAYER_MEDIA, KC_TAB)
 | 
			
		||||
#define ESC_SYM LT(LAYER_SYM, KC_ESC)
 | 
			
		||||
#define SPC_NUM LT(LAYER_NUM, KC_SPC)
 | 
			
		||||
#define SPC_MBO LT(LAYER_MBO, KC_SPC)
 | 
			
		||||
#define MOUSE(KC) LT(LAYER_MOUSE, KC)
 | 
			
		||||
 | 
			
		||||
#define USR_RDO KC_AGAIN
 | 
			
		||||
#define USR_PST S(KC_INS)
 | 
			
		||||
#define USR_CPY C(KC_INS)
 | 
			
		||||
#define USR_CUT S(KC_DEL)
 | 
			
		||||
#define USR_UND KC_UNDO
 | 
			
		||||
 | 
			
		||||
#define MS_L KC_MS_LEFT
 | 
			
		||||
#define MS_R KC_MS_RIGHT
 | 
			
		||||
#define MS_D KC_MS_DOWN
 | 
			
		||||
#define MS_U KC_MS_UP
 | 
			
		||||
 | 
			
		||||
#define WH_L KC_MS_WH_LEFT
 | 
			
		||||
#define WH_R KC_MS_WH_RIGHT
 | 
			
		||||
#define WH_D KC_MS_WH_DOWN
 | 
			
		||||
#define WH_U KC_MS_WH_UP
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
/** Convenience macro. */
 | 
			
		||||
#define _KC_LAYOUT_wrapper(                                                                             \
 | 
			
		||||
         k00,      k01,      k02,      k03,      k04,      k05,      k06,      k07,      k08,      k09, \
 | 
			
		||||
         k10,      k11,      k12,      k13,      k14,      k15,      k16,      k17,      k18,      k19, \
 | 
			
		||||
         k20,      k21,      k22,      k23,      k24,      k25,      k26,      k27,      k28,      k29, \
 | 
			
		||||
         ...)                                                                                           \
 | 
			
		||||
    KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, \
 | 
			
		||||
    KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, \
 | 
			
		||||
    KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, \
 | 
			
		||||
    __VA_ARGS__
 | 
			
		||||
#define KC_LAYOUT_wrapper(...) _KC_LAYOUT_wrapper(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/** Base layer with BÉPO layout. */
 | 
			
		||||
#define LAYOUT_LAYER_BASE_BEPO KC_LAYOUT_wrapper(               \
 | 
			
		||||
       B,    W,    P,    O, QUOT,  DOT,    V,    D,    L,    J, \
 | 
			
		||||
       A,    U,    I,    E, COMM,    C,    T,    S,    R,    N, \
 | 
			
		||||
       Z,    Y,    X, SLSH,    K,    M,    Q,    G,    H,    F, \
 | 
			
		||||
                SPC_MBO, TAB_MED,    ESC_SYM, SPC_NUM)
 | 
			
		||||
 | 
			
		||||
/** Convenience key shorthands. */
 | 
			
		||||
#define U_NA KC_NO // Present but not available for use.
 | 
			
		||||
#define U_NU KC_NO // Available but not used.
 | 
			
		||||
 | 
			
		||||
/** Convenience row shorthands. */
 | 
			
		||||
#define ________________HOME_ROW_NA________________    U_NA,    U_NA,    U_NA,    U_NA,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_GASC_L______________ KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_ALGR_L______________    U_NA, KC_ALGR,    U_NA,    U_NA,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_GASC_R______________    U_NA, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI
 | 
			
		||||
#define ______________HOME_ROW_ALGR_R______________    U_NA,    U_NA,    U_NA, KC_ALGR,    U_NA
 | 
			
		||||
 | 
			
		||||
/** Layers. */
 | 
			
		||||
 | 
			
		||||
// Buttons.
 | 
			
		||||
#define LAYOUT_LAYER_MBO                                                                      \
 | 
			
		||||
    ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________, KC_BSPC, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, \
 | 
			
		||||
    KC_BTN3, KC_ALGR, KC_BTN2, KC_BTN1,    U_NA,  KC_DEL, KC_HOME, KC_PGDN, KC_PGUP,  KC_END, \
 | 
			
		||||
                                  U_NA,    U_NA,  KC_ENT,  KC_ENT
 | 
			
		||||
 | 
			
		||||
// Media.
 | 
			
		||||
#define LAYOUT_LAYER_MEDIA                                                                    \
 | 
			
		||||
    ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________,    U_NU,    MS_L,    MS_D,    MS_U,    MS_R, \
 | 
			
		||||
    ______________HOME_ROW_ALGR_L______________,    U_NU,    WH_L,    WH_D,    WH_U,    WH_R, \
 | 
			
		||||
                                  U_NA,    U_NA, KC_BTN1, KC_BTN3
 | 
			
		||||
 | 
			
		||||
// Navigation.
 | 
			
		||||
#define LAYOUT_LAYER_NAV                                                                      \
 | 
			
		||||
    ________________HOME_ROW_NA________________, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________,    U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
 | 
			
		||||
    ______________HOME_ROW_ALGR_L______________,    U_NU,    U_NU,    U_NU,    U_NU,    U_NU, \
 | 
			
		||||
                                  U_NA,    U_NA, KC_MSTP, KC_MPLY
 | 
			
		||||
 | 
			
		||||
// Mouse.
 | 
			
		||||
#define LAYOUT_LAYER_MOUSE                                                                    \
 | 
			
		||||
    S_D_MOD, USR_PST, USR_CPY, USR_CUT, USR_UND, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    DPI_MOD, DRGSCRL, KC_LSFT, DRGSCRL, _______,    U_NU,    MS_L,    MS_D,    MS_U,    MS_R, \
 | 
			
		||||
    USR_RDO, USR_PST, USR_CPY, KC_BTN3, USR_UND,    U_NU,    WH_L,    WH_D,    WH_U,    WH_R, \
 | 
			
		||||
                               KC_BTN1, KC_BTN2, KC_BTN1, KC_BTN3
 | 
			
		||||
 | 
			
		||||
// Symbols.
 | 
			
		||||
#define LAYOUT_LAYER_SYM                                                                      \
 | 
			
		||||
    KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, ________________HOME_ROW_NA________________, \
 | 
			
		||||
    KC_COLN,  KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
    KC_TILD, KC_EXLM,   KC_AT, KC_HASH, KC_MINS, ______________HOME_ROW_ALGR_R______________, \
 | 
			
		||||
                               KC_RPRN, KC_LPRN,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
// Numerals.
 | 
			
		||||
#define LAYOUT_LAYER_NUM                                                                      \
 | 
			
		||||
    KC_LBRC,    KC_7,    KC_8,    KC_9, KC_RBRC, ________________HOME_ROW_NA________________, \
 | 
			
		||||
    KC_SCLN,    KC_4,    KC_5,    KC_6,  KC_EQL, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
     KC_GRV,    KC_1,    KC_2,    KC_3, KC_UNDS, ______________HOME_ROW_ALGR_R______________, \
 | 
			
		||||
                                  KC_0, KC_MINS,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
// Function keys.
 | 
			
		||||
#define LAYOUT_LAYER_FUN                                                                      \
 | 
			
		||||
     KC_F12,   KC_F7,   KC_F8,   KC_F9, KC_PSCR, ________________HOME_ROW_NA________________, \
 | 
			
		||||
     KC_F11,   KC_F4,   KC_F5,   KC_F6, KC_SCRL, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
     KC_F10,   KC_F1,   KC_F2,   KC_F3, KC_PAUS, ______________HOME_ROW_ALGR_R______________,\
 | 
			
		||||
                                KC_APP,  KC_TAB,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add Home Row mod to a layout.
 | 
			
		||||
 *
 | 
			
		||||
 * Expects a 10-key per row layout.  Adds support for GASC (Gui, Alt, Shift, Ctl)
 | 
			
		||||
 * home row.  The layout passed in parameter must contain at least 20 keycodes.
 | 
			
		||||
 *
 | 
			
		||||
 * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
 | 
			
		||||
 *
 | 
			
		||||
 *     HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO)
 | 
			
		||||
 */
 | 
			
		||||
#define _HOME_ROW_MOD_GASC(                                            \
 | 
			
		||||
    L00, L01, L02, L03, L04, R05, R06, R07, R08, R09,                  \
 | 
			
		||||
    L10, L11, L12, L13, L14, R15, R16, R17, R18, R19,                  \
 | 
			
		||||
    ...)                                                               \
 | 
			
		||||
             L00,         L01,         L02,         L03,         L04,  \
 | 
			
		||||
             R05,         R06,         R07,         R08,         R09,  \
 | 
			
		||||
      LGUI_T(L10), LALT_T(L11), LSFT_T(L12), LCTL_T(L13),        L14,  \
 | 
			
		||||
             R15,  RCTL_T(R16), RSFT_T(R17), LALT_T(R18), RGUI_T(R19), \
 | 
			
		||||
      __VA_ARGS__
 | 
			
		||||
#define HOME_ROW_MOD_GASC(...) _HOME_ROW_MOD_GASC(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add mouse layer keys to a layout.
 | 
			
		||||
 *
 | 
			
		||||
 * Expects a 10-key per row layout.  The layout passed in parameter must contain
 | 
			
		||||
 * at least 30 keycodes.
 | 
			
		||||
 *
 | 
			
		||||
 * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
 | 
			
		||||
 *
 | 
			
		||||
 *     MOUSE_MOD(LAYOUT_LAYER_BASE_BEPO)
 | 
			
		||||
 */
 | 
			
		||||
#define _MOUSE_MOD(                                               \
 | 
			
		||||
    L00, L01, L02, L03, L04, R05, R06, R07, R08, R09,             \
 | 
			
		||||
    L10, L11, L12, L13, L14, R15, R16, R17, R18, R19,             \
 | 
			
		||||
    L20, L21, L22, L23, L24, R25, R26, R27, R28, R29,             \
 | 
			
		||||
    ...)                                                          \
 | 
			
		||||
            L00,        L01,        L02,        L03,        L04,  \
 | 
			
		||||
            R05,        R06,        R07,        R08,        R09,  \
 | 
			
		||||
            L10,        L11,        L12,        L13,        L14,  \
 | 
			
		||||
            R15,        R16,        R17,        R18,        R19,  \
 | 
			
		||||
            L20, MOUSE(L21),        L22,        L23,        L24,  \
 | 
			
		||||
            R25,        R26,        R27,        R28,  MOUSE(R29), \
 | 
			
		||||
      __VA_ARGS__
 | 
			
		||||
#define MOUSE_MOD(...) _MOUSE_MOD(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_wrapper(...) LAYOUT_split_3x5_2(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [LAYER_BASE] = LAYOUT_wrapper(
 | 
			
		||||
    MOUSE_MOD(HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO))
 | 
			
		||||
  ),
 | 
			
		||||
  [LAYER_MBO] = LAYOUT_wrapper(LAYOUT_LAYER_MBO),
 | 
			
		||||
  [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
 | 
			
		||||
  [LAYER_NAV] = LAYOUT_wrapper(LAYOUT_LAYER_NAV),
 | 
			
		||||
  [LAYER_MOUSE] = LAYOUT_wrapper(LAYOUT_LAYER_MOUSE),
 | 
			
		||||
  [LAYER_SYM] = LAYOUT_wrapper(LAYOUT_LAYER_SYM),
 | 
			
		||||
  [LAYER_NUM] = LAYOUT_wrapper(LAYOUT_LAYER_NUM),
 | 
			
		||||
  [LAYER_FUN] = LAYOUT_wrapper(LAYOUT_LAYER_FUN),
 | 
			
		||||
};
 | 
			
		||||
// clang-format on
 | 
			
		||||
 | 
			
		||||
#if defined(POINTING_DEVICE_ENABLE) && defined(DILEMMA_AUTO_SNIPING_ON_LAYER)
 | 
			
		||||
layer_state_t layer_state_set_kb(layer_state_t state) {
 | 
			
		||||
    state = layer_state_set_user(state);
 | 
			
		||||
    dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
#endif // POINTING_DEVICE_ENABLE && DILEMMA_AUTO_SNIPING_ON_LAYER
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
// Forward-declare this helper function since it is defined in rgb_matrix.c.
 | 
			
		||||
void rgb_matrix_update_pwm_buffers(void);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
# Dilemma @bstiq keymap
 | 
			
		||||
 | 
			
		||||
Inspired from Miryoku, using home-rows.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,68 +0,0 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
 | 
			
		||||
 * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
#ifdef VIA_ENABLE
 | 
			
		||||
/* Via configuration. */
 | 
			
		||||
#    define DYNAMIC_KEYMAP_LAYER_COUNT 8
 | 
			
		||||
#endif // VIA_ENABLE
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Configure the global tapping term (default: 200ms).
 | 
			
		||||
 * If you have a lot of accidental mod activations, crank up the tapping term.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef TAPPING_TERM
 | 
			
		||||
#    define TAPPING_TERM 160
 | 
			
		||||
#endif // TAPPING_TERM
 | 
			
		||||
 | 
			
		||||
// disable trackpad taps
 | 
			
		||||
// #define CIRQUE_PINNACLE_TAPPING_TERM 0
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Enable rapid switch from tap to hold.  Disable auto-repeat when pressing key
 | 
			
		||||
 * twice, except for one-shot keys.
 | 
			
		||||
 */
 | 
			
		||||
#define QUICK_TAP_TERM 0
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Tap-or-Hold decision modes.
 | 
			
		||||
 *
 | 
			
		||||
 * Note that the following flags behave differently when combined (ie. when 2 or
 | 
			
		||||
 * more are enabled).
 | 
			
		||||
 *
 | 
			
		||||
 * See bit.ly/tap-or-hold for a visual explanation of the following tap-or-hold
 | 
			
		||||
 * decision modes.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Faster tap-hold trigger.
 | 
			
		||||
 *
 | 
			
		||||
 * Without `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
 | 
			
		||||
 *   Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ ae
 | 
			
		||||
 * With `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
 | 
			
		||||
 *   Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ Mod+e
 | 
			
		||||
 */
 | 
			
		||||
#define PERMISSIVE_HOLD
 | 
			
		||||
 | 
			
		||||
/** Dilemma-specific features. */
 | 
			
		||||
 | 
			
		||||
#ifdef POINTING_DEVICE_ENABLE
 | 
			
		||||
// Flip horizontal direction for drag-scroll.
 | 
			
		||||
#    define DILEMMA_DRAGSCROLL_REVERSE_X
 | 
			
		||||
// #define DILEMMA_DRAGSCROLL_REVERSE_Y
 | 
			
		||||
#endif // POINTING_DEVICE_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -1,224 +0,0 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
 | 
			
		||||
 * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 | 
			
		||||
enum bstiq_layers {
 | 
			
		||||
    LAYER_BASE = 0,
 | 
			
		||||
    LAYER_MBO,
 | 
			
		||||
    LAYER_MEDIA,
 | 
			
		||||
    LAYER_NAV,
 | 
			
		||||
    LAYER_MOUSE,
 | 
			
		||||
    LAYER_SYM,
 | 
			
		||||
    LAYER_NUM,
 | 
			
		||||
    LAYER_FUN,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Automatically enable sniping when the mouse layer is on.
 | 
			
		||||
#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_MOUSE
 | 
			
		||||
 | 
			
		||||
#define BSP_NAV LT(LAYER_NAV, KC_BSPC)
 | 
			
		||||
#define ENT_MBO LT(LAYER_MBO, KC_ENT)
 | 
			
		||||
#define TAB_MED LT(LAYER_MEDIA, KC_TAB)
 | 
			
		||||
#define ESC_SYM LT(LAYER_SYM, KC_ESC)
 | 
			
		||||
#define SPC_NUM LT(LAYER_NUM, KC_SPC)
 | 
			
		||||
#define SPC_MBO LT(LAYER_MBO, KC_SPC)
 | 
			
		||||
#define MOUSE(KC) LT(LAYER_MOUSE, KC)
 | 
			
		||||
 | 
			
		||||
#define USR_RDO KC_AGAIN
 | 
			
		||||
#define USR_PST S(KC_INS)
 | 
			
		||||
#define USR_CPY C(KC_INS)
 | 
			
		||||
#define USR_CUT S(KC_DEL)
 | 
			
		||||
#define USR_UND KC_UNDO
 | 
			
		||||
 | 
			
		||||
#define MS_L KC_MS_LEFT
 | 
			
		||||
#define MS_R KC_MS_RIGHT
 | 
			
		||||
#define MS_D KC_MS_DOWN
 | 
			
		||||
#define MS_U KC_MS_UP
 | 
			
		||||
 | 
			
		||||
#define WH_L KC_MS_WH_LEFT
 | 
			
		||||
#define WH_R KC_MS_WH_RIGHT
 | 
			
		||||
#define WH_D KC_MS_WH_DOWN
 | 
			
		||||
#define WH_U KC_MS_WH_UP
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
/** Convenience macro. */
 | 
			
		||||
#define _KC_LAYOUT_wrapper(                                                                             \
 | 
			
		||||
         k00,      k01,      k02,      k03,      k04,      k05,      k06,      k07,      k08,      k09, \
 | 
			
		||||
         k10,      k11,      k12,      k13,      k14,      k15,      k16,      k17,      k18,      k19, \
 | 
			
		||||
         k20,      k21,      k22,      k23,      k24,      k25,      k26,      k27,      k28,      k29, \
 | 
			
		||||
         ...)                                                                                           \
 | 
			
		||||
    KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, \
 | 
			
		||||
    KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, \
 | 
			
		||||
    KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, \
 | 
			
		||||
    __VA_ARGS__
 | 
			
		||||
#define KC_LAYOUT_wrapper(...) _KC_LAYOUT_wrapper(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/** Base layer with BÉPO layout. */
 | 
			
		||||
#define LAYOUT_LAYER_BASE_BEPO KC_LAYOUT_wrapper(               \
 | 
			
		||||
       B,    W,    P,    O, QUOT,  DOT,    V,    D,    L,    J, \
 | 
			
		||||
       A,    U,    I,    E, COMM,    C,    T,    S,    R,    N, \
 | 
			
		||||
       Z,    Y,    X, SLSH,    K,    M,    Q,    G,    H,    F, \
 | 
			
		||||
          KC_A, SPC_MBO, TAB_MED, ESC_SYM, SPC_NUM, KC_A)
 | 
			
		||||
 | 
			
		||||
/** Convenience key shorthands. */
 | 
			
		||||
#define U_NA KC_NO // Present but not available for use.
 | 
			
		||||
#define U_NU KC_NO // Available but not used.
 | 
			
		||||
 | 
			
		||||
/** Convenience row shorthands. */
 | 
			
		||||
#define ________________HOME_ROW_NA________________    U_NA,    U_NA,    U_NA,    U_NA,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_GASC_L______________ KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_ALGR_L______________    U_NA, KC_ALGR,    U_NA,    U_NA,    U_NA
 | 
			
		||||
#define ______________HOME_ROW_GASC_R______________    U_NA, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI
 | 
			
		||||
#define ______________HOME_ROW_ALGR_R______________    U_NA,    U_NA,    U_NA, KC_ALGR,    U_NA
 | 
			
		||||
 | 
			
		||||
/** Layers. */
 | 
			
		||||
 | 
			
		||||
// Buttons.
 | 
			
		||||
#define LAYOUT_LAYER_MBO                                                                      \
 | 
			
		||||
    ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________, KC_BSPC, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, \
 | 
			
		||||
    KC_BTN3, KC_ALGR, KC_BTN2, KC_BTN1,    U_NA,  KC_DEL, KC_HOME, KC_PGDN, KC_PGUP,  KC_END, \
 | 
			
		||||
                         U_NA,    U_NA,    U_NA,  KC_ENT,  KC_ENT,  KC_ENT
 | 
			
		||||
 | 
			
		||||
// Media.
 | 
			
		||||
#define LAYOUT_LAYER_MEDIA                                                                    \
 | 
			
		||||
    ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________,    U_NU,    MS_L,    MS_D,    MS_U,    MS_R, \
 | 
			
		||||
    ______________HOME_ROW_ALGR_L______________,    U_NU,    WH_L,    WH_D,    WH_U,    WH_R, \
 | 
			
		||||
                        U_NA,     U_NA,    U_NA, KC_BTN1, KC_BTN3, KC_BTN2
 | 
			
		||||
 | 
			
		||||
// Navigation.
 | 
			
		||||
#define LAYOUT_LAYER_NAV                                                                      \
 | 
			
		||||
    ________________HOME_ROW_NA________________, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
 | 
			
		||||
    ______________HOME_ROW_GASC_L______________,    U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
 | 
			
		||||
    ______________HOME_ROW_ALGR_L______________,    U_NU,    U_NU,    U_NU,    U_NU,    U_NU, \
 | 
			
		||||
                        U_NA,     U_NA,    U_NA, KC_MSTP, KC_MPLY,    U_NA
 | 
			
		||||
 | 
			
		||||
// Mouse.
 | 
			
		||||
#define LAYOUT_LAYER_MOUSE                                                                    \
 | 
			
		||||
    S_D_MOD, USR_PST, USR_CPY, USR_CUT, USR_UND, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
 | 
			
		||||
    DPI_MOD, DRGSCRL, KC_LSFT, DRGSCRL, _______,    U_NU,    MS_L,    MS_D,    MS_U,    MS_R, \
 | 
			
		||||
    USR_RDO, USR_PST, USR_CPY, KC_BTN3, USR_UND,    U_NU,    WH_L,    WH_D,    WH_U,    WH_R, \
 | 
			
		||||
                      KC_BTN3, KC_BTN1, KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN2
 | 
			
		||||
 | 
			
		||||
// Symbols.
 | 
			
		||||
#define LAYOUT_LAYER_SYM                                                                      \
 | 
			
		||||
    KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, ________________HOME_ROW_NA________________, \
 | 
			
		||||
    KC_COLN,  KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
    KC_TILD, KC_EXLM,   KC_AT, KC_HASH, KC_MINS, ______________HOME_ROW_ALGR_R______________, \
 | 
			
		||||
                         U_NA, KC_RPRN, KC_LPRN,    U_NA,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
// Numerals.
 | 
			
		||||
#define LAYOUT_LAYER_NUM                                                                      \
 | 
			
		||||
    KC_LBRC,    KC_7,    KC_8,    KC_9, KC_RBRC, ________________HOME_ROW_NA________________, \
 | 
			
		||||
    KC_SCLN,    KC_4,    KC_5,    KC_6,  KC_EQL, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
     KC_GRV,    KC_1,    KC_2,    KC_3, KC_UNDS, ______________HOME_ROW_ALGR_R______________, \
 | 
			
		||||
                         U_NA,    KC_0, KC_MINS,    U_NA,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
// Function keys.
 | 
			
		||||
#define LAYOUT_LAYER_FUN                                                                      \
 | 
			
		||||
     KC_F12,   KC_F7,   KC_F8,   KC_F9, KC_PSCR, ________________HOME_ROW_NA________________, \
 | 
			
		||||
     KC_F11,   KC_F4,   KC_F5,   KC_F6, KC_SCRL, ______________HOME_ROW_GASC_R______________, \
 | 
			
		||||
     KC_F10,   KC_F1,   KC_F2,   KC_F3, KC_PAUS, ______________HOME_ROW_ALGR_R______________,\
 | 
			
		||||
                         U_NA,  KC_APP,  KC_TAB,    U_NA,    U_NA,    U_NA
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add Home Row mod to a layout.
 | 
			
		||||
 *
 | 
			
		||||
 * Expects a 10-key per row layout.  Adds support for GASC (Gui, Alt, Shift, Ctl)
 | 
			
		||||
 * home row.  The layout passed in parameter must contain at least 20 keycodes.
 | 
			
		||||
 *
 | 
			
		||||
 * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
 | 
			
		||||
 *
 | 
			
		||||
 *     HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO)
 | 
			
		||||
 */
 | 
			
		||||
#define _HOME_ROW_MOD_GASC(                                            \
 | 
			
		||||
    L00, L01, L02, L03, L04, R05, R06, R07, R08, R09,                  \
 | 
			
		||||
    L10, L11, L12, L13, L14, R15, R16, R17, R18, R19,                  \
 | 
			
		||||
    ...)                                                               \
 | 
			
		||||
             L00,         L01,         L02,         L03,         L04,  \
 | 
			
		||||
             R05,         R06,         R07,         R08,         R09,  \
 | 
			
		||||
      LGUI_T(L10), LALT_T(L11), LSFT_T(L12), LCTL_T(L13),        L14,  \
 | 
			
		||||
             R15,  RCTL_T(R16), RSFT_T(R17), LALT_T(R18), RGUI_T(R19), \
 | 
			
		||||
      __VA_ARGS__
 | 
			
		||||
#define HOME_ROW_MOD_GASC(...) _HOME_ROW_MOD_GASC(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add mouse layer keys to a layout.
 | 
			
		||||
 *
 | 
			
		||||
 * Expects a 10-key per row layout.  The layout passed in parameter must contain
 | 
			
		||||
 * at least 30 keycodes.
 | 
			
		||||
 *
 | 
			
		||||
 * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
 | 
			
		||||
 *
 | 
			
		||||
 *     MOUSE_MOD(LAYOUT_LAYER_BASE_BEPO)
 | 
			
		||||
 */
 | 
			
		||||
#define _MOUSE_MOD(                                               \
 | 
			
		||||
    L00, L01, L02, L03, L04, R05, R06, R07, R08, R09,             \
 | 
			
		||||
    L10, L11, L12, L13, L14, R15, R16, R17, R18, R19,             \
 | 
			
		||||
    L20, L21, L22, L23, L24, R25, R26, R27, R28, R29,             \
 | 
			
		||||
    ...)                                                          \
 | 
			
		||||
            L00,        L01,        L02,        L03,        L04,  \
 | 
			
		||||
            R05,        R06,        R07,        R08,        R09,  \
 | 
			
		||||
            L10,        L11,        L12,        L13,        L14,  \
 | 
			
		||||
            R15,        R16,        R17,        R18,        R19,  \
 | 
			
		||||
            L20, MOUSE(L21),        L22,        L23,        L24,  \
 | 
			
		||||
            R25,        R26,        R27,        R28,  MOUSE(R29), \
 | 
			
		||||
      __VA_ARGS__
 | 
			
		||||
#define MOUSE_MOD(...) _MOUSE_MOD(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_wrapper(...) LAYOUT_split_3x5_3(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [LAYER_BASE] = LAYOUT_wrapper(
 | 
			
		||||
    MOUSE_MOD(HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO))
 | 
			
		||||
  ),
 | 
			
		||||
  [LAYER_MBO] = LAYOUT_wrapper(LAYOUT_LAYER_MBO),
 | 
			
		||||
  [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
 | 
			
		||||
  [LAYER_NAV] = LAYOUT_wrapper(LAYOUT_LAYER_NAV),
 | 
			
		||||
  [LAYER_MOUSE] = LAYOUT_wrapper(LAYOUT_LAYER_MOUSE),
 | 
			
		||||
  [LAYER_SYM] = LAYOUT_wrapper(LAYOUT_LAYER_SYM),
 | 
			
		||||
  [LAYER_NUM] = LAYOUT_wrapper(LAYOUT_LAYER_NUM),
 | 
			
		||||
  [LAYER_FUN] = LAYOUT_wrapper(LAYOUT_LAYER_FUN),
 | 
			
		||||
};
 | 
			
		||||
// clang-format on
 | 
			
		||||
 | 
			
		||||
#if defined(POINTING_DEVICE_ENABLE) && defined(DILEMMA_AUTO_SNIPING_ON_LAYER)
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
    dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
#endif // POINTING_DEVICE_ENABLE && DILEMMA_AUTO_SNIPING_ON_LAYER
 | 
			
		||||
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
// Forward-declare this helper function since it is defined in rgb_matrix.c.
 | 
			
		||||
void rgb_matrix_update_pwm_buffers(void);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool shutdown_user(bool jump_to_bootloader) {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    rgblight_enable_noeeprom();
 | 
			
		||||
    rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
 | 
			
		||||
    rgblight_setrgb_red();
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
#ifdef RGB_MATRIX_ENABLE
 | 
			
		||||
    rgb_matrix_set_color_all(RGB_RED);
 | 
			
		||||
    rgb_matrix_update_pwm_buffers();
 | 
			
		||||
#endif // RGB_MATRIX_ENABLE
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
# Dilemma @bstiq keymap
 | 
			
		||||
 | 
			
		||||
Inspired from Miryoku, using home-rows.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
// Copyright 2021 Christian Eiden, cykedev
 | 
			
		||||
//
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
// Select hand configuration
 | 
			
		||||
// #define MASTER_LEFT
 | 
			
		||||
// #define MASTER_RIGHT
 | 
			
		||||
#define EE_HANDS
 | 
			
		||||
 | 
			
		||||
#define BOOTMAGIC_LITE_ROW 0
 | 
			
		||||
#define BOOTMAGIC_LITE_COLUMN 0
 | 
			
		||||
 | 
			
		||||
#define BOOTMAGIC_LITE_ROW_RIGHT 0
 | 
			
		||||
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
 | 
			
		||||
 | 
			
		||||
#define TAPPING_TERM 200
 | 
			
		||||
 | 
			
		||||
// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
 | 
			
		||||
// #define QUICK_TAP_TERM 0
 | 
			
		||||
 | 
			
		||||
// Apply the modifier on keys that are tapped during a short hold of a modtap
 | 
			
		||||
// #define PERMISSIVE_HOLD
 | 
			
		||||
 | 
			
		||||
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
 | 
			
		||||
 | 
			
		||||
#define FORCE_NKRO
 | 
			
		||||
| 
						 | 
				
			
			@ -1,199 +0,0 @@
 | 
			
		|||
// Copyright 2021 Christian Eiden, cykedev
 | 
			
		||||
//
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
#define CM_SPAL  LGUI_T(KC_SPC)
 | 
			
		||||
#define CM_SPAR  RGUI_T(KC_SPC)
 | 
			
		||||
 | 
			
		||||
#define SH_ENL  LSFT_T(KC_ENT)
 | 
			
		||||
#define SH_ENR  RSFT_T(KC_ENT)
 | 
			
		||||
 | 
			
		||||
#define RAISE   MO(_RAISE)
 | 
			
		||||
#define LOWER   MO(_LOWER)
 | 
			
		||||
 | 
			
		||||
#define QWERT   DF(_QWERTY)
 | 
			
		||||
#define COLEM   DF(_COLEMAK_DH)
 | 
			
		||||
 | 
			
		||||
enum layer_names {
 | 
			
		||||
  _COLEMAK_DH,
 | 
			
		||||
  _QWERTY,
 | 
			
		||||
  _RAISE,
 | 
			
		||||
  _LOWER,
 | 
			
		||||
  _ADJUST
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [_COLEMAK_DH] = LAYOUT_split_4x6_5(
 | 
			
		||||
  /* COLEMAK_DH
 | 
			
		||||
   * .-----------------------------------------.                                  .-----------------------------------------.
 | 
			
		||||
   * | Esc  |   1  |   2  |   3  |   4  |   5  |                                  |   6  |   7  |   8  |   9  |   0  |  Bsp |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * | Tab  |   Q  |   W  |   F  |   P  |   B  |                                  |   J  |   L  |   U  |   Y  |   ;  |  \   |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * | Del  |   A  |   R  |   S  |   T  |   G  |                                  |   M  |   N  |   E  |   I  |   O  |  '   |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * | Shft |   Z  |   X  |   C  |   D  |   V  |                                  |   K  |   H  |   ,  |   .  |   /  | Shft |
 | 
			
		||||
   * '-----------------------------------------/                                  \-----------------------------------------'
 | 
			
		||||
   *                                  / RAISE /---------------.    .---------------\ LOWER \
 | 
			
		||||
   *                                 /       /  Cmd  / Shift /      \ Shift \  Cmd  \       \
 | 
			
		||||
   *                                '-------/ Space / Enter /        \ Enter \ Space \-------'
 | 
			
		||||
   *                                       /---------------/          \---------------\
 | 
			
		||||
   *                                      /  Alt  / Ctrl  /            \  Ctrl \  Alt  \
 | 
			
		||||
   *                                     /       /       /              \       \       \
 | 
			
		||||
   *                                    '---------------'                '---------------'
 | 
			
		||||
   */
 | 
			
		||||
   KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,                                     KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_BSPC,
 | 
			
		||||
   KC_TAB , KC_Q   , KC_W   , KC_F   , KC_P   , KC_B   ,                                     KC_J   , KC_L   , KC_U   , KC_Y   , KC_SCLN, KC_BSLS,
 | 
			
		||||
   KC_DEL , KC_A   , KC_R   , KC_S   , KC_T   , KC_G   ,                                     KC_M   , KC_N   , KC_E   , KC_I   , KC_O   , KC_QUOT,
 | 
			
		||||
   KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_D   , KC_V   ,                                     KC_K   , KC_H   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
 | 
			
		||||
                                                RAISE  , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, LOWER  ,
 | 
			
		||||
                                                         KC_LALT, KC_LCTL, KC_RCTL, KC_RALT
 | 
			
		||||
   ),
 | 
			
		||||
  [_QWERTY] = LAYOUT_split_4x6_5(
 | 
			
		||||
  /* QWERTY
 | 
			
		||||
   * .-----------------------------------------.                                  .-----------------------------------------.
 | 
			
		||||
   * | Esc  |   1  |   2  |   3  |   4  |   5  |                                  |   6  |   7  |   8  |   9  |   0  |  Bsp |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * | Tab  |   Q  |   W  |   E  |   R  |   T  |                                  |   Y  |   U  |   I  |   O  |   P  |  \   |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * | Del  |   A  |   S  |   D  |   F  |   G  |                                  |   H  |   J  |   K  |   L  |   ;  |  '   |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * | Shft |   Z  |   X  |   C  |   V  |   B  |                                  |   N  |   M  |   ,  |   .  |   /  | Shft |
 | 
			
		||||
   * '-----------------------------------------/                                  \-----------------------------------------'
 | 
			
		||||
   *                                  / RAISE /---------------.    .---------------\ LOWER \
 | 
			
		||||
   *                                 /       /  Cmd  / Shift /      \ Shift \  Cmd  \       \
 | 
			
		||||
   *                                '-------/ Space / Enter /        \ Enter \ Space \-------'
 | 
			
		||||
   *                                       /---------------/          \---------------\
 | 
			
		||||
   *                                      /  Alt  / Ctrl  /            \  Ctrl \  Alt  \
 | 
			
		||||
   *                                     /       /       /              \       \       \
 | 
			
		||||
   *                                    '---------------'                '---------------'
 | 
			
		||||
   */
 | 
			
		||||
   KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,                                     KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_BSPC,
 | 
			
		||||
   KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   ,                                     KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_BSLS,
 | 
			
		||||
   KC_DEL , KC_A   , KC_S   , KC_D   , KC_F   , KC_G   ,                                     KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT,
 | 
			
		||||
   KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   ,                                     KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_LSFT,
 | 
			
		||||
                                                RAISE  , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, LOWER  ,
 | 
			
		||||
                                                         KC_LALT, KC_LCTL, KC_RCTL, KC_RALT
 | 
			
		||||
   ),
 | 
			
		||||
   [_RAISE] = LAYOUT_split_4x6_5(
 | 
			
		||||
  /* RAISE
 | 
			
		||||
   * .-----------------------------------------.                                  .-----------------------------------------.
 | 
			
		||||
   * |      |  F1  |  F2  |  F3  |  F4  |  F5  |                                  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |   [  |   ]  |      |                                  |   $  |   /  |  *   |  #   |   ~  |  F12 |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |  Ins |  !   |  @   |   (  |   )  |      |                                  |   %  |   -  |  +   |  =   |  ?   |      |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |   {  |   }  |      |                                  |   ^  |   &  |  |   |      |      |      |
 | 
			
		||||
   * '-----------------------------------------/                                  \-----------------------------------------'
 | 
			
		||||
   *                                  /       /---------------.    .---------------\       \
 | 
			
		||||
   *                                 /       /       /       /      \       \       \       \
 | 
			
		||||
   *                                '-------/       /       /        \       \       \-------'
 | 
			
		||||
   *                                       /---------------/          \---------------\
 | 
			
		||||
   *                                      /       /       /            \       \       \
 | 
			
		||||
   *                                     /       /       /              \       \       \
 | 
			
		||||
   *                                    '---------------'                '---------------'
 | 
			
		||||
   */
 | 
			
		||||
   XXXXXXX, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  ,                                     KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 ,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, XXXXXXX,                                     KC_DLR , KC_SLSH, KC_ASTR, KC_HASH, KC_TILD, KC_F12 ,
 | 
			
		||||
   KC_INS , KC_EXLM, KC_AT  , KC_LPRN, KC_RPRN, XXXXXXX,                                     KC_PERC, KC_MINS, KC_PPLS, KC_PEQL, KC_QUES, XXXXXXX,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX,                                     KC_CIRC, KC_AMPR, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
                                                _______, _______, _______, _______, _______, _______,
 | 
			
		||||
                                                         _______, _______, _______, _______
 | 
			
		||||
   ),
 | 
			
		||||
  [_LOWER] = LAYOUT_split_4x6_5(
 | 
			
		||||
  /* LOWER
 | 
			
		||||
   * .-----------------------------------------.                                  .-----------------------------------------.
 | 
			
		||||
   * |      |  F1  |  F2  |  F3  |  F4  |  F5  |                                  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |   [  |   ]  |  +   |                                  |      |      |  up  |      |      |  F12 |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |  Ins |  !   |  @   |   (  |   )  |  -   |                                  |      | left | down | rght |  ?   |      |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |   {  |   }  |  =   |                                  |      |      |      |      |      |      |
 | 
			
		||||
   * '-----------------------------------------/                                  \-----------------------------------------'
 | 
			
		||||
   *                                  /       /---------------.    .---------------\       \
 | 
			
		||||
   *                                 /       /       /       /      \       \       \       \
 | 
			
		||||
   *                                '-------/       /       /        \       \       \-------'
 | 
			
		||||
   *                                       /---------------/          \---------------\
 | 
			
		||||
   *                                      /       /       /            \       \       \
 | 
			
		||||
   *                                     /       /       /              \       \       \
 | 
			
		||||
   *                                    '---------------'                '---------------'
 | 
			
		||||
   */
 | 
			
		||||
   XXXXXXX, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  ,                                     KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 ,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_PPLS,                                     XXXXXXX, XXXXXXX, KC_UP  , XXXXXXX, XXXXXXX, KC_F12 ,
 | 
			
		||||
   KC_INS , KC_EXLM, KC_AT  , KC_LPRN, KC_RPRN, KC_MINS,                                     XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUES, XXXXXXX,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PEQL,                                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
                                                _______, _______, _______, _______, _______, _______,
 | 
			
		||||
                                                         _______, _______, _______, _______
 | 
			
		||||
   ),
 | 
			
		||||
  [_ADJUST] = LAYOUT_split_4x6_5(
 | 
			
		||||
  /* ADJUST
 | 
			
		||||
   * .-----------------------------------------.                                  .-----------------------------------------.
 | 
			
		||||
   * |      |      |      |      |      | QWERT|                                  |COLEM |      |      |      |      |      |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |      |      |  V+  |                                  |  B + |      |      |      |      |      |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |      |      |  V-  |                                  |  B - |  <<  | play |  >>  |      |      |
 | 
			
		||||
   * |------+------+------+------+------+------|                                  |------+------+------+------+------+------|
 | 
			
		||||
   * |      |      |      |      |      | Mute |                                  |      |      |      |      |      |      |
 | 
			
		||||
   * '-----------------------------------------/                                  \-----------------------------------------'
 | 
			
		||||
   *                                  /       /---------------.    .---------------\       \
 | 
			
		||||
   *                                 /       /       /       /      \       \       \       \
 | 
			
		||||
   *                                '-------/       /       /        \       \       \-------'
 | 
			
		||||
   *                                       /---------------/          \---------------\
 | 
			
		||||
   *                                      /       /       /            \       \       \
 | 
			
		||||
   *                                     /       /       /              \       \       \
 | 
			
		||||
   *                                    '---------------'                '---------------'
 | 
			
		||||
   */
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERT  ,                                     COLEM  , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,                                     KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,                                     KC_BRID, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX,
 | 
			
		||||
   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE,                                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
                                                XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
                                                         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
 | 
			
		||||
   )
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  if (keycode == CM_SPAR) {
 | 
			
		||||
    return false;
 | 
			
		||||
  } else if (QK_MOD_TAP <= keycode && keycode <= QK_MOD_TAP_MAX) {
 | 
			
		||||
    return true; 
 | 
			
		||||
  } else {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Flexible macOS-friendly Grave Escape
 | 
			
		||||
// https://docs.qmk.fm/#/feature_key_overrides?id=flexible-macos-friendly-grave-escape
 | 
			
		||||
 | 
			
		||||
const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRAVE));
 | 
			
		||||
const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRAVE);
 | 
			
		||||
const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DELETE);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const key_override_t **key_overrides = (const key_override_t *[]){
 | 
			
		||||
    &tilde_esc_override,
 | 
			
		||||
    &grave_esc_override,
 | 
			
		||||
    &delete_key_override,
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +0,0 @@
 | 
			
		|||
MOUSEKEY_ENABLE     = no      # Mouse keys
 | 
			
		||||
NKRO_ENABLE         = yes     # USB Nkey Rollover
 | 
			
		||||
RGB_MATRIX_ENABLE   = no      # Enable keyboard RGB matrix
 | 
			
		||||
KEY_OVERRIDE_ENABLE = yes     # Enable Key Overrides, see https://docs.qmk.fm/#/feature_key_overrides
 | 
			
		||||
| 
						 | 
				
			
			@ -1,90 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2021 Joschua Gandert
 | 
			
		||||
 *
 | 
			
		||||
 * 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 "keymap_german.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum layer_names {
 | 
			
		||||
    _BASE,
 | 
			
		||||
    _GAME, /* WASD shifted right once  */
 | 
			
		||||
    _LOWER,
 | 
			
		||||
    _RAISE,
 | 
			
		||||
    _ADJUST /* when both LOWER and RAISE pressed */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define RAISE MO(_RAISE)
 | 
			
		||||
#define LOWER MO(_LOWER)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [_BASE] = LAYOUT_split_4x6_5(
 | 
			
		||||
    KC_ESC , KC_1  ,  KC_2  ,  KC_3  , KC_4  , KC_5  ,              KC_6  , KC_7  , KC_8   , KC_9  , KC_0   , DE_SS  ,
 | 
			
		||||
    KC_TAB , KC_Q  ,  KC_W  ,  KC_E  , KC_R  , KC_T  ,              DE_Z  , KC_U  , KC_I   , KC_O  , KC_P   , DE_UDIA,
 | 
			
		||||
    KC_LSFT, KC_A  ,  KC_S  ,  KC_D  , KC_F  , KC_G  ,              KC_H  , KC_J  , KC_K   , KC_L  , DE_ODIA, DE_ADIA,
 | 
			
		||||
    KC_LCTL, DE_Y  ,  KC_X  ,  KC_C  , KC_V  , KC_B  ,              KC_N  , KC_M  , KC_COMM, KC_DOT, DE_MINS, DE_PLUS,
 | 
			
		||||
 | 
			
		||||
                                  RAISE,  KC_SPC,   KC_LCTL,    KC_RALT,  KC_BSPC,  LOWER,
 | 
			
		||||
                                          KC_ENT,   KC_LALT,    KC_LGUI,  KC_RSFT
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_GAME] = LAYOUT_split_4x6_5(
 | 
			
		||||
    _______, _______, _______, _______, _______, _______,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    KC_T   , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   ,           _______, _______, KC_UP,   _______, _______, _______,
 | 
			
		||||
    KC_G   , KC_LSFT, KC_A   , KC_S   , KC_D   , KC_F   ,           _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
 | 
			
		||||
    KC_B   , KC_LCTL, DE_Y   , KC_X   , KC_C   , KC_V   ,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
                                  _______, _______, _______,    _______, _______, _______,
 | 
			
		||||
                                           _______, _______,    _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_LOWER] = LAYOUT_split_4x6_5(
 | 
			
		||||
    KC_TILD, KC_EXLM, KC_AT  , KC_HASH, KC_DLR , KC_PERC,           KC_CIRC, KC_AMPR, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL     ,
 | 
			
		||||
    _______, DE_HASH, DE_CIRC, KC_PGUP, DE_LABK, _______,           _______, KC_P7  , KC_P8  , KC_P9  , KC_PPLS, KC_BSPC    ,
 | 
			
		||||
    _______, DE_ACUT, KC_HOME, KC_PGDN, KC_END , KC_LPRN,           KC_RPRN, KC_P4  , KC_P5  , KC_P6  , KC_PDOT, _______    ,
 | 
			
		||||
    _______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______,           KC_P0  , KC_P1  , KC_P2  , KC_P3  , KC_PENT, KC_KP_EQUAL,
 | 
			
		||||
 | 
			
		||||
                                  _______, KC_RGHT, _______,    _______, _______, _______,
 | 
			
		||||
                                           KC_LEFT, _______,    QK_BOOT, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_RAISE] = LAYOUT_split_4x6_5(
 | 
			
		||||
    KC_F12 , KC_F1  ,  KC_F2 ,   KC_F3 ,  KC_F4 ,  KC_F5 ,          KC_F6  , KC_F7   , KC_F8   ,  KC_F9  , KC_F10    , KC_F11 ,
 | 
			
		||||
    _______, _______, _______,  KC_UP  , _______, _______,          KC_LALT, KC_INS  , KC_NUM  ,  KC_CALC, KC_PSCR   , KC_MUTE,
 | 
			
		||||
    _______, _______, KC_LEFT,  KC_DOWN, KC_RGHT, KC_ENT ,          KC_MSEL, KC_MPRV , KC_MPLY ,  KC_MNXT, _______   , KC_VOLU,
 | 
			
		||||
    _______, _______, _______,  _______, _______, _______,          DE_HASH, KC_MYCM , _______ ,  _______, KC_SCRL   , KC_VOLD,
 | 
			
		||||
 | 
			
		||||
                                  _______, _______, _______,    _______, KC_UP  , _______,
 | 
			
		||||
                                           _______, _______,    _______, KC_DOWN
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_ADJUST] = LAYOUT_split_4x6_5(
 | 
			
		||||
    _______, _______, _______, _______, _______, _______,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, QK_BOOT, _______,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, DF(_GAME),         _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, DF(_BASE),         _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
                                   _______, _______, _______,    _______, _______, _______,
 | 
			
		||||
                                            _______, _______,    _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||

 | 
			
		||||
 | 
			
		||||
Despite being less accurate, the columns in the image are shifted up and down to avoid the [Hermann grid illusion](https://en.wikipedia.org/wiki/Grid_illusion).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# German Gaming Layout
 | 
			
		||||
 | 
			
		||||
This layout was build with gaming in mind for a german user. As a result I added a "game" layer that shifts the keys of the left side (below the number row) one to the right, so that <kbd>WASD</kbd> is on the <kbd>ESDF</kbd> keys. The reason this layer was added is that using <kbd>WASD</kbd> is less comfortable with a contoured Dactyl-style keyboard, where each column is adjusted for the respective fingers. <kbd>ESDF</kbd> also has the upside of allowing one to stay in the home row. Note that the rightmost column of the default layer, so <kbd>TGB</kbd>, ends up in the leftmost position.
 | 
			
		||||
 | 
			
		||||
Of course, one could just be forced to reconfigure every game, but that wouldn't be very user-friendly and likely reduce satisfaction with the layout. When in game mode, the right side of keys also features arrow keys on <kbd>IJKL</kbd>.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Raise and Lower layer
 | 
			
		||||
 | 
			
		||||
Additionally, via the RAISE layer, it's always possible to access the arrow keys, which are often used in game menues. On the exact same position one can access <kbd>Home</kbd>, <kbd>End</kbd>, <kbd>Page Down</kbd> and <kbd>Page Up</kbd> via the LOWER layer. The left side of the LOWER layer also contains the few characters that would usually have their own key in a traditional german keyboard.
 | 
			
		||||
 | 
			
		||||
The right side features various media keys in the RAISE layer, and a numpad in the LOWER layer.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Firmware
 | 
			
		||||
 | 
			
		||||
The keyboard can be put into Reset mode (for flashing a keymap) by pressing <kbd>**LOWER**</kbd> + <kbd>Super</kbd> (also known as Windows key), or by pressing <kbd>**LOWER**</kbd> + <kbd>**RAISE**</kbd> + <kbd>R</kbd>.
 | 
			
		||||
 | 
			
		||||
`MOUSEKEY_ENABLE` was set to `no` for this keymap, since it wasn't used and the size of the firmware ended up being too large.
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
MOUSEKEY_ENABLE = no
 | 
			
		||||
| 
						 | 
				
			
			@ -1,90 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2021 Joschua Gandert
 | 
			
		||||
 *
 | 
			
		||||
 * 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 "keymap_german.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum layer_names {
 | 
			
		||||
    _BASE,
 | 
			
		||||
    _GAME, /* WASD shifted right once  */
 | 
			
		||||
    _LOWER,
 | 
			
		||||
    _RAISE,
 | 
			
		||||
    _ADJUST /* when both LOWER and RAISE pressed */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define RAISE MO(_RAISE)
 | 
			
		||||
#define LOWER MO(_LOWER)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [_BASE] = LAYOUT_split_4x6_5(
 | 
			
		||||
    KC_ESC , KC_1  ,  KC_2  ,  KC_3  , KC_4  , KC_5  ,              KC_6  , KC_7  , KC_8   , KC_9  , KC_0   , DE_SS  ,
 | 
			
		||||
    KC_TAB , KC_Q  ,  KC_W  ,  KC_E  , KC_R  , KC_T  ,              DE_Z  , KC_U  , KC_I   , KC_O  , KC_P   , DE_UDIA,
 | 
			
		||||
    KC_LSFT, KC_A  ,  KC_S  ,  KC_D  , KC_F  , KC_G  ,              KC_H  , KC_J  , KC_K   , KC_L  , DE_ODIA, DE_ADIA,
 | 
			
		||||
    KC_LCTL, DE_Y  ,  KC_X  ,  KC_C  , KC_V  , KC_B  ,              KC_N  , KC_M  , KC_COMM, KC_DOT, DE_MINS, DE_PLUS,
 | 
			
		||||
 | 
			
		||||
                                  RAISE,  KC_SPC,   KC_LCTL,    KC_RALT,  KC_BSPC,  LOWER,
 | 
			
		||||
                                          KC_ENT,   KC_LALT,    KC_LGUI,  KC_RSFT
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_GAME] = LAYOUT_split_4x6_5(
 | 
			
		||||
    _______, _______, _______, _______, _______, _______,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    KC_T   , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   ,           _______, _______, KC_UP,   _______, _______, _______,
 | 
			
		||||
    KC_G   , KC_LSFT, KC_A   , KC_S   , KC_D   , KC_F   ,           _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
 | 
			
		||||
    KC_B   , KC_LCTL, DE_Y   , KC_X   , KC_C   , KC_V   ,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
                                  _______, _______, _______,    _______, _______, _______,
 | 
			
		||||
                                           _______, _______,    _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_LOWER] = LAYOUT_split_4x6_5(
 | 
			
		||||
    KC_TILD, KC_EXLM, KC_AT  , KC_HASH, KC_DLR , KC_PERC,           KC_CIRC, KC_AMPR, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL     ,
 | 
			
		||||
    _______, DE_HASH, DE_CIRC, KC_PGUP, DE_LABK, _______,           _______, KC_P7  , KC_P8  , KC_P9  , KC_PPLS, KC_BSPC    ,
 | 
			
		||||
    _______, DE_ACUT, KC_HOME, KC_PGDN, KC_END , KC_LPRN,           KC_RPRN, KC_P4  , KC_P5  , KC_P6  , KC_PDOT, _______    ,
 | 
			
		||||
    _______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______,           KC_P0  , KC_P1  , KC_P2  , KC_P3  , KC_PENT, KC_KP_EQUAL,
 | 
			
		||||
 | 
			
		||||
                                  _______, KC_RGHT, _______,    _______, _______, _______,
 | 
			
		||||
                                           KC_LEFT, _______,    QK_BOOT, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_RAISE] = LAYOUT_split_4x6_5(
 | 
			
		||||
    KC_F12 , KC_F1  ,  KC_F2 ,   KC_F3 ,  KC_F4 ,  KC_F5 ,          KC_F6  , KC_F7   , KC_F8   ,  KC_F9  , KC_F10    , KC_F11 ,
 | 
			
		||||
    _______, _______, _______,  KC_UP  , _______, _______,          KC_LALT, KC_INS  , KC_NUM  ,  KC_CALC, KC_PSCR   , KC_MUTE,
 | 
			
		||||
    _______, _______, KC_LEFT,  KC_DOWN, KC_RGHT, KC_ENT ,          KC_MSEL, KC_MPRV , KC_MPLY ,  KC_MNXT, _______   , KC_VOLU,
 | 
			
		||||
    _______, _______, _______,  _______, _______, _______,          DE_HASH, KC_MYCM , _______ ,  _______, KC_SCRL   , KC_VOLD,
 | 
			
		||||
 | 
			
		||||
                                  _______, _______, _______,    _______, KC_UP  , _______,
 | 
			
		||||
                                           _______, _______,    _______, KC_DOWN
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_ADJUST] = LAYOUT_split_4x6_5(
 | 
			
		||||
    _______, _______, _______, _______, _______, _______,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, QK_BOOT, _______,           _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, DF(_GAME),         _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, DF(_BASE),         _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
                                   _______, _______, _______,    _______, _______, _______,
 | 
			
		||||
                                            _______, _______,    _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||

 | 
			
		||||
 | 
			
		||||
Despite being less accurate, the columns in the image are shifted up and down to avoid the [Hermann grid illusion](https://en.wikipedia.org/wiki/Grid_illusion).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# German Gaming Layout
 | 
			
		||||
 | 
			
		||||
This layout was build with gaming in mind for a german user. As a result I added a "game" layer that shifts the keys of the left side (below the number row) one to the right, so that <kbd>WASD</kbd> is on the <kbd>ESDF</kbd> keys. The reason this layer was added is that using <kbd>WASD</kbd> is less comfortable with a contoured Dactyl-style keyboard, where each column is adjusted for the respective fingers. <kbd>ESDF</kbd> also has the upside of allowing one to stay in the home row. Note that the rightmost column of the default layer, so <kbd>TGB</kbd>, ends up in the leftmost position.
 | 
			
		||||
 | 
			
		||||
Of course, one could just be forced to reconfigure every game, but that wouldn't be very user-friendly and likely reduce satisfaction with the layout. When in game mode, the right side of keys also features arrow keys on <kbd>IJKL</kbd>.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Raise and Lower layer
 | 
			
		||||
 | 
			
		||||
Additionally, via the RAISE layer, it's always possible to access the arrow keys, which are often used in game menues. On the exact same position one can access <kbd>Home</kbd>, <kbd>End</kbd>, <kbd>Page Down</kbd> and <kbd>Page Up</kbd> via the LOWER layer. The left side of the LOWER layer also contains the few characters that would usually have their own key in a traditional german keyboard.
 | 
			
		||||
 | 
			
		||||
The right side features various media keys in the RAISE layer, and a numpad in the LOWER layer.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Firmware
 | 
			
		||||
 | 
			
		||||
The keyboard can be put into Reset mode (for flashing a keymap) by pressing <kbd>**LOWER**</kbd> + <kbd>Super</kbd> (also known as Windows key), or by pressing <kbd>**LOWER**</kbd> + <kbd>**RAISE**</kbd> + <kbd>R</kbd>.
 | 
			
		||||
 | 
			
		||||
`MOUSEKEY_ENABLE` was set to `no` for this keymap, since it wasn't used and the size of the firmware ended up being too large.
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
MOUSEKEY_ENABLE = no
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue