// Copyright 2022 Ulrich Spörlein (@uqs)
// SPDX-License-Identifier: GPL-2.0-or-later
// vi:et sw=4:
#pragma once

#include QMK_KEYBOARD_H

enum layers {
    L_QWER = 0,
    L_WASD,  // wasd gaming
    L_COLM,  // Colemak DHm
    L_EXTD,
    L_NUM,
    L_FUNC,
    L_MOUSE,
    L_LAST, // unused
};

#ifdef VIA_ENABLE
_Static_assert(DYNAMIC_KEYMAP_LAYER_COUNT >= L_LAST, "VIA enabled, but not enough DYNAMIC_KEYMAP_LAYER_COUNT for all layers");
#endif

#define KC_CTAB LCTL(KC_TAB)
#define KC_SCTAB LCTL(LSFT(KC_TAB))

// Custom single-key codes, see uqs.c for the combos.
enum custom_keycodes {
    SHIFT_INS = SAFE_RANGE,
    ALT_SHIFT_INS,
    INS_HARD,
    KC_A_AE,
    KC_O_OE,
    KC_U_UE,
    MINS_UNDSCR,  // obsoleted by combos, remove this!
    TM_NEXT,
    TM_PREV,
    VIM_NEXT,
    VIM_PREV,
    WIN_LEFT,
    WIN_RGHT,
    WIN_UP,
    WIN_DN,
    LT_EXTD_ESC,
    LT_NUM_BSPC,
    LT_MOUSE_ALT_SHIFT_INS,
    LT_FUNC_SHIFT_INS,
    OSM_GUI,
    OSM_SFT,
    OSM_CTL,
    OSM_ALT,
    ALT_TAB,
};

#ifndef LEADER_ENABLE
#define KC_LEAD KC_NO
#endif

// Shorter names
#define MS_WHDN KC_MS_WH_DOWN
#define MS_WHUP KC_MS_WH_UP
#define MS_WHLEFT KC_MS_WH_LEFT
#define MS_WHRGHT KC_MS_WH_RIGHT

// GASC/◆⎇⇧⎈ home row mod, read all about it here:
// https://precondition.github.io/home-row-mods
// Left-hand home row mods
#define KC_G_A LGUI_T(KC_A)
#define KC_A_R LALT_T(KC_R)
#define KC_S_S LSFT_T(KC_S)
#define KC_C_T LCTL_T(KC_T)

// Right-hand home row mods
#define KC_C_N RCTL_T(KC_N)
#define KC_S_E RSFT_T(KC_E)
#define KC_A_I LALT_T(KC_I)  // RALT is special, it's AltGr and my compose key under Win (layout UScmpse) and *nix (setxkbmap -option compose:ralt)
#define KC_G_O RGUI_T(KC_O)

