added new layout and Olivierko keymap for dz60 (#6996)
authorOlivierko <olivier@alldiksson.se>
Thu, 10 Oct 2019 21:52:16 +0000 (23:52 +0200)
committerfauxpark <fauxpark@gmail.com>
Thu, 10 Oct 2019 21:52:16 +0000 (08:52 +1100)
* - added new layout for dz60
- created personal keymap using new layout

* - changes based on pr feedback from @noroadsleft

* - further readme formatting

* Apply suggestions from code review

applied changes based on review feedback

Co-Authored-By: fauxpark <fauxpark@gmail.com>
* - readme formatting

* Apply suggestions from code review

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
keyboards/dz60/dz60.h
keyboards/dz60/info.json
keyboards/dz60/keymaps/olivierko/keymap.c [new file with mode: 0644]
keyboards/dz60/keymaps/olivierko/readme.md [new file with mode: 0644]

index 7a5096c..29e57f8 100644 (file)
     { k40,  k41,   KC_NO, k43,  k44,  KC_NO, k46,  KC_NO, k48,  KC_NO, k4a,  k4b,   k4c,  k4d,  k4e   }  \
 }
 
+/* LAYOUT_60_olivierko
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10   │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e   │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20    │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d      │
+ * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───────┤
+ * │30     │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d     │
+ * ├─────┬─┴─┬─┴───┼───┴───┴───┴───┴───┴───┴───┼───┼───┼───┬───┤
+ * │40   │41 │43   │46 (7u)                    │4b │4c │4d │4e │
+ * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
+*/
+#define LAYOUT_olivierko( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+       k10,      k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
+       k20,      k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d,      \
+    k30,      k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,      \
+       k40, k41,      k43,           k46,                     k4b, k4c, k4d, k4e  \
+) { \
+    { k00,  k01,   k02,   k03,  k04,   k05,   k06,  k07,   k08,   k09,   k0a,   k0b,  k0c,   k0d,   k0e   }, \
+    { k10,  KC_NO, k12,   k13,  k14,   k15,   k16,  k17,   k18,   k19,   k1a,   k1b,  k1c,   k1d,   k1e   }, \
+    { k20,  KC_NO, k22,   k23,  k24,   k25,   k26,  k27,   k28,   k29,   k2a,   k2b,  k2c,   k2d,   KC_NO }, \
+    { k30,  KC_NO, k32,   k33,  k34,   k35,   k36,  k37,   k38,   k39,   k3a,   k3b,  k3c,   k3d,   KC_NO }, \
+       { k40,  k41,   KC_NO, k43,  KC_NO, KC_NO, k46,  KC_NO, KC_NO, KC_NO, KC_NO, k4b,  k4c,   k4d,   k4e   }  \
+}
 #endif
index c06b507..b0df937 100644 (file)
     "LAYOUT_60_2_function": {
         "key_count": 63,
         "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Control", "x":11.5, "y":4, "w":1.5}, {"label":"GUI", "x":13, "y":4}, {"label":"Fn2", "x":14, "y":4}]
-      },
+       },
     "LAYOUT_60_iso_5x1u_split_bs_rshift_spc": {
       "key_count": 67,
       "layout": [{"label":"Esc/¬", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"£", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Del", "x":13, "y":0, "w":1}, {"label":"Backspace", "x":14, "y":0, "w":1}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"VolUp", "x":14, "y":3, "w":1}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6.00, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"label":"Left", "x":10, "y":4, "w":1}, {"label":"Down", "x":11, "y":4, "w":1}, {"label":"Up", "x":12, "y":4, "w":1}, {"label":"Right", "x":13, "y":4, "w":1}, {"label":"VolDown", "x":14, "y":4, "w":1}]
+    },
+    "LAYOUT_olivierko": {
+      "key_count": 63,
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Fn", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"label":"↑", "x":12, "y":3}, {"label":"Shift", "x":13, "y":3, "w":2}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"←", "x":11, "y":4}, {"label":"↓", "x":12, "y":4}, {"label":"→", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
     }
   }
 }
