summaryrefslogtreecommitdiff
path: root/geeboard_firmware/qmk/keymaps/bone/keymap.c
blob: 3268b59a6c36a61ee0939814880b9b736b675e1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

#include QMK_KEYBOARD_H

#undef UNICODE_SELECTED_MODES
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WIN, UC_WINC

extern keymap_config_t keymap_config;

#define _QWERTY 1

#define _BONE 0
#define _BONE_SHIFT 2
#define _BONE_SYM 3
#define _BONE_NAV 4
#define _BONE_GREEK 5
#define _BONE_MATH 6

#define _ADJUST 7

#define KC_BKSL KC_BSLASH

#define KC_ADEN LT(_ADJUST, KC_END)
#define KC_ADPU LT(_ADJUST, KC_PGUP)

enum my_keycodes {
  KC_BNCP = SAFE_RANGE,
  KC_BNM4,
  KC_EN_UC_WIN
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
    case KC_RSFT:
        layer_invert(_BONE_SHIFT);
        update_tri_layer(_BONE_SYM, _BONE_SHIFT, _BONE_GREEK);
        return true;
    case KC_BNCP:
        layer_invert(_BONE_SYM);
        update_tri_layer(_BONE_SYM, _BONE_SHIFT, _BONE_GREEK);
        update_tri_layer(_BONE_NAV, _BONE_SYM, _BONE_MATH);
        return false;
    case KC_BNM4:
        layer_invert(_BONE_NAV);
        update_tri_layer(_BONE_NAV, _BONE_SYM, _BONE_MATH);
        return false;
    case KC_EN_UC_WIN:
        if(record->event.pressed)
            SEND_STRING("reg add \"HKCU\\Control Panel\\Input Method\" -v EnableHexNumpad -t REG_SZ -d 1");
        return false;
    default:
         return true;
  }
}

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [_QWERTY] = LAYOUT(
    KC_TAB ,KC_Q   ,KC_W   ,KC_E   ,KC_R  ,KC_T   ,KC_Y   ,KC_U   ,KC_I   ,KC_O   ,KC_P   ,KC_LBRC,
    KC_CAPS,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,
    KC_LCTL,KC_HYPR,KC_LGUI,KC_LALT,KC_ESC/*,XXXXX,XXXXX*/,KC_RALT,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT
  ),
  [_ADJUST] = LAYOUT(
    XXXXXXX,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14   ,KC_F15 ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,XXXXXXX,
    XXXXXXX,UC_LINX,UC_MAC ,UC_WIN ,UC_WINC  ,XXXXXXX,UC_WIN ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
    XXXXXXX,UC_NEXT,UC_PREV,XXXXXXX,XXXXXXX  ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
    XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX/*,XXXXX  ,XXXXX*/,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
  ),
  [_BONE] = LAYOUT(
    KC_TAB ,KC_J   ,KC_D   ,KC_U    ,KC_A    ,KC_X    ,KC_P   ,KC_H   ,KC_L   ,KC_M   ,KC_W,UC(L'ß'),
    KC_BNCP,KC_C   ,KC_T   ,KC_I    ,KC_E    ,KC_O    ,KC_B   ,KC_N   ,KC_R   ,KC_S   ,KC_G,KC_Q    ,
    KC_RSFT,KC_F   ,KC_V   ,UC(L'ü'),UC(L'ä'),UC(L'ö'),KC_Y   ,KC_Z   ,KC_COMM,KC_DOT ,KC_K,KC_RSFT ,
    KC_LCTL,KC_HYPR,KC_LGUI,KC_LALT ,KC_ESC /*,XXXXX  ,XXXXX*/ ,KC_BNM4 ,KC_LEFT,KC_DOWN,KC_UP  ,KC_RGHT
  ),
  [_BONE_SHIFT] = LAYOUT(
    _______,_______,_______,_______ ,_______ ,_______ ,_______,_______,_______,_______,_______,UC(L'ẞ'),
    _______,_______,_______,_______ ,_______ ,_______ ,_______,_______,_______,_______,_______,_______ ,
    _______,_______,_______,UC(L'Ü'),UC(L'Ä'),UC(L'Ö'),_______,_______,_______,_______,_______,_______ ,
    _______,_______,_______,_______ ,_______ /*,XXXXX ,XXXXX*/,_______,_______,_______,_______,_______

  ),
  [_BONE_SYM] = LAYOUT(
    _______,XXXXXXX,KC_UNDS,KC_LBRC,KC_RBRC,KC_CIRC,KC_EXLM,KC_LT  ,KC_GT  ,KC_EQL ,KC_AMPR,XXXXXXX,
    _______,KC_BSLS,KC_SLSH,KC_LCBR,KC_RCBR,KC_ASTR,KC_QUES,KC_LPRN,KC_RPRN,KC_MINS,KC_COLN,KC_AT  ,
    KC_RSFT,KC_HASH,KC_DLR ,KC_PIPE,KC_TILD,KC_GRV ,KC_PLUS,KC_PERC,KC_DQUO,KC_QUOT,KC_SCLN,XXXXXXX,
    _______,_______,_______,_______,_______/*,XXXXX,XXXXX*/,_______,_______,_______,_______,_______
  ),
  [_BONE_NAV] = LAYOUT(
    _______,KC_PGUP,KC_BSPC,KC_UP  ,KC_DEL ,KC_PGDN,XXXXXXX,KC_P7  ,KC_P8  ,KC_P9  ,KC_PPLS,KC_PMNS,
    _______,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_END ,XXXXXXX,KC_P4  ,KC_P5  ,KC_P6  ,KC_PDOT,KC_COMM,
    _______,KC_ESC ,KC_TAB ,KC_INS ,KC_ENT ,KC_UNDO,KC_COLN,KC_P1  ,KC_P2  ,KC_P3  ,KC_SCLN,_______,
    _______,_______,_______,_______,_______/*,XXXXX,XXXXX*/,_______,_______,_______,_______,_______
  ),
  [_BONE_GREEK] = LAYOUT(
    _______,UC(L'θ'),UC(L'δ'),UC(L'λ'),UC(L'α'),UC(L'ξ'),UC(L'π'),UC(L'ψ'),UC(L'λ'),UC(L'μ'),UC(L'ω'),UC(L'ς'),
    _______,UC(L'χ'),UC(L'τ'),UC(L'ι'),UC(L'ε'),UC(L'ο'),UC(L'β'),UC(L'ν'),UC(L'ρ'),UC(L'σ'),UC(L'γ'),UC(L'ϕ'),
    _______,UC(L'φ'),UC(L'ϵ'),UC(L'η'),XXXXXXX ,XXXXXXX ,UC(L'υ'),UC(L'ζ'),UC(L'ϱ'),UC(L'ϑ'),UC(L'κ'),_______ ,
    _______,_______ ,_______ ,_______ ,_______ /*,XXXXX ,XXXXX*/ ,_______ ,_______ ,_______ ,_______ ,_______
  ),
   [_BONE_MATH] = LAYOUT(
    _______,UC(L'Θ'),UC(L'Δ'),UC(L'⊂'),UC(L'∀'),UC(L'Ξ'),UC(L'Π'),UC(L'Ψ'),UC(L'Λ'),UC(L'⇔'),UC(L'Ω'),UC(L'∘'),
    _______,UC(L'ℂ'),UC(L'∂'),UC(L'∫'),UC(L'∃'),UC(L'∈'),UC(L'⇐'),UC(L'ℕ'),UC(L'ℝ'),UC(L'Σ'),UC(L'Γ'),UC(L'ℚ'),
    _______,UC(L'Φ'),UC(L'√'),UC(L'∪'),XXXXXXX ,XXXXXXX ,UC(L'∇'),UC(L'ℤ'),UC(L'⇒'),UC(L'↦'),UC(L'×'),_______ ,
    _______,_______ ,_______ ,_______ ,_______ /*,XXXXX ,XXXXX*/ ,_______ ,_______ ,_______ ,_______ ,_______
  )
};

/* vim: set et ts=2: */