qmk-keychron-q3-colemak-dh/users/mnil/mnil.h

86 lines
2.8 KiB
C

/* Copyright 2021 Mats Nilsson
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include QMK_KEYBOARD_H
#include "keymap_swedish.h"
// Layers
enum layers {
_COLEMAK,
_QWERTY,
_SYMBOLS,
_NAVIGATION,
_NUMPAD,
};
// Custom Keycodes
#define _NAV_SPC LT(_NAVIGATION, KC_SPC) // _NAVIGATION when held, SPACE when tapped
#define _SYM_ENT LT(_SYMBOLS, KC_ENT) // _SYMBOLS when held, ENTER when tapped
#define CTL_BSPC MT(MOD_LCTL, KC_BSPC) // CTRL when held, BACKSPACE when tapped
#define ALT_DEL MT(MOD_LALT, KC_DEL) // ALT when held, DELETE when tapped
#define SFT_TAB MT(MOD_LSFT, KC_TAB) // SHIFT when held, TAB when tapped
#define C_TAB C(KC_TAB) // CTRL+TAB
#define CS_TAB C(S(KC_TAB)) // SHIFT+CTRL+TAB
#define CUT C(KC_X) // CTRL+X
#define COPY C(KC_INS) // CTRL+INSERT
#define PASTE S(KC_INS) // SHIFT+INSERT
#define AUTOFILL C(S(KC_L)) // Bitwarden Autofill, CTRL+SHIFT+L
// i3 config
#define I3MOD KC_LGUI // $mod
#define OPEN G(KC_SPC) // $mod+SPACE
#define QUIT G(S(KC_Q)) // $mod+SHIFT+Q
#define WIN G(C(KC_SPC)) // $mod+CTRL+SPACE
#define BROWSER G(KC_ENTER) // $mod+ENTER
#define TERM G(S(KC_ENTER)) // $mod+CTRL+ENTER
#define NXTWS G(KC_TAB) // $mod+TAB
#define PRVWS G(S(KC_TAB)) // $mod+SHIFT+TAB
#define MOVWS G(KC_LSFT) // $mod+SHIFT+$X
#define CRYWS G(KC_LALT) // $mod+ALT+$X
#define MVWSL G(C(S(KC_LEFT))) // $mod+CTRL+SHIFT+LEFT
#define MVWSR G(C(S(KC_RGHT))) // $mod+CTRL+SHIFT+RIGHT
enum custom_keycodes {
M_TILD = SAFE_RANGE, // ~
M_CIRC, // ^
M_BTCK, // `
QWE_COL, // Swaps default layer
};
// Tap Dance
typedef struct {
bool is_press_action;
int state;
} tap;
// Define a type for as many tap dance states as you need
enum {
SINGLE_TAP = 1,
SINGLE_HOLD = 2,
DOUBLE_TAP = 3,
DOUBLE_HOLD = 4,
DOUBLE_SINGLE_TAP = 5, // send two single taps
TRIPLE_TAP = 6,
TRIPLE_HOLD = 7
};
enum {
AAE = 0, // a and ae
OAA, // o and aa
};