]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus62/keymaps/194h/keymap.c
Fix process_combo which assign -1 to uint16_t (#3697)
[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_ACUT  RALT(NO_BSLS)  //  Acute
43 #define  NO_GRAV  LSFT(NO_BSLS)  //  `
44 #define  NO_GT    LSFT(NO_LT)    //  >
45 #define  NO_HALF  RALT(NO_LT)    //  ½
46 #define  NO_HAT   LSFT(NO_UMLA)  //  ^
47 #define  NO_ASTR  LSFT(NO_QUOT)  //  *
48 #define  NO_TILD  RALT(NO_UMLA)  //  ~
49
50 //One Shot Modifier
51 #define OSM_LCTL OSM(MOD_LCTL)
52 #define OSM_LALT OSM(MOD_LALT)
53 #define OSM_LSFT OSM(MOD_LSFT)
54 #define OSM_LGUI OSM(MOD_LGUI)
55 #define OSM_RCTL OSM(MOD_RCTL)
56 #define OSM_RALT OSM(MOD_RALT)
57 #define OSM_RSFT OSM(MOD_RSFT)
58 #define OSM_RGUI OSM(MOD_RGUI)
59
60 //CTRL on hold, ESC on tap
61 #define CTL_ESC CTL_T(KC_ESC)
62
63 //Layers
64 #define L1 0
65 #define L2 1
66 #define L3 2
67 #define L4 3
68 #define L5 4
69
70 // Momentary switch to layer 
71 #define MO_L2 MO(L2)
72 #define MO_L4 MO(L4)
73 #define MO_L5 MO(L5)
74 // Momentary switch to layer - One Shot Layer
75 #define OSL_L2 OSL(L2)
76 #define OSL_L3 OSL(L3)
77 #define OSL_L4 OSL(L4)
78
79 //Tap Dance Declarations
80 enum {
81   SCLN_OE = 0,
82   QUOT_AE,
83   DQT_AO
84 };
85
86 //Tap Dance Definitions
87 qk_tap_dance_action_t tap_dance_actions[] = {
88   //Tap once for semicolon, twice for ø
89   [SCLN_OE] = ACTION_TAP_DANCE_DOUBLE(NO_SCLN, NO_OE),
90   //Tap once for single quote, twice for æ
91   [QUOT_AE] = ACTION_TAP_DANCE_DOUBLE(NO_QUOT, NO_AE),
92   //Tap once for double quote, twice for å
93   [DQT_AO] = ACTION_TAP_DANCE_DOUBLE(NO_DQT, NO_AO),
94 // Other declarations would go here, separated by commas, if you have them
95 };
96
97 //Tap Dance keys
98 #define TD_SCLN_OE TD(SCLN_OE)
99 #define TD_QUOT_AE TD(QUOT_AE)
100 #define TD_DQT_AO TD(DQT_AO)
101
102 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
103
104   [L1] = LAYOUT(
105         KC_LGUI,       KC_1,         KC_2,         KC_3,         KC_4,         KC_5,                                     KC_6,         KC_7,         KC_8,         KC_9,         KC_0,         KC_RGUI,
106         KC_TAB,        KC_Q,         KC_W,         KC_E,         KC_R,         KC_T,                                     KC_Y,         KC_U,         KC_I,         KC_O,         KC_P,         TD_DQT_AO,
107         KC_BSPC,       KC_A,         KC_S,         KC_D,         KC_F,         KC_G,                                     KC_H,         KC_J,         KC_K,         KC_L,         TD_SCLN_OE,   TD_QUOT_AE,
108         OSM_LSFT,      KC_Z,         KC_X,         KC_C,         KC_V,         KC_B,                                     KC_N,         KC_M,         KC_COMM,      KC_DOT,       NO_MINS,      OSM_RSFT,
109         CTL_ESC,       MO_L5,        KC_TAB,       OSM_LALT,     MO_L4,        OSL_L3,       KC_SPC,       KC_ENT,       OSL_L3,       MO_L4,        OSM_LALT,     NO_EQL,       NO_PLUS,      KC_RCTL
110   ),
111   [L2] = LAYOUT(
112         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      _______,      _______,
113         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      _______,      NO_DQT,
114         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      NO_SCLN,      NO_QUOT,
115         _______,       _______,      _______,      _______,      _______,      _______,                                  _______,      _______,      _______,      _______,      _______,      _______,
116         _______,       _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______,      _______       
117   ),
118   [L3] = LAYOUT(
119         NO_LBRC,       XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      NO_RBRC,
120         NO_LCBR,       XXXXXXX,      XXXXXXX,      NO_AT,        XXXXXXX,      NO_TILD,                                  NO_QUES,      NO_EXLM,      NO_PIPE,      XXXXXXX,      XXXXXXX,      NO_RCBR,
121         _______,       NO_ASTR,      NO_BSLS,      NO_DLR,       NO_HASH,      XXXXXXX,                                  NO_HAT,       XXXXXXX,      NO_COLN,      NO_SLSH,      NO_SCLN,      NO_QUOT,
122         NO_PO,         KC_0,         NO_SECT,      NO_PERC,      XXXXXXX,      NO_GRAV,                                  NO_AND,       NO_UMLA,      NO_LT,        NO_GT,        NO_UNDS,      NO_PC,
123         XXXXXXX,       _______,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      _______,      _______,      XXXXXXX
124   ),
125   [L4] = LAYOUT(
126         KC_ESC,        KC_F1,        KC_F2,        KC_F3,        KC_F4,        KC_F5,                                    XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
127         XXXXXXX,       KC_F6,        KC_F7,        KC_F8,        KC_F9,        KC_F10,                                   KC_HOME,      KC_PGDN,      KC_PGUP,      KC_END,       XXXXXXX,      XXXXXXX,
128         _______,       KC_F11,       KC_F12,       KC_F13,       KC_F14,       KC_F15,                                   KC_LEFT,      KC_DOWN,      KC_UP,        KC_RIGHT,     XXXXXXX,      KC_DEL,
129         XXXXXXX,       KC_F16,       KC_F17,       KC_F18,       KC_F19,       KC_F20,                                   XXXXXXX,      KC_APP,       XXXXXXX,      XXXXXXX,      KC_VOLD,      XXXXXXX,
130         OSM_LCTL,      _______,      XXXXXXX,      _______,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      OSM_RALT,     KC_MUTE,      KC_VOLU,      OSM_RCTL
131   ),
132   [L5] = LAYOUT(
133         XXXXXXX,       TO(L1),       TO(L2),       TO(L3),       TO(L4),       XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
134         XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,      RESET,        XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
135         XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
136         XXXXXXX,       XXXXXXX,      XXXXXXX,      KC_CAPS,      XXXXXXX,      XXXXXXX,                                  XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
137         XXXXXXX,       _______,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX
138   )
139 };
140
141 //TODO: Is there productivity gain in the use of unicode?
142 //      - Won't work in xterm.
143 //      Create a layer for macros and/or unicode?
144 //      Are macros useful?
145 //      - Found no gain in having sendstring for commands.
146 //      - Find repeated tasks that cannot be done easily on the OS.
147 //      - Most other keymaps have macros for game/fun stuff, hard to find "serious" onces.
148 //      Screw Norwegian layout, switch to US with unicode æøå or US/English International?
149 //      - Will be different from laptop keyboard, requiring a switch on the OS side when only using the laptop.