]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/planck/keymaps/bone2planck/keymap.c
Merge pull request #535 from algernon/ergodox-ez/algernon
[qmk_firmware.git] / keyboards / planck / keymaps / bone2planck / keymap.c
1 
2 #include "planck.h"
3 #ifdef BACKLIGHT_ENABLE
4 #include "backlight.h"
5 #endif
6 #include "..\..\..\..\quantum\keymap_extras\keymap_german.h"
7 #include "..\..\..\..\quantum\keymap_common.h"
8 #include "..\..\..\..\tmk_core\common\keycode.h"
9 #define _______ = KC_TRNS;
10
11 /* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
12 It has "üäöß" as it is optimized for a mix of German & English.
13 My favourite features are the placement of the special characters often used for programming right on the home row
14 and the number & navigation block combo, so you never have to move your hands from their home position.
15
16 Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
17 */
18
19 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 /* Bone2
22 * ,-----------------------------------------------------------------------------------.
23 * | Q    |   J  |   D  |   U  |   A  |   X  |   P  |   H  |   L  |   M  |   W  |  ẞ   |
24 * |------+------+------+------+------+-------------+------+------+------+------+------|
25 * |M1/Tab|   C  |   T  |   I  |   E  |   O  |   B  |   N  |   R  |   S  |   G  |M1/Ent|  //hold for M1, tap for Tab/Enter
26 * |------+------+------+------+------+------|------+------+------+------+------+------|
27 * | Shift|   F  |   V  |   Ü  |   Ä  |   Ö  |   Y  |   Z  |   ,  |   .  |   K  |Shift |
28 * |------+------+------+------+------+------+------+------+------+------+------+------|
29 * | GUI  | Ctrl | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  |      | Ctrl | Esc  |
30 * `-----------------------------------------------------------------------------------'
31 */
32 [0] = {
33         { DE_Q,         DE_J,    DE_D,    DE_U,  DE_A,  DE_X,   DE_P,   DE_H,  DE_L,    DE_M,   DE_W,    DE_SS        },
34         { LT(1,KC_TAB), DE_C,    DE_T,    DE_I,  DE_E,  DE_O,   DE_B,   DE_N,  DE_R,    DE_S,   DE_G,    LT(1,KC_ENT) },
35         { KC_LSFT,      DE_F,    DE_V,    DE_UE, DE_AE, DE_OE,  DE_Y,   DE_Z,  DE_COMM, DE_DOT, DE_K,    KC_LSFT      },
36         { KC_LGUI,      KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4),   KC_NO,  KC_RCTL, KC_ESC       }
37 },
38
39 /* M1 Special Characters
40 very ergonomic placement for coding
41 * ,-----------------------------------------------------------------------------------.
42 * | °    |   @  |   _  |   [  |   ]  |   ^  |   !  |   <  |   >  |   =  |   &  |  ´   |
43 * |------+------+------+------+------+-------------+------+------+------+------+------|
44 * |M1/Tab|   \  |   /  |   {  |   }  |   *  |   ?  |   (  |   )  |   -  |   :  |M1/Ent|  //hold for M1, tap for Tab/Enter
45 * |------+------+------+------+------+------|------+------+------+------+------+------|
46 * | Shift|   #  |   $  |   |  |   ~  |   €  |   +  |   %  |   "  |   '  |   ;  |Shift |
47 * |------+------+------+------+------+------+------+------+------+------+------+------|
48 * | GUI  | Ctrl | Alt  |  M4  |  M2  |    Space    |  M2  |  M4  |      | Ctrl | Esc  |
49 * `-----------------------------------------------------------------------------------'
50 */
51 [1] = {
52         { DE_RING, DE_AT,   DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, DE_ACUT },
53         { _______, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, _______ },
54         { _______, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, _______ },
55         { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
56 },
57
58 /* Navigation & Number Blocks
59 very easy to get used to & intuituve placement
60 * ,-----------------------------------------------------------------------------------.
61 * |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |   7  |   8  |   9  |      |      |
62 * |------+------+------+------+------+-------------+------+------+------+------+------|
63 * |  Tab | Home |  Lft | Down | Right| End  |   .  |   4  |   5  |   6  |   ,  | Enter|
64 * |------+------+------+------+------+------|------+------+------+------+------+------|
65 * | Shift|      |  Tab | Ins  | Enter|      |   0  |   1  |   2  |   3  |   ;  |Shift |
66 * |------+------+------+------+------+------+------+------+------+------+------+------|
67 * | GUI  | Ctrl | Alt  |  M3  |  M2  |    Space    |  M2  |  M3  |      | Ctrl | Esc  |
68 * `-----------------------------------------------------------------------------------'
69 */
70 [2] = {
71         { KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO,   DE_7,    DE_8,  DE_9,    KC_NO,   KC_NO   },
72         { KC_TAB,  KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  DE_DOT,  DE_4,    DE_5,  DE_6,    DE_COMM, KC_ENT  },
73         { _______, KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   DE_0,    DE_1,    DE_2,  DE_3,    DE_SCLN, _______ },
74         { _______, _______, _______, MO(3),   _______, _______, _______, _______, MO(3), _______, _______, _______ }
75 },
76
77 /* Flipped Navigation & Number Blocks for one handed use
78 accessed by sliding from M2 to M3 with thumb
79 * ,-----------------------------------------------------------------------------------.
80 * |      |      |  7   |  8   |  9   |      | PgUp | Bksp |  Up  |  DEL | PgDn |      |
81 * |------+------+------+------+------+-------------+------+------+------+------+------|
82 * |  Tab |  .   |  4   |  5   |  6   |   ,  | Home | Left | Down | Right| End  | Enter|
83 * |------+------+------+------+------+------|------+------+------+------+------+------|
84 * | Shift|  0   |  1   |  2   |  3   |   ;  |      | Tab  |  Ins | Enter|      |Shift |
85 * |------+------+------+------+------+------+------+------+------+------+------+------|
86 * | GUI  | Ctrl | Alt  |  M3  |      |    Space    |      |  M3  |      | Ctrl | Esc  |
87 * `-----------------------------------------------------------------------------------'
88 */
89
90 [3] = {
91         { KC_NO,   KC_NO,   DE_7,    DE_8     DE_9,  KC_NO,   KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_NO   },
92         { _______, DE_DOT,  DE_4,    DE_5,    DE_6,  DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,  _______ },
93         { _______, DE_0,    DE_1,    DE_2,    DE_3,  DE_SCLN, KC_NO,   KC_TAB,  KC_INS,  KC_ENT,  KC_NO,   _______ },
94         { _______, _______, _______, _______, KC_NO, _______, _______, KC_NO,   _______, _______, _______, _______ }
95 },
96
97
98 /* Function & Media Keys
99 slide from m4 to m5 to access flipped version
100 * ,-----------------------------------------------------------------------------------.
101 * |      |      | Print|Scroll|Pause |      |      |  F7  |  F8  |  F9  |  F12 |      |
102 * |------+------+------+------+------+-------------+------+------+------+------+------|
103 * |      |      | Mute | Vol- | Vol+ |      |   ³  |  F4  |  F5  |  F6  |  F11 |      |
104 * |------+------+------+------+------+------|------+------+------+------+------+------|
105 * | Shift|      | Prev | Play | Next |      |   ²  |  F1  |  F2  |  F3  |  F10 |Shift |
106 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | GUI  | Ctrl | Alt  |  M4  |  M5  |    Space    |  M5  |  M4  |      | Ctrl | Esc  |
108 * `-----------------------------------------------------------------------------------'
109 */
110 [4] = {
111         { KC_NO,   KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO,   KC_F7, KC_F8,   KC_F9,   KC_F12,  KC_NO   },
112         { KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   DE_SQ3,  KC_F4, KC_F5,   KC_F6,   KC_F11,  KC_NO   },
113         { _______, KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   DE_SQ2,  KC_F1, KC_F2,   KC_F3,   KC_F10,  _______ },
114         { _______, _______, _______, _______, MO(5),   _______, _______, MO(5), _______, _______, _______, _______ }
115 }
116
117
118 /* flipped Function & Media Keys
119 * ,-----------------------------------------------------------------------------------.
120 * |      |      |  F7  |  F8  |  F9  |      |      | Print|Scroll| Pause|      |      |
121 * |------+------+------+------+------+-------------+------+------+------+------+------|
122 * |      |  ³   |  F4  |  F5  |  F6  |      |      | Mute | Vol- | Vol+ |      |      |
123 * |------+------+------+------+------+------|------+------+------+------+------+------|
124 * | Shift|  ²   |  F1  |  F2  |  F3  |      |      | Prev | Play | Next |      |Shift |
125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | GUI  | Ctrl | Alt  |      |  M5  |    Space    |  M5  |      |      | Ctrl | Esc  |
127 * `-----------------------------------------------------------------------------------'
128 */
129 [5] = {
130         { KC_NO,   KC_NO,   KC_F7,   KC_F8, KC_F9,   KC_NO,   KC_NO,   KC_PSCR, KC_SLCK, KC_PAUS, KC_NO,   KC_NO   },
131         { KC_NO,   KC_SQ3,  KC_F4,   KC_F5, KC_F6,   KC_NO,   KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   KC_NO   },
132         { _______, KC_SQ2,  KC_F1,   KC_F2, KC_F3,   KC_NO,   KC_NO,   KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,   _______ },
133         { _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO,   _______, _______, _______ }
134 }
135 };
136
137 const uint16_t PROGMEM fn_actions[] = {
138
139 };
140
141 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
142 {
143         // MACRODOWN only works in this function
144         switch (id) {
145         case 0:
146                 if (record->event.pressed) {
147                         register_code(KC_RSFT);
148 #ifdef BACKLIGHT_ENABLE
149                         backlight_step();
150 #endif
151                 }
152                 else {
153                         unregister_code(KC_RSFT);
154                 }
155                 break;
156         }
157         return MACRO_NONE;
158 };