浏览代码

Pull request 190 resolution with 'qmk/master' for merge

yoyoerx 9 年之前
父节点
当前提交
baeffd99da

文件差异内容过多而无法显示
+ 1113 - 1123
keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.hex


二进制
keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev.png


二进制
keyboard/ergodox_ez/keymaps/csharp_dev/csharp_dev_legend.png


+ 27 - 70
keyboard/ergodox_ez/keymaps/csharp_dev/keymap.c

@@ -3,8 +3,7 @@
 #include "action_layer.h"
 #include "action_layer.h"
 
 
 #define BASE 0 // default layer
 #define BASE 0 // default layer
-#define QWERTY 1 // qwerty keys
-#define FKEYS 2 // F keys + macros
+#define FKEYS 1 // F keys + macros
 
 
 #define MACRO_PUBLIC 10
 #define MACRO_PUBLIC 10
 #define MACRO_PRIVATE 11
 #define MACRO_PRIVATE 11
@@ -43,12 +42,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *   |Tab~CL|  <   |  >   |   |  |  &   |                                       |   =  |   +  |   -  |   *  |  L1  |
  *   |Tab~CL|  <   |  >   |   |  |  &   |                                       |   =  |   +  |   -  |   *  |  L1  |
  *   `----------------------------------'                                       `----------------------------------'
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
  *                                        ,-------------.       ,-------------.
- *                                        |. ~L1 | , ~L2|       |Home~L1| End~L2|
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      | Copy |       | UP   |        |      |
- *                                 | Enter| Space|------|       |------|  Space |Enter |
- *                                 | ~LSFT| ~WIN | Past |       | DOWN |   ~WIN | ~LSFT|
- *                                 `--------------------'       `----------------------'
+ *                                        |. ~L1 | ,    |       |Home  |End~L1|
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      | Copy |       | UP   |      |      |
+ *                                 | Enter| Space|------|       |------| Space|Enter |
+ *                                 | ~WIN | ~LSFT| Past |       | DOWN | ~LSFT| ~WIN |
+ *                                 `--------------------'       `--------------------'
  */
  */
 // If it accepts an argument (i.e, is a function), it doesn't need KC_.
 // If it accepts an argument (i.e, is a function), it doesn't need KC_.
 // Otherwise, it needs KC_*
 // Otherwise, it needs KC_*
@@ -59,110 +58,68 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         KC_LCBR,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
         KC_LCBR,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
         KC_RCBR,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_SLASH,
         KC_RCBR,        ALT_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   KC_SLASH,
         CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, 
         CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, 
-                                              LT(1,KC_DOT),  LT(2,KC_COMM),
+                                              LT(1,KC_DOT),  KC_COMM,
                                                               LCTL(KC_C),
                                                               LCTL(KC_C),
-                                               SFT_T(KC_ENTER),GUI_T(KC_SPACE),LCTL(KC_V),
+                                               GUI_T(KC_ENTER),SFT_T(KC_SPACE),LCTL(KC_V),
         // right hand
         // right hand
              LCTL(KC_S)  ,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,     KC_LBRACKET,
              LCTL(KC_S)  ,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,     KC_LBRACKET,
              KC_DELETE,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_RBRACKET,
              KC_DELETE,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_RBRACKET,
                           KC_H,   KC_J,   KC_K,   KC_L,   KC_UNDS,LCTL(KC_Y),
                           KC_H,   KC_J,   KC_K,   KC_L,   KC_UNDS,LCTL(KC_Y),
              KC_SCOLON,KC_N,   KC_M, KC_QUOTE  ,KC_EXLM , LSFT(KC_SLASH),   LCTL(KC_Z),
              KC_SCOLON,KC_N,   KC_M, KC_QUOTE  ,KC_EXLM , LSFT(KC_SLASH),   LCTL(KC_Z),
                                   KC_EQUAL,KC_PLUS  ,  KC_MINUS,KC_ASTR  ,     TG(1),
                                   KC_EQUAL,KC_PLUS  ,  KC_MINUS,KC_ASTR  ,     TG(1),
-             LT(2,KC_HOME),         LT(1,KC_END),
+             KC_HOME,         LT(1,KC_END),
              KC_UP,
              KC_UP,
-             KC_DOWN,GUI_T(KC_SPACE), SFT_T(KC_ENTER)
+             KC_DOWN,SFT_T(KC_SPACE), GUI_T(KC_ENTER)
     ),
     ),