diff --git a/keyboards/dz60/keymaps/olivierko/keymap.c b/keyboards/dz60/keymaps/olivierko/keymap.c
new file mode 100644 (file)
index 0000000..38d12d4
--- /dev/null
@@ -0,0 +1,87 @@
+#include QMK_KEYBOARD_H
+
+enum keyboard_layers {
+  _BL,
+  _SL,
+  _FL,
+  _CL,
+};
+
+enum custom_keycodes {
+  SWE_AA = SAFE_RANGE,
+  SWE_AE,
+  SWE_OE,
+};
+
+char *alt_codes[][2] = {
+    {
+        SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_2)SS_TAP(X_KP_2)SS_TAP(X_KP_9)), // Alt+0229 → å
+        SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_1)SS_TAP(X_KP_9)SS_TAP(X_KP_7)), // Alt+0197 → Å
+    },
+    {
+               SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_2)SS_TAP(X_KP_2)SS_TAP(X_KP_8)), // Alt+0228 → ä
+        SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_1)SS_TAP(X_KP_9)SS_TAP(X_KP_6)), // Alt+0196 → Ä
+    },
+    {
+        SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_2)SS_TAP(X_KP_4)SS_TAP(X_KP_6)), // Alt+0246 → ö
+        SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_2)SS_TAP(X_KP_1)SS_TAP(X_KP_4)), // Alt+0214 → Ö
+    },
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+       [_BL] = LAYOUT_olivierko(
+               KC_ESC,         KC_1,           KC_2,           KC_3,           KC_4,           KC_5,           KC_6,           KC_7,           KC_8,           KC_9,           KC_0,           KC_MINS,        KC_EQL,         KC_BSLS,                KC_GRV,
+               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_RBRC,        KC_BSPC,
+               MO(_FL),        KC_A,           KC_S,           KC_D,           KC_F,           KC_G,           KC_H,           KC_J,           KC_K,           KC_L,           KC_SCLN,        KC_QUOT,        KC_ENT,         
+               KC_LSFT,        KC_Z,           KC_X,           KC_C,           KC_V,           KC_B,           KC_N,           KC_M,           KC_COMM,        KC_DOT,         KC_SLSH,        KC_UP,          KC_RSFT,        
+               KC_LCTL,        KC_LGUI,        KC_LALT,                                                                                KC_SPC,                                                                                 KC_LEFT,        KC_DOWN,        KC_RIGHT,       KC_RCTL),
+                                                                       
+       [_SL] = LAYOUT_olivierko(
+               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,                KC_TRNS,
+               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        SWE_AA,         KC_NO,          KC_TRNS,
+               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        SWE_OE,         SWE_AE,         KC_TRNS,                
+               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        
+               KC_TRNS,        KC_TRNS,        KC_TRNS,                                                                                KC_TRNS,                                                                                KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS),                                                                       
+                                                                       
+       [_FL] = LAYOUT_olivierko(                                                               
+               KC_ESC,         KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_F11,         KC_F12,         KC_PSCR,                KC_PAUSE,
+               KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_DELETE,
+               KC_NO,          DF(_BL),        DF(_SL),        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_INS, 
+               KC_LSFT,        KC_NO,          KC_NO,          KC_CAPS,        KC_NO,          KC_NO,          KC_NO,          KC_MUTE,        KC_NO,          KC_NO,          KC_NO,          KC_PGUP,        KC_RSFT,        
+               KC_LCTL,        MO(_CL),        KC_LALT,                                                                                KC_MPLY,                                                                                KC_HOME,        KC_PGDOWN,      KC_END,         KC_RCTL),
+                                                                                       
+       [_CL] = LAYOUT_olivierko(                                                               
+               RGB_TOG,        RGB_MOD,        RGB_HUI,        RGB_HUD,        RGB_SAI,        RGB_SAD,        RGB_VAI,        RGB_VAD,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                  KC_NO,
+               KC_NO,          KC_NO,          KC_NO,          KC_NO,          RESET,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,
+               KC_NO,          KC_NO,          KC_NO,          DEBUG,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,  
+               KC_LSFT,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_RSFT,        
+               KC_NO,          KC_NO,          KC_NO,                                                                                  KC_NO,                                                                                  KC_NO,          KC_NO,          KC_NO,          KC_NO),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record)
+{
+    if (!record->event.pressed) 
+               return true;
+
+    switch (keycode) {
+               case SWE_AA: 
+               case SWE_AE: 
+               case SWE_OE: {
+                       uint16_t index = keycode - SWE_AA;
+                       uint8_t shift = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
+
+                       unregister_code(KC_LSFT);
+                       unregister_code(KC_RSFT);
+
+                       send_string(alt_codes[index][(bool)shift]);
+
+                       if (shift & MOD_BIT(KC_LSFT)) register_code(KC_LSFT);
+                       if (shift & MOD_BIT(KC_RSFT)) register_code(KC_RSFT);
+
+                       return false;
+               }
+               default:
+                       return true;
+    }
+}
\ No newline at end of file
diff --git a/keyboards/dz60/keymaps/olivierko/readme.md b/keyboards/dz60/keymaps/olivierko/readme.md
new file mode 100644 (file)
index 0000000..54ade6d
--- /dev/null
@@ -0,0 +1,21 @@
+# DZ60
+### _BL:
+Base layer with american ANSI layout.  
+
+![_BL](https://i.imgur.com/BPMn7dk.png)
+### _SL:
+Swedish layer with ÅÄÖ at original positions.  
+
+![_SL](https://i.imgur.com/I8QRh24.png)
+### _FL:
+Function layer including various extra keys.  
+
+![_FL](https://i.imgur.com/nCbCIrZ.png)
+### _CL:
+Control layer for managing RGB and flashing.  
+
+![_CL](https://i.imgur.com/QnoMgsb.png)
+### Make command:
+```sh
+make dz60:olivierko:flash
+```
\ No newline at end of file