]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus62/keymaps/194h/keymap.c
Keymap: Added 194h atreus62 keymap (#4164)
[qmk_firmware.git] / keyboards / atreus62 / keymaps / 194h / keymap.c
1 #include QMK_KEYBOARD_H
2
3 //The current Nordic and Norwegian layout files are a mess. I'll do it myself:
4 //Norwegian
5 #define  NO_AE    KC_QUOT     //  Æ
6 #define  NO_AO    KC_LBRC     //  Å
7 #define  NO_BSLS  KC_EQL      //  Backslash
8 #define  NO_LT    KC_NUBS     //  <
9 #define  NO_MINS  KC_SLSH     //  -
10 #define  NO_OE    KC_SCLN     //  Ø
11 #define  NO_PIPE  KC_GRV      //  |
12 #define  NO_PLUS  KC_MINS     //  +
13 #define  NO_QUOT  KC_NUHS     //  '
14 #define  NO_UMLA  KC_RBRC     //  ¨
15 //Norwegian - Modifier dependant definitions
16 #define  NO_EXLM  LSFT(KC_1)        //  !
17 #define  NO_DQT   LSFT(KC_2)        //  "
18 #define  NO_AT    RALT(KC_2)        //  @
19 #define  NO_HASH  LSFT(KC_3)        //  #
20 #define  NO_EUR   LSFT(KC_4)        //  €
21 #define  NO_DLR   RALT(KC_4)        //  $
22 #define  NO_PERC  LSFT(KC_5)        //  %
23 #define  NO_AND   LSFT(KC_6)        //  &
24 #define  NO_SLSH  LSFT(KC_7)        //  /
25 #define  NO_PO    LSFT(KC_8)        //  (
26 #define  NO_PC    LSFT(KC_9)        //  )
27 #define  NO_EQL   LSFT(KC_0)        //  =
28 #define  NO_LCBR  RALT(KC_7)        //  {
29 #define  NO_LBRC  RALT(KC_8)        //  [
30 #define  NO_RBRC  RALT(KC_9)        //  ]
31 #define  NO_RCBR  RALT(KC_0)        //  }
32 #define  NO_COLN  LSFT(KC_DOT)      //  :
33 #define  NO_SCLN  LSFT(KC_COMM)     //  ;
34 #define  NO_MU    RALT(KC_M)        //  µ
35 #define  NO_EURO  RALT(KC_E)        //  €
36 #define  NO_SECT  LSFT(KC_GRV)      //  §
37 #define  NO_GERC  RALT(KC_COMM)     //  ¸
38 #define  NO_QUAR  LSFT(RALT(KC_4))  //  ¼
39 //Norwegian layout - dependant on previous definitions
40 #define  NO_UNDS  LSFT(NO_MINS)  //  _
41 #define  NO_QUES  LSFT(NO_PLUS)  //  ?
42 #define  NO_GRAV  LSFT(NO_BSLS)  //  `
43 #define  NO_GT    LSFT(NO_LT)    //  >
44 #define  NO_HALF  RALT(NO_LT)    //  ½
45 #define  NO_HAT   LSFT(NO_UMLA)  //  ^
46 #define  NO_ASTR  LSFT(NO_QUOT)  //  *
47 #define  NO_TILD  RALT(NO_UMLA)  //  ~
48
49 //One Shot Modifier
50 #define OSM_LCTL OSM(MOD_LCTL)
51 #define OSM_LALT OSM(MOD_LALT)
52 #define OSM_LSFT OSM(MOD_LSFT)
53 #define OSM_LGUI OSM(MOD_LGUI)
54 #define OSM_RCTL OSM(MOD_RCTL)
55 #define OSM_RALT OSM(MOD_RALT)
56 #define OSM_RSFT OSM(MOD_RSFT)
57 #define OSM_RGUI OSM(MOD_RGUI)
58
59 //Layers
60 #define L1 0
61 #define L2 1
62 #define L3 2
63 #define L4 3
64 #define L5 4
65
66 // Momentary switch to layer - One Shot Layer
67 #define OSL_L3 OSL(L3)
68 #define OSL_L4 OSL(L4)
69
70 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
71
72   [L1] = LAYOUT(
73         KC_LGUI,       KC_1,         KC_2,         KC_3,         KC_4,         KC_5,                                     KC_6,         KC_7,         KC_8,         KC_9,         KC_0,         KC_RGUI,
74         KC_TAB,        KC_Q,         KC_W,         KC_E,         KC_R,         KC_T,                                     KC_Y,         KC_U,         KC_I,         KC_O,         KC_P,         NO_DQT,
75         KC_BSPC,       KC_A,         KC_S,         KC_D,         KC_F,         KC_G,                                     KC_H,         KC_J,         KC_K,         KC_L,         NO_SCLN,      NO_QUOT,
76         OSM_LSFT,      KC_Z,         KC_X,         KC_C,         KC_V,         KC_B,                                     KC_N,         KC_M,         KC_COMM,      KC_DOT,       NO_MINS,      OSM_RSFT,
77         CTL_T(KC_ESC), MO(L5),       KC_LEAD,      OSM_LALT,     MO(L4),       OSL_L3,       KC_SPC,       KC_ENT,       OSL_L3,       MO(L4),       OSM_RALT,     NO_EQL,       NO_PLUS,      KC_RCTL
78   ),
79   [L2] = LAYOUT(
80         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      _______,      _______,
81         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      _______,      NO_AO,
82         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      NO_OE,        NO_AE,
83         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      _______,      _______,
84         _______,       _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______       
85   ),
86   [L3] = LAYOUT(
87         NO_LBRC,       XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      NO_RBRC,
88         NO_LCBR,       XXXXXXX,      XXXXXXX,      NO_AT,        XXXXXXX,      NO_TILD,                                  NO_QUES,      NO_EXLM,      NO_PIPE,      XXXXXXX,      XXXXXXX,      NO_RCBR,
89         _______,       NO_ASTR,      NO_BSLS,      NO_DLR,       NO_HASH,      XXXXXXX,                                  NO_HAT,       XXXXXXX,      NO_COLN,      NO_SLSH,      NO_SCLN,      NO_QUOT,
90         NO_PO,         KC_0,         NO_SECT,      NO_PERC,      XXXXXXX,      NO_GRAV,                                  NO_AND,       NO_UMLA,      NO_LT,        NO_GT,        NO_UNDS,      NO_PC,
91         XXXXXXX,       _______,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      _______,      _______,      XXXXXXX
92   ),
93   [L4] = LAYOUT(
94         KC_ESC,        KC_F1,        KC_F2,        KC_F3,        KC_F4,        KC_F5,                                    XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
95         XXXXXXX,       KC_F6,        KC_F7,        KC_F8,        KC_F9,        KC_F10,                                   KC_HOME,      KC_PGDN,      KC_PGUP,      KC_END,       XXXXXXX,      XXXXXXX,
96         _______,       KC_F11,       KC_F12,       KC_F13,       KC_F14,       KC_F15,                                   KC_LEFT,      KC_DOWN,      KC_UP,        KC_RIGHT,     XXXXXXX,      KC_DEL,
97         XXXXXXX,       KC_F16,       KC_F17,       KC_F18,       KC_F19,       KC_F20,                                   XXXXXXX,      KC_APP,       XXXXXXX,      XXXXXXX,      KC_VOLD,      XXXXXXX,
98         OSM_LCTL,      _______,      XXXXXXX,      _______,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      KC_MUTE,      KC_VOLU,      OSM_RCTL
99   ),
100   [L5] = LAYOUT(
101         XXXXXXX,       TO(L1),       TO(L2),       TO(L3),       TO(L4),       XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
102         XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,      RESET,        XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      NO_AO,  
103         XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      NO_OE,        NO_AE,  
104         XXXXXXX,       XXXXXXX,      XXXXXXX,      KC_CAPS,      XXXXXXX,      XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
105         XXXXXXX,       _______,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX
106   )
107 };
108
109
110 // Unicode Linux
111 void matrix_init_user(void) {
112   set_unicode_input_mode(UC_LNX);
113 };
114
115
116 #define TAP_ONCE(code)  \
117   register_code (code); \
118   unregister_code (code)
119
120
121 LEADER_EXTERNS();
122
123 // Runs constantly in the background, in a loop. Only supports basic keycodes.
124 void matrix_scan_user(void) {
125   LEADER_DICTIONARY() {
126     leading = false;
127     leader_end();
128
129     //probably useless in practice, but cool
130     SEQ_ONE_KEY (KC_P) {
131       tap_random_base64();
132       tap_random_base64();
133       tap_random_base64();
134       tap_random_base64();
135       tap_random_base64();
136       tap_random_base64();
137       tap_random_base64();
138       tap_random_base64();
139     }
140
141     SEQ_ONE_KEY (KC_G) {
142       SEND_STRING("grep something !");
143       register_code(KC_RALT);
144       TAP_ONCE(KC_4);
145       unregister_code(KC_RALT);
146     }
147     SEQ_ONE_KEY (KC_T) {
148       SEND_STRING("tail "); 
149       TAP_ONCE(KC_SLSH);
150       SEND_STRING("f !");
151       register_code(KC_RALT);
152       TAP_ONCE(KC_4);
153       unregister_code(KC_RALT);
154     }
155     SEQ_ONE_KEY (KC_S) {
156       SEND_STRING("sudo !!");
157       TAP_ONCE(KC_ENT);
158     }
159   }
160 }