-/* Keymap 1: QWERTY layer
- *
- * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |   `    |   1  |   2  |   3  |   4  |   5  |   -  |           |   =  |   6  |   7  |   8  |   9  |  0   |        |
- * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |   Tab  |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
- * |  Esc   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;   |   '    |
- * |--------+------+------+------+------+------|  Tab |           |  Esc |------+------+------+------+------+--------|
- * |  LSHFT |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /   |    \   |
- * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   | CTRL | WIN  |  ALT |ALT GR| Esc  |                                       | PgUp | PgDw | Ins  | PtSc |      |
- *   `----------------------------------'                                       `----------------------------------'
- *                                        ,-------------.       ,-------------.
- *                                        |      |  Cut |       |      |      |
- *                                 ,------|------|------|       |------+--------+------.
- *                                 |      |      |      |       |      |        |      |
- *                                 |      |      |------|       |------|   Left | Right|
- *                                 |      |      |      |       |      |        |      |
- *                                 `--------------------'       `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
-[QWERTY] = KEYMAP(  // layer 2 : QWERTY
-        // left hand
-        KC_GRAVE,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_MINUS,
-        KC_TAB,        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   KC_TRNS,
-        KC_ESCAPE,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSHIFT,        KC_Z,  KC_X,   KC_C,   KC_V,   KC_B,   KC_TAB,
-        KC_LCTRL, KC_LGUI,KC_LALT,  KC_RALT,    KC_ESCAPE,
-                                              KC_TRNS,  LCTL(KC_X),
-                                                              KC_TRNS,
-                                               KC_TRNS,KC_TRNS,KC_TRNS,
-        // right hand
-             KC_EQUAL  ,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0, KC_TRNS,
-             KC_TRNS,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,            KC_TRNS,
-                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCOLON,  KC_QUOTE,
-             KC_ESCAPE,KC_N,   KC_M,   KC_TRNS,KC_DOT , KC_SLASH,   KC_NONUS_BSLASH,
-                                  KC_PGUP  ,  KC_PGDOWN,KC_INSERT  ,KC_PSCREEN,          KC_TRNS,
-             KC_TRNS,        KC_TRNS,
-             KC_TRNS,
-             KC_TRNS,KC_LEFT, KC_RIGHT
-    ),
-/* Keymap 2:  F keys + macros
+
+/* Keymap 1:  F keys + macros
  *
  *
  * ,--------------------------------------------------.           ,--------------------------------------------------.
  * ,--------------------------------------------------.           ,--------------------------------------------------.
- * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           | Calc |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |  ESC   |  F1  |  F2  |  F3  |  F4  |  F5  |  `   |           | Calc |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- * |        |Public|Static|string|int   |return|      |           |      |//TODO|      |      |      |      |   F12  |
+ * |  Tab   |Public|Static|string|int   |return|      |           |      |//TODO|      |      |      |      |   F12  |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |        |Privat|Const |var   |float |null  |------|           |------|new   |      |      |      |      |        |
  * |        |Privat|Const |var   |float |null  |------|           |------|new   |      |      |      |      |        |
- * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |--------+------+------+------+------+------|  \   |           |  ~   |------+------+------+------+------+--------|
  * |        |      |      |void  |bool  |break;|      |           |      |();   |      |      |      |      |        |
  * |        |      |      |void  |bool  |break;|      |           |      |();   |      |      |      |      |        |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
- *   |      | Alt  |      |      |      |                                       |      |      |      |      |      |
+ *   |      |  WIN | Alt  |      |      |                                       | PgUp | PgDw | Ins  | PtSc |      |
  *   `----------------------------------'                                       `----------------------------------'
  *   `----------------------------------'                                       `----------------------------------'
  *                                        ,-------------.       ,-------------.
  *                                        ,-------------.       ,-------------.
  *                                        |      | Cut  |       |      |      |
  *                                        |      | Cut  |       |      |      |
  *                                 ,------|------|------|       |------+------+------.
  *                                 ,------|------|------|       |------+------+------.
  *                                 |      |      |      |       |      |      |      |
  *                                 |      |      |      |       |      |      |      |
- *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |------|       |------| Left | Right|
  *                                 |      |      |      |       |      |      |      |
  *                                 |      |      |      |       |      |      |      |
  *                                 `--------------------'       `--------------------'
  *                                 `--------------------'       `--------------------'
  */
  */
 // FKEYS + MACROS
 // FKEYS + MACROS
 [FKEYS] = KEYMAP(
 [FKEYS] = KEYMAP(
        // left hand
        // left hand
-       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,M(MACRO_PUBLIC),M(MACRO_STATIC),  M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS,
+       KC_ESCAPE,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_GRAVE,
+       KC_TAB,M(MACRO_PUBLIC),M(MACRO_STATIC),  M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS,
        KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL),
        KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL),
-       KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_TRNS,
-       KC_TRNS,KC_LALT,KC_TRNS,KC_TRNS,KC_TRNS,
-                                       KC_TRNS,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_BSLASH,
+       KC_TRNS,KC_LGUI,KC_LALT,KC_TRNS,KC_TRNS,
+                                       KC_TRNS,LCTL(KC_X),
                                                KC_TRNS,
                                                KC_TRNS,
                                KC_TRNS,KC_TRNS,KC_TRNS,
                                KC_TRNS,KC_TRNS,KC_TRNS,
        // right hand
        // right hand
        KC_CALCULATOR, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
        KC_CALCULATOR, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
        KC_TRNS, M(MACRO_TODO),   KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_F12,
        KC_TRNS, M(MACRO_TODO),   KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_F12,
                 M(MACRO_NEW), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
                 M(MACRO_NEW), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
-       KC_TRNS, M(MACRO_PARENTHESE), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
-                         KC_TRNS,KC_TRNS,  KC_TRNS,   KC_TRNS,  KC_TRNS,
+       KC_TILD, M(MACRO_PARENTHESE), KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS, KC_TRNS,
+                         KC_PGUP,KC_PGDOWN,  KC_INSERT,   KC_PSCREEN,  KC_TRNS,
        KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS,
        KC_TRNS,
        KC_TRNS,
-       KC_TRNS, KC_TRNS, KC_TRNS
+       KC_TRNS, KC_LEFT, KC_RIGHT
 ),
 ),
 
 
 
 
 };
 };
 
 
 const uint16_t PROGMEM fn_actions[] = {
 const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(QWERTY)                // FN1 - Momentary Layer 1
+    [1] = ACTION_LAYER_TAP_TOGGLE(FKEYS)                // FN1 - Momentary Layer 1
 };
 };
 
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)

+ 2 - 1
keyboard/ergodox_ez/keymaps/csharp_dev/readme.md

