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