@@ -4,6 +4,8 @@
 
 
 * Feb 12, 2016 (V1): 
 * Feb 12, 2016 (V1): 
   * First version commit
   * First version commit
+* Mar 20, 2016 (V2):
+  * Removed "Classic QWERTY" layer, inverted GUI and SHIFT on Hold for Space and Enter
 
 
 ## About
 ## About
 This layout was conceived in an attempt to optimise keyboard layout for developers (C# more specifically, but it can work with most of other languages), and limit the keys required to perform the most frequent actions.
 This layout was conceived in an attempt to optimise keyboard layout for developers (C# more specifically, but it can work with most of other languages), and limit the keys required to perform the most frequent actions.
@@ -38,7 +40,6 @@ Still there are many way to improve or iterate on this:
 * Make it language agnostic
 * Make it language agnostic
 * Check and compile language's keyboard's heatmaps to statistically define keys priority (e.g.  https://dzone.com/articles/most-pressed-keys-various )
 * Check and compile language's keyboard's heatmaps to statistically define keys priority (e.g.  https://dzone.com/articles/most-pressed-keys-various )
 * QWERTY is still not the most efficient typing layout, I would like to create a Dvorak based similar layout in a near futur
 * QWERTY is still not the most efficient typing layout, I would like to create a Dvorak based similar layout in a near futur
-* Layout 1 is mainly here for safety, most of its unique keys could be transfered to Layout 2 and it could then be removed
 
 
 ## Issues 
 ## Issues 
 One of the issues encountered while creating this layout was that I did not find a way to have a key to send a modifier on hold, and a key combination while pressed (e.g. I can't set a Key to do Save (Ctrl + S) when pressed and Shift modifier when hold )
 One of the issues encountered while creating this layout was that I did not find a way to have a key to send a modifier on hold, and a key combination while pressed (e.g. I can't set a Key to do Save (Ctrl + S) when pressed and Shift modifier when hold )

+ 15 - 10
keyboard/ergodox_ez/keymaps/mpiechotka/keymap.c

@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
  * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
  * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * |--------+------+------+------+------+------|   =  |           |   -  |------+------+------+------+------+--------|
  * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
  * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
  *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
         KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
         KC_DELT,        KC_Q,     KC_W,   KC_F,   KC_P,          KC_G,   TG(SYMB),
         KC_DELT,        KC_Q,     KC_W,   KC_F,   KC_P,          KC_G,   TG(SYMB),
         KC_ESC,         KC_A,     KC_R,   KC_S,   KC_T,          KC_D,
         KC_ESC,         KC_A,     KC_R,   KC_S,   KC_T,          KC_D,
-        KC_LSFT,        KC_Z,     KC_X,   KC_C,   KC_V,          KC_B,   ALL_T(KC_NO),
+        KC_LSFT,        KC_Z,     KC_X,   KC_C,   KC_V,          KC_B,   KC_EQL,
         LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
         LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
                                                              KC_LALT,       F(LWIN),
                                                              KC_LALT,       F(LWIN),
                                                                             KC_HOME,
                                                                             KC_HOME,
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
              KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
              TG(SYMB),    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
              TG(SYMB),    KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,          KC_BSLS,
                           KC_H,   KC_N,   KC_E,   KC_I,   KC_O,             KC_QUOT,
                           KC_H,   KC_N,   KC_E,   KC_I,   KC_O,             KC_QUOT,
-             MEH_T(KC_NO),KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
+             KC_MINS,     KC_K,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT,
                                   KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
                                   KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
              KC_LALT,         KC_RALT,
              KC_LALT,         KC_RALT,
              KC_PGUP,
              KC_PGUP,
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
  * | Del    |   Q  |   W  |   F  |   P  |   G  |  L1  |           |  L1  |   J  |   L  |   U  |   Y  |   ;  |   \    |
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
  * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
  * | Esc    |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |  O   |   '    |
- * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * |--------+------+------+------+------+------|   =  |           |   -  |------+------+------+------+------+--------|
  * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
  * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |//Ctrl| RShift |
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
  *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
         KC_EQL,         KC_1,     KC_2,   KC_3,   KC_4,          KC_5,   KC_LEFT,
         KC_DELT,        CM_Q,     CM_W,   CM_F,   CM_P,          CM_G,   TG(SYMB),
         KC_DELT,        CM_Q,     CM_W,   CM_F,   CM_P,          CM_G,   TG(SYMB),
         KC_ESC,         CM_A,     CM_R,   CM_S,   CM_T,          CM_D,
         KC_ESC,         CM_A,     CM_R,   CM_S,   CM_T,          CM_D,
-        KC_LSFT,        CM_Z,     CM_X,   CM_C,   CM_V,          CM_B,   ALL_T(KC_NO),
+        KC_LSFT,        CM_Z,     CM_X,   CM_C,   CM_V,          CM_B,   KC_EQL,
         LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
         LT(SYMB,KC_GRV),KC_QUOT,  LALT(KC_LSFT),  KC_LEFT,       KC_RGHT,
                                                              KC_LALT,       F(LWIN),
                                                              KC_LALT,       F(LWIN),
                                                                             KC_HOME,
                                                                             KC_HOME,
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
              KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
              KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS,
              TG(SYMB),    CM_J,   CM_L,   CM_U,   CM_Y,   KC_P, /*CM_SCLN*/ KC_BSLS,
              TG(SYMB),    CM_J,   CM_L,   CM_U,   CM_Y,   KC_P, /*CM_SCLN*/ KC_BSLS,
                           CM_H,   CM_N,   CM_E,   CM_I,   CM_O,             KC_QUOT,
                           CM_H,   CM_N,   CM_E,   CM_I,   CM_O,             KC_QUOT,
-             MEH_T(KC_NO),CM_K,   CM_M,   CM_COMM,CM_DOT, CTL_T(CM_SLSH),   KC_RSFT,
+             KC_MINS,     CM_K,   CM_M,   CM_COMM,CM_DOT, CTL_T(CM_SLSH),   KC_RSFT,
                                   KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
                                   KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          LT(SYMB,KC_NO),
              KC_LALT,         KC_RALT,
              KC_LALT,         KC_RALT,
              KC_PGUP,
              KC_PGUP,
@@ -222,22 +222,27 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
         } else {
         } else {
              unregister_code(KC_LGUI);
              unregister_code(KC_LGUI);
         }
         }
+        break;
     case PC1:
     case PC1:
         if (!record->event.pressed) {
         if (!record->event.pressed) {
-             return MACRO(T(SLCK), T(SLCK), T(1), T(ENT), END);
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(1), W(50), T(ENT), END);
         }
         }
+        break;
     case PC2:
     case PC2:
         if (!record->event.pressed) {
         if (!record->event.pressed) {
-             return MACRO(T(SLCK), T(SLCK), T(2), T(ENT), END);
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(2), W(50), T(ENT), END);
         }
         }
+        break;
     case PC3:
     case PC3:
         if (!record->event.pressed) {
         if (!record->event.pressed) {
-             return MACRO(T(SLCK), T(SLCK), T(3), T(ENT), END);
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(3), W(50), T(ENT), END);
         }
         }
+        break;
     case PC4:
     case PC4:
         if (!record->event.pressed) {
         if (!record->event.pressed) {
-             return MACRO(T(SLCK), T(SLCK), T(4), T(ENT), END);
+             return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(4), W(50), T(ENT), END);
         }
         }
+        break;
     }
     }
     return MACRO_NONE;
     return MACRO_NONE;
 }
 }

文件差异内容过多而无法显示
+ 1137 - 1136
keyboard/ergodox_ez/keymaps/mpiechotka/mpiechotka.hex


+ 134 - 0
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c

@@ -0,0 +1,134 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [BASE] = KEYMAP(
+    KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_F14,
+    KC_TAB,        KC_Q,    KC_W,    KC_D,    KC_F,    KC_K,    TG(PLVR),
+    CTL_T(KC_ESC), KC_A,    KC_S,    KC_E,    KC_T,    KC_G,
+    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LBRC,
+    KC_F1,         KC_F2,   KC_F3,   KC_LALT, KC_LGUI,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLD, KC_MUTE,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_VOLU,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_BSPC, CTL_T(KC_ESC), KC_FN1,
+    //
+    /*-*/          KC_F15,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_EQL,
+    /*-*/          KC_BSLS, KC_J,    KC_U,    KC_R,    KC_L,    KC_SCLN,       KC_MINS,
+    /*-*/          /*-*/    KC_Y,    KC_N,    KC_I,    KC_O,    KC_H,          KC_ENT,
+    /*-*/          KC_RBRC, KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,       KC_RSFT,
+    /*-*/          /*-*/    /*-*/    KC_RGUI, KC_RALT, KC_F4,   KC_F5,         KC_F6,
+    KC_MPLY,       KC_MNXT,
+    KC_MPRV,
+    KC_FN3,        KC_QUOT, KC_SPC
+  ),
+  [SYMB] = KEYMAP(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_TRNS,       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,
+    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, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_TRNS,
+    /*-*/          /*-*/    KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,       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
+  ),
+  [PLVR] = KEYMAP(
+    KC_NO,         KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_TRNS,
+    KC_NO,         KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_TRNS,
+    KC_NO,         KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
+    KC_NO,         KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_NO,   KC_NO,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
+    /*-*/          /*-*/    /*-*/    /*-*/    KC_C,    KC_V,    KC_NO,
+    //
+    /*-*/          KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    /*-*/          KC_NO,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0,          KC_NO,
+    /*-*/          /*-*/    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,          KC_LBRC,
+    /*-*/          KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,       KC_QUOT,
+    /*-*/          /*-*/    /*-*/    KC_NO,   KC_NO,   KC_NO,   KC_NO,         KC_NO,
+    KC_TRNS,       KC_TRNS,
+    KC_TRNS,
+    KC_NO,         KC_N,    KC_M
+  ),
+  [ARRW] = KEYMAP(
+    KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS,
+    KC_TRNS,       KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, 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,
+    /*-*/          KC_TRNS, KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS, KC_TRNS,       KC_TRNS,
+    /*-*/          /*-*/    KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, 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
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+  [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+  [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+  switch(id) {
+    case 0:
+      if (record->event.pressed) {
+        register_code(KC_RSFT);
+      } else {
+        unregister_code(KC_RSFT);
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+  uint8_t layer = biton32(layer_state);
+  ergodox_board_led_off();
+  ergodox_right_led_1_off();
+  ergodox_right_led_2_off();
+  ergodox_right_led_3_off();
+  switch (layer) {
+    case SYMB:
+      ergodox_right_led_1_on();
+      break;
+    case PLVR:
+      ergodox_right_led_2_on();
+      break;
+    case ARRW:
+      ergodox_right_led_3_on();
+      break;
+    default:
+      break;
+  }
+};

+ 43 - 0
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md

@@ -0,0 +1,43 @@
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **SYMB** for numbers and symbols.
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **ARRW** for navigation.
+
+[![keyboard-layout](romanzolotarev-norman-plover-osx.png)](http://www.keyboard-layout-editor.com/#/gists/8ebcb701ecb763944417)
+
+## Switching
+
+- Tap `SYMB` to toggle **SYMB**.
+- Tap `ARRW` to toggle **ARRW**.
+- Hold `SYMB` (or `ARRW`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `PLVR` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## Functional Keys
+
+- Tap `F1` to mute microphone via [Shush](http://mizage.com/shush/).
+- Tap `F2` to copy screenshot to the clipboard.
+- Hold `SHIFT` and tap `F2` to save screenshot as a file.
+- Tap `F3`, `F4`, `F5`, `F6` to resize a window via [Divvy](http://mizage.com/divvy/).
+- Tap `F14`, `F15` to adjust display brightness.
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.

文件差异内容过多而无法显示
+ 1132 - 0
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex


二进制
keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.png


文件差异内容过多而无法显示
+ 352 - 237
keyboard/planck/CYGWIN_GUIDE.md


+ 49 - 0
keyboard/planck/common_keymaps/keymap_mitch.c

@@ -0,0 +1,49 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
+  LCTL, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
+  LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, FN3,
+  ESC,  DEL,  LALT, LGUI, FN2,  SPC,        FN1,  LEFT, DOWN, UP,   RGHT),
+[1] = KEYMAP(
+  GRV,  GRV,  FN22, FN19, FN10, TRNS, TRNS, 7,    8,    9,    0,    BSPC,
+  TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4,    5,    6,    TRNS, BSLS,
+  TRNS, MINS, FN20, EQL,  FN21, TRNS, TRNS, 1,    2,    3,    TRNS, ENT,
+  TRNS, TRNS, TRNS, TRNS, TRNS, SPC,        FN1,  TRNS, PGDN, PGUP, TRNS),
+[2] = KEYMAP(
+  FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
+  TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
+  TRNS, TRNS, TRNS, TRNS, FN2,  ENT,        TRNS, TRNS, PGDN, PGUP, TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_MOMENTARY(1),  // Switch layer raise
+  [2] = ACTION_LAYER_MOMENTARY(2),  // Switch layer lower
+
+  [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
+
+  // Numeric shift modifiers
+  [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+  [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+  [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+  [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+  [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+  [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+  [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+  [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+  [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+  [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+
+  // Other shift modifiers
+  [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
+  [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),  // +
+  [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),  // ~
+  [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
+  [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
+  [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
+
+  // Switch windows in app
+  [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
+};

+ 311 - 0
quantum/keymap_extras/keymap_bepo.h

@@ -0,0 +1,311 @@
+/* Keymap macros for the French BÉPO layout - http://bepo.fr */
+#ifndef KEYMAP_BEPO_H
+#define KEYMAP_BEPO_H
+
+#include "keymap_common.h"
+
+// Alt gr
+#ifndef ALTGR
+#define ALTGR(kc)   RALT(kc)
+#endif
+#ifndef ALGR
+#define ALGR(kc)    ALTGR(kc)
+#endif
+#define BP_ALGR KC_RALT
+
+// Normal characters
+// First row (on usual keyboards)
+#define BP_DOLLAR           KC_GRAVE            // $
+#define BP_DLR              BP_DOLLAR
+#define BP_DOUBLE_QUOTE     KC_1                // "
+#define BP_DQOT             BP_DOUBLE_QUOTE
+#define BP_LEFT_GUILLEMET   KC_2                // «
+#define BP_LGIL             BP_LEFT_GUILLEMET
+#define BP_RIGHT_GUILLEMET  KC_3                // »
+#define BP_RGIL             BP_RIGHT_GUILLEMET
+#define BP_LEFT_PAREN       KC_4                // (
+#define BP_LPRN             BP_LEFT_PAREN
+#define BP_RIGHT_PAREN      KC_5                // )
+#define BP_RPRN             BP_RIGHT_PAREN
+#define BP_AT               KC_6                // @
+#define BP_PLUS             KC_7                // +
+#define BP_MINUS            KC_8                // -
+#define BP_MINS             BP_MINUS
+#define BP_SLASH            KC_9                // /
+#define BP_SLSH             BP_SLASH
+#define BP_ASTERISK         KC_0                // *
+#define BP_ASTR             BP_ASTERISK
+#define BP_EQUAL            KC_MINUS            // =
+#define BP_EQL              BP_EQUAL
+#define BP_PERCENT          KC_EQUAL            // %
+#define BP_PERC             BP_PERCENT
+
+// Second row
+#define BP_B                KC_Q
+#define BP_E_ACUTE          KC_W        // é
+#define BP_ECUT             BP_E_ACUTE
+#define BP_P                KC_E
+#define BP_O                KC_R
+#define BP_E_GRAVE          KC_T        // è
+#define BP_EGRV             BP_E_GRAVE
+#define BP_DEAD_CIRCUMFLEX  KC_Y        // dead ^
+#define BP_DCRC             BP_DEAD_CIRCUMFLEX
+#define BP_V                KC_U
+#define BP_D                KC_I
+#define BP_L                KC_O
+#define BP_J                KC_P
+#define BP_Z                KC_LBRACKET
+#define BP_W                KC_RBRACKET
+
+// Third row
+#define BP_A            KC_A
+#define BP_U            KC_S
+#define BP_I            KC_D
+#define BP_E            KC_F
+#define BP_COMMA        KC_G        // ,
+#define BP_COMM         BP_COMMA
+#define BP_C            KC_H
+#define BP_T            KC_J
+#define BP_S            KC_K
+#define BP_R            KC_L
+#define BP_N            KC_SCOLON
+#define BP_M            KC_QUOTE
+#define BP_C_CEDILLA    KC_BSLASH   // ç
+#define BP_CCED         BP_C_CEDILLA
+
+// Fourth row
+#define BP_E_CIRCUMFLEX     KC_NONUS_BSLASH // ê
+#define BP_ECRC             BP_E_CIRCUMFLEX
+#define BP_A_GRAVE          KC_Z            // à
+#define BP_AGRV             BP_A_GRAVE
+#define BP_Y                KC_X
+#define BP_X                KC_C
+#define BP_DOT              KC_V            // .
+#define BP_K                KC_B
+#define BP_APOSTROPHE       KC_N
+#define BP_APOS             BP_APOSTROPHE   // '
+#define BP_Q                KC_M
+#define BP_G                KC_COMMA
+#define BP_H                KC_DOT
+#define BP_F                KC_SLASH
+
+// Shifted characters
+// First row
+#define BP_HASH     LSFT(BP_DOLLAR)     // #
+#define BP_1        LSFT(KC_1)
+#define BP_2        LSFT(KC_2)
+#define BP_3        LSFT(KC_3)
+#define BP_4        LSFT(KC_4)
+#define BP_5        LSFT(KC_5)
+#define BP_6        LSFT(KC_6)
+#define BP_7        LSFT(KC_7)
+#define BP_8        LSFT(KC_8)
+#define BP_9        LSFT(KC_9)
+#define BP_0        LSFT(KC_0)
+#define BP_DEGREE   LSFT(BP_EQUAL)      // °
+#define BP_DEGR     BP_DEGREE
+#define BP_GRAVE    LSFT(BP_PERCENT)    // `
+#define BP_GRV      BP_GRAVE
+
+// Second row
+#define BP_EXCLAIM  LSFT(BP_DEAD_CIRCUMFLEX)    // !
+#define BP_EXLM     BP_EXCLAIM
+
+// Third row
+#define BP_SCOLON   LSFT(BP_COMMA)  // ;
+#define BP_SCLN     BP_SCOLON
+
+// Fourth row
+#define BP_COLON    LSFT(BP_DOT)    // :
+#define BP_COLN     BP_COLON
+#define BP_QUESTION LSFT(BP_QUOTE)  // ?
+#define BP_QEST     BP_QUESTION
+
+// Space bar
+#define BP_NON_BREAKING_SPACE   LSFT(KC_SPACE)
+#define BP_NBSP                 BP_NON_BREAKING_SPACE
+
+// AltGr-ed characters
+// First row
+#define BP_EN_DASH          ALTGR(BP_DOLLAR)    // –
+#define BP_NDSH             BP_EN_DASH
+#define BP_EM_DASH          ALTGR(KC_1)         // —
+#define BP_MDSH             BP_EM_DASH
+#define BP_LESS             ALTGR(KC_2)         // <
+#define BP_GREATER          ALTGR(KC_3)         // >
+#define BP_GRTR             BP_GREATER
+#define BP_LBRACKET         ALTGR(KC_4)         // [
+#define BP_LBRC             BP_LBRACKET
+#define BP_RBRACKET         ALTGR(KC_5)         // ]
+#define BP_RBRC             BP_RBRACKET
+#define BP_CIRCUMFLEX       ALTGR(KC_6)         // ^
+#define BP_CIRC             BP_CIRCUMFLEX
+#define BP_PLUS_MINUS       ALTGR(KC_7)         // ±
+#define BP_PSMS             BP_PLUS_MINUS
+#define BP_MATH_MINUS       ALTGR(KC_8)         // −
+#define BP_MMNS             BP_MATH_MINUS
+#define BP_OBELUS           ALTGR(KC_9)         // ÷
+#define BP_OBEL             BP_OBELUS
+// more conventional name of the symbol
+#define BP_DIVISION_SIGN    BP_OBELUS
+#define BP_DVSN             BP_DIVISION_SIGN
+#define BP_TIMES            ALTGR(KC_0)         // ×
+#define BP_TIMS             BP_TIMES
+#define BP_DIFFERENT        ALTGR(BP_EQUAL)     // ≠
+#define BP_DIFF             BP_DIFFERENT
+#define BP_PERMILLE         ALTGR(BP_PERCENT)   // ‰
+#define BP_PMIL             BP_PERMILLE
+
+// Second row
+#define BP_PIPE                 ALTGR(BP_B)         // |
+#define BP_DEAD_ACUTE           ALTGR(BP_E_ACUTE)   // dead ´
+#define BP_DACT                 BP_DEAD_ACUTE
+#define BP_AMPERSAND            ALTGR(BP_P)         // &
+#define BP_AMPR                 BP_AMPERSAND
+#define BP_OE_LIGATURE          ALTGR(BP_O)         // œ
+#define BP_OE                   BP_OE_LIGATURE
+#define BP_DEAD_GRAVE           ALTGR(BP_E_GRAVE)   // `
+#define BP_DGRV                 BP_DEAD_GRAVE
+#define BP_INVERTED_EXCLAIM     ALTGR(BP_DEAD_CIRCUMFLEX)   // ¡
+#define BP_IXLM                 BP_INVERTED_EXCLAIM
+#define BP_DEAD_CARON           ALTGR(BP_V)         // dead ˇ
+#define BP_DCAR                 BP_DEAD_CARON
+#define BP_ETH                  ALTGR(BP_D)         // ð
+#define BP_DEAD_SLASH           ALTGR(BP_L)         // dead /
+#define BP_DSLH                 BP_DEAD_SLASH
+#define BP_IJ_LIGATURE          ALTGR(BP_J)         // ij
+#define BP_IJ                   BP_IJ_LIGATURE
+#define BP_SCHWA                ALTGR(BP_Z)         // ə
+#define BP_SCWA                 BP_SCHWA
+#define BP_DEAD_BREVE           ALTGR(BP_W)         // dead ˘
+#define BP_DBRV                 BP_DEAD_BREVE
+
+// Third row
+#define BP_AE_LIGATURE              ALTGR(BP_A)         // æ
+#define BP_AE                       BP_AE_LIGATURE
+#define BP_U_GRAVE                  AGR(BP_U)           // ù
+#define BP_UGRV                     BP_U_GRAVE
+#define BP_DEAD_TREMA               ALTGR(BP_I)         // dead ¨ (trema/umlaut/diaresis)
+#define BP_DTRM                     BP_DEAD_TREMA
+#define BP_EURO                     ALTGR(BP_E)         // €
+#define BP_TYPOGRAPHICAL_APOSTROPHE ALTGR(BP_COMMMA)    // ’
+#define BP_TAPO                     BP_TYPOGRAPHICAL_APOSTROPHE
+#define BP_COPYRIGHT                ALTGR(BP_C)         // ©
+#define BP_CPRT                     BP_COPYRIGHT
+#define BP_THORN                    ALTGR(BP_T)         // þ
+#define BP_THRN                     BP_THORN
+#define BP_SHARP_S                  ALTGR(BP_S)         // ß
+#define BP_SRPS                     BP_SHARP_S
+#define BP_REGISTERED_TRADEMARK     ALTGR(BP_R)         // ®
+#define BP_RTM                      BP_REGISTERED_TRADEMARK
+#define BP_DEAD_TILDE               ALTGR(BP_N)         // dead ~
+#define BP_DTLD                     BP_DEAD_TILDE
+#define BP_DEAD_MACRON              ALTGR(BP_M)         // dead ¯
+#define BP_DMCR                     BP_DEAD_MACRON
+#define BP_DEAD_CEDILLA             ALTGR(BP_C_CEDILLA) // dead ¸
+#define BP_DCED                     BP_DEAD_CEDILLA
+
+// Fourth row
+#define BP_NONUS_SLASH          ALTGR(BP_E_CIRCUMFLEX)  // / on non-us backslash key (102nd key, ê in bépo)
+#define BP_NUSL                 BP_NONUS_SLASH
+#define BP_BACKSLASH            ALTGR(BP_A_GRAVE)       /* \ */
+#define BP_BSLS                 BP_BACKSLASH
+#define BP_LEFT_CURLY_BRACE     ALTGR(BP_Y)             // {
+#define BP_LCBR                 BP_LEFT_CURLY_BRACE
+#define BP_RIGHT_CURLY_BRACE    ALTGR(BP_X)             // }
+#define BP_RCBR                 BP_RIGHT_CURLY_BRACE
+#define BP_ELLIPSIS             ALTGR(BP_DOT)           // …
+#define BP_ELPS                 BP_ELLIPSIS
+#define BP_TILDE                ALTGR(BP_K)             // ~
+#define BP_TILD                 BP_TILDE
+#define BP_INVERTED_QUESTION    ALTGR(BP_QUESTION)      // ¿
+#define BP_IQST                 BP_INVERTED_QUESTION
+#define BP_DEAD_RING            ALTGR(BP_Q)             // dead °
+#define BP_DRNG                 BP_DEAD_RING
+#define BP_DEAD_GREEK           ALTGR(BP_G)             // dead Greek key (following key will make a Greek letter)
+#define BP_DGRK                 BP_DEAD_GREEK
+#define BP_DAGGER               ALTGR(BP_H)             // †
+#define BP_DAGR                 BP_DAGGER
+#define BP_DEAD_OGONEK          ALTGR(BP_F)             // dead ˛
+#define BP_DOGO                 BP_DEAD_OGONEK
+
+// Space bar
+#define BP_UNDERSCORE   ALTGR(KC_SPACE)     // _
+#define BP_UNDS         BP_UNDERSCORE
+
+// AltGr-Shifted characters (different from capitalised AltGr-ed characters)
+// First row
+#define BP_PARAGRAPH            ALTGR(BP_HASH)      // ¶
+#define BP_PARG                 BP_PARAGRAPH
+#define BP_LOW_DOUBLE_QUOTE     ALTGR(BP_1)         // „
+#define BP_LWQT                 BP_LOW_DOUBLE_QUOTE
+#define BP_LEFT_DOUBLE_QUOTE    ALTGR(BP_2)         // “
+#define BP_LDQT                 BP_LEFT_DOUBLE_QUOTE
+#define BP_RIGHT_DOUBLE_QUOTE   ALTGR(BP_3)         // ”
+#define BP_RDQT                 BP_RIGHT_DOUBLE_QUOTE
+#define BP_LESS_OR_EQUAL        ALTGR(BP_4)         // ≤
+#define BP_LEQL                 BP_LESS_OR_EQUAL
+#define BP_GREATER_OR_EQUAL     ALTGR(BP_5)         // ≥
+#define BP_GEQL                 BP_GREATER_OR_EQUAL
+// nothing on ALTGR(BP_6)
+#define BP_NEGATION             ALTGR(BP_7)         // ¬
+#define BP_NEGT                 BP_NEGATION
+#define BP_ONE_QUARTER          ALTGR(BP_8)         // ¼
+#define BP_1QRT                 BP_ONE_QUARTER
+#define BP_ONE_HALF             ALTGR(BP_9)         // ½
+#define BP_1HLF                 BP_ONE_HALF
+#define BP_THREE_QUARTERS       ALTGR(BP_0)         // ¾
+#define BP_3QRT                 BP_THREE_QUARTERS
+#define BP_MINUTES              ALTGR(BP_DEGREE)    // ′
+#define BP_MNUT                 BP_MINUTES
+#define BP_SECONDS              ALTGR(BP_GRAVE)     // ″
+#define BP_SCND                 BP_SECONDS
+
+// Second row
+#define BP_BROKEN_PIPE          LSFT(BP_PIPE)           // ¦
+#define BP_BPIP                 BP_BROKEN_PIPE
+#define BP_DEAD_DOUBLE_ACUTE    LSFT(BP_DEAD_ACUTE)     // ˝
+#define BP_DDCT                 BP_DEAD_DOUBLE_ACUTE
+#define BP_SECTION              ALTGR(LSFT(BP_P))       // §
+#define BP_SECT                 BP_SECTION
+// LSFT(BP_DEAD_GRAVE) is actually the same character as LSFT(BP_PERCENT)
+#define BP_GRAVE_BIS            LSFT(BP_DEAD_GRAVE)     // `
+#define BP_GRVB                 BP_GRAVE_BIS
+
+// Third row
+#define BP_DEAD_DOT_ABOVE       LSFT(BP_DEAD_TREMA)     // dead ˙
+#define BP_DDTA                 BP_DEAD_DOT_ABOVE
+#define BP_DEAD_CURRENCY        LSFT(BP_EURO)           // dead ¤ (next key will generate a currency code like ¥ or £)
+#define BP_DCUR                 BP_DEAD_CURRENCY
+#define BP_DEAD_HORN            LSFT(ALTGR(BP_COMMA))   // dead ̛
+#define BP_DHRN                 BP_DEAD_HORN
+#define BP_LONG_S               LSFT(ALTGR(BP_C))       // ſ
+#define BP_LNGS                 BP_LONG_S
+#define BP_TRADEMARK            LSFT(BP_REGISTERED_TRADEMARK)   // ™
+#define BP_TM                   BP_TRADEMARK
+#define BP_ORDINAL_INDICATOR_O  LSFT(ALTGR(BP_M))               // º
+#define BP_ORDO                 BP_ORDINAL_INDICATOR_O
+#define BP_DEAD_COMMA           LSFT(BP_DEAD_CEDILLA)   // dead ˛
+#define BP_DCOM                 BP_DEAD_COMMA
+
+// Fourth row
+#define BP_LEFT_QUOTE           LSFT(ALTGR(BP_Y))       // ‘
+#define BP_LQOT                 BP_LEFT_QUOTE
+#define BP_RIGHT_QUOTE          LSFT(ALTGR(BP_X))       // ’
+#define BP_RQOT                 BP_RIGHT_QUOTE
+#define BP_INTERPUNCT           LSFT(ALTGR(BP_DOT))     // ·
+#define BP_IPCT                 BP_INTERPUNCT
+#define BP_DEAD_HOOK_ABOVE      LSFT(ALTGR(BP_QUESTION))    // dead ̉
+#define BP_DHKA                 BP_DEAD_HOOK_ABOVE
+#define BP_DEAD_UNDERDOT        LSFT(BP_DEAD_RING)      // dead ̣
+#define BP_DUDT                 BP_DEAD_UNDERDOT
+#define BP_DOUBLE_DAGGER        LSFT(BP_DAGGER)         // ‡
+#define BP_DDGR                 BP_DOUBLE_DAGGER
+#define BP_ORDINAL_INDICATOR_A  LSFT(ALTGR(BP_F))       // ª
+#define BP_ORDA                 BP_ORDINAL_INDICATOR_A
+
+// Space bar
+#define BP_NARROW_NON_BREAKING_SPACE    ALTGR(BP_NON_BREAKING_SPACE)
+#define BP_NNBS                         BP_NARROW_NON_BREAKING_SPACE
+
+#endif

+ 2 - 2
quantum/keymap_extras/keymap_german_osx.h

@@ -12,7 +12,7 @@
 #define DE_Z KC_Y
 #define DE_Z KC_Y
 #define DE_Y KC_Z
 #define DE_Y KC_Z
 
 
-#define DE_A KC_A 
+#define DE_A KC_A
 #define DE_B KC_B
 #define DE_B KC_B
 #define DE_C KC_C
 #define DE_C KC_C
 #define DE_D KC_D
 #define DE_D KC_D
@@ -87,7 +87,7 @@
 // Alt-ed characters
 // Alt-ed characters
 #define DE_SQ2 LALT(KC_2) // ²
 #define DE_SQ2 LALT(KC_2) // ²
 #define DE_SQ3 LALT(KC_3) // ³
 #define DE_SQ3 LALT(KC_3) // ³
-#define DE_LCBR LALT(KC_7) // {
+#define DE_LCBR LALT(KC_8) // {
 #define DE_LBRC LALT(KC_5) // [
 #define DE_LBRC LALT(KC_5) // [
 #define DE_RBRC LALT(KC_6) // ]
 #define DE_RBRC LALT(KC_6) // ]
 #define DE_RCBR LALT(KC_9) // }
 #define DE_RCBR LALT(KC_9) // }