diff --git a/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.json b/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.json
index e9475fe9f1c..e2badad4de4 100644
--- a/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.json
+++ b/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.json
@@ -154,7 +154,8 @@
},
"S\n\n\n\n",
{
- "x": 1
+ "x": 1,
+ "c": "#c4bcbc"
},
"F\n\n\n\n",
{
@@ -162,7 +163,8 @@
},
"J",
{
- "x": 1
+ "x": 1,
+ "c": "#cccccc"
},
"L"
],
@@ -223,7 +225,7 @@
"y": -0.75,
"x": 3.5
},
- "C",
+ "C\n\n\n\n",
{
"x": 10.5,
"a": 4
@@ -236,11 +238,11 @@
"x": 2.5,
"a": 7
},
- "X",
+ "X\n\n\n\n",
{
"x": 1
},
- "V",
+ "V\n\n\n\n",
{
"x": 8.5
},
@@ -286,7 +288,7 @@
"x": 3.5,
"a": 7
},
- "Alt\n\n\n\n",
+ "Alt\n\n\n\n",
{
"x": 10.5
},
@@ -297,15 +299,15 @@
"y": -0.875,
"x": 2.5
},
- "",
+ "\n\n\n\n",
{
"x": 1
},
- "Alt\n\n\n\n",
+ "Alt\n\n\n\n",
{
"x": 8.5
},
- "",
+ "\n\n\n\n",
{
"x": 1
},
diff --git a/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.png b/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.png
index d3ed928f6e1..740684461e0 100644
Binary files a/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.png and b/keyboards/ergodox_ez/keymaps/ab/keyboard-layout.png differ
diff --git a/keyboards/ergodox_ez/keymaps/ab/keymap.c b/keyboards/ergodox_ez/keymaps/ab/keymap.c
index c3114d9ffd4..df6f3346006 100644
--- a/keyboards/ergodox_ez/keymaps/ab/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/ab/keymap.c
@@ -8,6 +8,15 @@
#define CAPS_CTL CTL_T(KC_CAPS) // Caps on tap, Ctrl on hold.
#define COPY LCTL(KC_V) // C-c Copy
#define PASTE LCTL(KC_V) // C-v Paste
+#define ZM_NRM LCTL(KC_0) // C-0 Zoom Normal
+#define ZM_OUT LCTL(KC_MINS) // C-- Zoom Out
+#define ZM_IN LCTL(KC_PLUS) // C-+ Zoom In
+#define EM_UNDO LCTL(KC_UNDS) // C-_ Emacs Undo
+
+#define _MOB 1 // Mobile#
+#define _CUS1 2 // Custom macro 1
+#define _CUS2 3 // Custom macro 2
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
@@ -34,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = KEYMAP( // layer 0 : default
- // left hand
+ // Left hand
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_WBAK,
CAPS_CTL, KC_A, KC_S, KC_D, KC_F, KC_G,
@@ -43,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
COPY, KC_LCBR,
KC_LPRN,
KC_SPC, KC_DEL, KC_LBRC,
- // right hand
+ // Right hand
KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_WFWD, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
@@ -61,9 +70,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | | | | | | | | | | |
+ * | | | LClk | MClk | RClk | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |Teensy| | | Lclk | Rclk | | |VolDn |VolUp | Mute | |
+ * |Teensy| | ZmNrm| ZmOut| ZmIn | | Undo |VolDn |VolUp | Mute | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
@@ -75,20 +84,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// FN1 Layer
[FN1] = KEYMAP(
+ // Left hand
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, 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_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, ZM_NRM, ZM_OUT, ZM_IN,
KC_TRNS, KC_TRNS,
KC_TRNS,
RESET, KC_TRNS, KC_TRNS,
- // right hand
+ // Right hand
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
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_MPLY,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,
+ KC_TRNS, M(_MOB), KC_TRNS, M(_CUS1),M(_CUS2),KC_TRNS, KC_TRNS,
+ EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -102,14 +112,16 @@ 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;
- }
+ case _MOB: // Your mobile# here.
+ return MACRODOWN(T(1), T(2), T(3), T(MINS),
+ T(1), T(2), T(3), T(MINS),
+ T(1), T(2), T(3), T(4),
+ END);
+ case _CUS1: // Your custom macro 1
+ return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(SPC), END);
+ case _CUS2: // Your custom macro 2
+ return MACRODOWN(T(L), T(S), T(SPC), T(MINS), T(L), T(ENT), END);
+ };
return MACRO_NONE;
};
diff --git a/keyboards/planck/keymaps/ab/keyboard-layout.json b/keyboards/planck/keymaps/ab/keyboard-layout.json
index 6e33ec6bfd6..4e631a3487f 100644
--- a/keyboards/planck/keymaps/ab/keyboard-layout.json
+++ b/keyboards/planck/keymaps/ab/keyboard-layout.json
@@ -4,60 +4,122 @@
"author": "Anand Babu Periasamy"
},
[
- "1\nF1\n!\n\n\n\n\n\n\nTab",
- "2\nF2\n@\n\n\n\n\n\n\nQ",
- "3\nF3\n#\n\n\n\n\n\n\nW",
- "4\nF4\n$\n\n\n\n\n\n\nE",
- "5\nF5\n%\n\n\n\n\n\n\nR",
- "6\nF6\n^\n\n\n\n\n\n\nT",
- "7\nF7\n&\n\n\n\n\n\n\nY",
- "8\nF8\n*\n\n\n\n\n\n\nU",
- "9\nF9\n(\n\n\n\n\n\n\nI",
- "0\nF10\n)\n\n\n\n\n\n\nO",
- "-\nF11\n_\n\n\n\n\n\n\nP",
- "=\nF12\n+\n\n\n\n\n\n\n"
+ {
+ "fa": [
+ 2,
+ 2,
+ 0,
+ 2
+ ]
+ },
+ "F1\n1\n\n!\n\n\n\n\n\nTab",
+ "F2\n2\n\n@\n\n\n\n\n\nQ",
+ "F3\n3\n\n#\n\n\n\n\n\nW",
+ "F4\n4\n\n$\n\n\n\n\n\nE",
+ "F5\n5\n\n%\n\n\n\n\n\nR",
+ "F6\n6\n\n^\n\n\n\n\n\nT",
+ "F7\n7\n\n&\n\n\n\n\n\nY",
+ "F8\n8\n\n*\n\n\n\n\n\nU",
+ "F9\n9\n\n(\n\n\n\n\n\nI",
+ "F10\n0\n\n)\n\n\n\n\n\nO",
+ "F11\n-\n\n_\n\n\n\n\n\nP",
+ "F12\n=\n\n+\n\n\n\n\n\n"
],
[
{
- "a": 7
+ "a": 7,
+ "f": 3
},
"Ctrl",
+ {
+ "f": 3
+ },
"A",
+ {
+ "f": 3
+ },
"S",
+ {
+ "f": 3
+ },
"D",
{
- "a": 4
+ "c": "#c4bcbc",
+ "a": 4,
+ "f": 3
},
- "(\n\n\n\n\n\n\n\n\nF",
- ")\n\n\n\n\n\n\n\n\nG",
- "{\n\n\n\n\n\n\n\n\nH",
- "}\n\n\n\n\n\n\n\n\nJ",
+ "\n(\n\n\n\n\n\n\n\nF",
{
- "a": 7
+ "c": "#cccccc",
+ "f": 3
+ },
+ "\n)\n\n\n\n\n\n\n\nG",
+ {
+ "f": 3
+ },
+ "\n{\n\n\n\n\n\n\n\nH",
+ {
+ "c": "#c4bcbc",
+ "f": 3
+ },
+ "\n}\n\n\n\n\n\n\n\nJ",
+ {
+ "c": "#cccccc",
+ "a": 7,
+ "f": 3
},
"K",
+ {
+ "f": 3
+ },
"L",
{
- "a": 6
+ "a": 6,
+ "f": 3
},
";\n\n:",
{
- "a": 7
+ "a": 7,
+ "f": 3
},
"Enter"
],
[
+ {
+ "f": 3
+ },
"Shift",
+ {
+ "f": 3
+ },
"Z",
+ {
+ "f": 3
+ },
"X",
+ {
+ "f": 3
+ },
"C",
{
- "a": 4
+ "a": 4,
+ "fa": [
+ 0,
+ 2,
+ 0,
+ 2,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2
+ ]
},
- "[\n`\n\n\n\n\n\n\n\nV",
- "]\n~\n\n\n\n\n\n\n\nB",
- "'\n\\\n\n\n\n\n\n\n\nN",
- "\"\n|\n\n\n\n\n\n\n\nM",
+ "\\\n[\n\n\n\n\n\n\n\nV",
+ "|\n]\n\n\n\n\n\n\n\nB",
+ "`\n'\n\n\n\n\n\n\n\nN",
+ "~\n\"\n\n\n\n\n\n\n\nM",
{
"a": 6
},
@@ -71,31 +133,53 @@
],
[
{
- "a": 4
+ "a": 4,
+ "fa": [
+ 2,
+ 2
+ ]
},
- "\n\n\n\n\n\n\n\n\nCtrl",
+ "\n\n\n\n\n\n\n\n\nCtrl",
+ "\n\n\n\n\n\n\n\n\nEsc",
+ "\n\n\n\n\n\n\n\n\n",
+ "\n\n\n\n\n\n\n\n\nAlt",
{
- "a": 7
+ "a": 7,
+ "f": 3
+ },
+ "",
+ {
+ "a": 4,
+ "fa": [
+ 1,
+ 1
+ ],
+ "w": 2
+ },
+ "PgUp\nPgDn\n\n\n\n\n\n\n\nSpace",
+ {
+ "a": 7,
+ "f": 3
},
- "Esc",
- "",
- "Alt",
"",
{
"a": 4,
- "w": 2
+ "fa": [
+ 2
+ ]
},
- "\nPgUP\n\nPgDn\n\n\n\n\n\nSpace",
+ "\n\n\n\n\n\n\n\n\n",
{
- "a": 7
+ "f": 3
},
- "",
- "",
+ "\n\n\n\n\n\n\n\n\n",
{
- "a": 4
+ "f": 3
},
- "\n\n\n\n\n\n\n\n\n",
- "\n\n\n\n\n\n\n\n\n",
- "\n\n\n\n\n\n\n\n\n"
+ "\n\n\n\n\n\n\n\n\n",
+ {
+ "f": 3
+ },
+ "\n\n\n\n\n\n\n\n\n"
]
]
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/ab/keyboard-layout.png b/keyboards/planck/keymaps/ab/keyboard-layout.png
index 64bf0aa1c25..dcdbb726dfc 100644
Binary files a/keyboards/planck/keymaps/ab/keyboard-layout.png and b/keyboards/planck/keymaps/ab/keyboard-layout.png differ
diff --git a/keyboards/planck/keymaps/ab/keymap.c b/keyboards/planck/keymaps/ab/keymap.c
index 57f90ab576a..8e1d28a65a5 100644
--- a/keyboards/planck/keymaps/ab/keymap.c
+++ b/keyboards/planck/keymaps/ab/keymap.c
@@ -12,59 +12,74 @@ extern keymap_config_t keymap_config;
// Symbolic names for macro IDs.
#define _QWERTY 0 // QUERTY layer
-#define _RAISE 1 // Raise layer
-#define _LOWER 2 // Lower layer
-#define _CUSTOM 3 // Custom layer
+#define _LOWER 1 // Lower layer
+#define _RAISE 2 // Raise layer
+#define _CUSTOM 3 // Custom layer (LOWER + RAISE)
#define _BL 4 // Backlight
-#define _MOBILE 5 // Mobile#
-#define _CUSTOM1 6 // Custom macro 1
-#define _CUSTOM2 7 // Custom macro 2
+#define _MOB 5 // Mobile#
+#define _CUS1 6 // Custom macro 1
+#define _CUS2 7 // Custom macro 2
// Macro shortcuts.
-#define RAISE M(_RAISE)
+#define QWERTY M(_LOWER)
#define LOWER M(_LOWER)
-#define CUSTOM M(_CUSTOM) // RAISE + LOWER
+#define RAISE M(_RAISE)
+#define CUSTOM M(_CUSTOM)
#define BL M(_BL)
-#define MOBILE M(_MOBILE)
-#define CUSTOM1 M(_CUSTOM1)
-#define CUSTOM2 M(_CUSTOM2)
+#define MOB M(_MOB)
+#define CUS1 M(_CUS1)
+#define CUS2 M(_CUS2)
+
+// Func macro definitions.
+#define LWR_PGDN FUNC(0) // Tap for PgDn, hold for LOWER
+#define RSE_PGUP FUNC(1) // Tap for PgUp, hold for RAISE
+#define CTL_CAPS FUNC(2) // Tap for Caps, hold for Ctrl (DOESN'T SEEM TO WORK)
+#define SFT_ENT FUNC(3) // Tap for Enter, hold for Shift
+#define ZM_NRM FUNC(4) // Zoom normal
+#define ZM_IN FUNC(5) // Zoom out
+#define ZM_OUT FUNC(6) // Zoom in
+#define EM_UNDO FUNC(7) // Emacs Undo
+
+// Enable these functions using FUNC(n) macro.
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_PGDN),
+ [1] = ACTION_LAYER_TAP_KEY(_RAISE, KC_PGUP),
+ [2] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_CAPS),
+ [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
+ [4] = ACTION_MODS_KEY(MOD_LCTL, KC_0),
+ [5] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS),
+ [6] = ACTION_MODS_KEY(MOD_LCTL, KC_PLUS),
+ [7] = ACTION_MODS_KEY(MOD_LCTL, KC_UNDS),
+ };
// This config can be found at Keyboard layout editor site: http://goo.gl/zjXL2l
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = { /* QWERTY */
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
{KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, FUNC(3)},
- {KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, RAISE, KC_SPC, KC_SPC, LOWER, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT}
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT},
+ {KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
-[_RAISE] = { /* RAISE */
+[_LOWER] = { /* LOWER */
{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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_DQT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {BL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {BL, ZM_NRM, ZM_IN, ZM_OUT, KC_TRNS, KC_PGDN, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
-[_LOWER] = { /* LOWER */
+[_RAISE] = { /* RAISE */
{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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_LCBR, KC_BSLS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_TILD, KC_BSLS, KC_PIPE, KC_LBRC, KC_LBRC, KC_TRNS, KC_TRNS},
- {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGDN, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_PIPE, KC_GRV, KC_TILD, KC_LBRC, KC_LBRC, KC_TRNS, KC_TRNS},
+ {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE}
},
[_CUSTOM] = { /* CUSTOM */
{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, MOBILE, KC_TRNS, CUSTOM1, CUSTOM2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MOB, KC_TRNS, CUS1, CUS2, 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}
}
};
-// Enable these functions using FUNC(n) macro. They seem to be buggy mostly.
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_TAP_KEY(_RAISE, KC_PGUP), // Tap for PgUp, hold for RAISE
- [1] = ACTION_LAYER_TAP_KEY(_LOWER, KC_PGDN), // Tap for PgDn, hold for LOWER
- [2] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_CAPS), // Tap for Caps, hold for Ctrl
- [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Tap for Enter, hold for Shift
-};
-
// Set a layer persistantly.
void persistant_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
@@ -75,11 +90,6 @@ void persistant_default_layer_set(uint16_t default_layer) {
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
- case _QWERTY: // Default QWERTY layer. // This case not used for now.
- if (record->event.pressed) {
- persistant_default_layer_set(1UL<<_QWERTY);
- }
- break;
case _RAISE: // Raised layer.
if (record->event.pressed) {
layer_on(_RAISE);
@@ -98,7 +108,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
update_tri_layer(_LOWER, _RAISE, _CUSTOM);
}
break;
- case _BL:// Backlight
+ case _BL: // Backlight
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
@@ -108,14 +118,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
unregister_code(KC_RSFT);
}
break;
- case _MOBILE:// Your mobile# here.
+ case _MOB: // Your mobile# here.
return MACRODOWN(T(1), T(2), T(3), T(MINS),
T(1), T(2), T(3), T(MINS),
T(1), T(2), T(3), T(4),
END);
- case _CUSTOM1:// Your custom macro 1
+ case _CUS1: // Your custom macro 1
return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(SPC), END);
- case _CUSTOM2:// Your custom macro 2
+ case _CUS2: // Your custom macro 2
return MACRODOWN(T(L), T(S), T(SPC), T(MINS), T(L), T(ENT), END);
};
return MACRO_NONE;
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index 4bca1b5ac05..9b4b33f8214 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -22,16 +22,16 @@ extern keymap_config_t keymap_config;
#define _PLOVER 5
#define _ADJUST 16
-// Macro name shortcuts
-#define QWERTY M(_QWERTY)
-#define COLEMAK M(_COLEMAK)
-#define DVORAK M(_DVORAK)
-#define LOWER M(_LOWER)
-#define RAISE M(_RAISE)
-#define M_BL 5
-#define PLOVER M(12)
-#define EXT_PLV M(13)
-#define TOG_OUT M(14)
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ LOWER,
+ RAISE,
+ BACKLIT,
+ EXT_PLV
+};
// Fillers to make layering more clear
#define _______ KC_TRNS
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Colemak
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Dvorak
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
- {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Lower
@@ -144,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_PLOVER] = {
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
{XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
- {TOG_OUT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
},
@@ -167,10 +167,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
};
#ifdef AUDIO_ENABLE
@@ -192,10 +188,9 @@ void persistant_default_layer_set(uint16_t default_layer) {
default_layer_set(default_layer);
}
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch(id) {
- case _QWERTY:
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
@@ -203,7 +198,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
persistant_default_layer_set(1UL<<_QWERTY);
}
break;
- case _COLEMAK:
+ return false;
+ case COLEMAK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
@@ -211,7 +207,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
persistant_default_layer_set(1UL<<_COLEMAK);
}
break;
- case _DVORAK:
+ return false;
+ case DVORAK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
@@ -219,7 +216,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
persistant_default_layer_set(1UL<<_DVORAK);
}
break;
- case _LOWER:
+ return false;
+ case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -228,7 +226,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
break;
- case _RAISE:
+ return false;
+ case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -237,7 +236,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
break;
- case M_BL:
+ return false;
+ case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
@@ -246,8 +246,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
} else {
unregister_code(KC_RSFT);
}
- break;
- case 12:
+ break;
+ return false;
+ case PLOVER:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
stop_all_notes();
@@ -264,23 +265,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
keymap_config.nkro = 1;
eeconfig_update_keymap(keymap_config.raw);
}
- break;
- case 13:
+ break;
+ return false;
+ case EXT_PLV:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
#endif
layer_off(_PLOVER);
}
- break;
- case 14:
- if (record->event.pressed) {
- return MACRO( D(E), D(R), D(F), D(V), D(O), D(L), U(E), U(R), U(F), U(V), U(O), U(L), END );
- }
- break;
+ break;
+ return false;
}
- return MACRO_NONE;
-};
+ return true;
+}
void matrix_init_user(void) {
#ifdef AUDIO_ENABLE
diff --git a/keyboards/preonic/keymaps/default/keymap.c b/keyboards/preonic/keymaps/default/keymap.c
index 4c967d73edf..6d8ef634dd7 100644
--- a/keyboards/preonic/keymaps/default/keymap.c
+++ b/keyboards/preonic/keymaps/default/keymap.c
@@ -16,13 +16,14 @@
#define _RAISE 4
#define _ADJUST 16
-// Macro name shortcuts
-#define QWERTY M(_QWERTY)
-#define COLEMAK M(_COLEMAK)
-#define DVORAK M(_DVORAK)
-#define LOWER M(_LOWER)
-#define RAISE M(_RAISE)
-#define M_BL 5
+enum preonic_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ LOWER,
+ RAISE,
+ BACKLIT
+};
// Fillers to make layering more clear
#define _______ KC_TRNS
@@ -48,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL},
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Colemak
@@ -69,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL},
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Dvorak
@@ -90,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL},
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
- {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
/* Lower
@@ -157,10 +158,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
};
#ifdef AUDIO_ENABLE
@@ -185,10 +182,9 @@ void persistant_default_layer_set(uint16_t default_layer) {
default_layer_set(default_layer);
}
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch(id) {
- case _QWERTY:
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
@@ -196,7 +192,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
persistant_default_layer_set(1UL<<_QWERTY);
}
break;
- case _COLEMAK:
+ return false;
+ case COLEMAK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
@@ -204,7 +201,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
persistant_default_layer_set(1UL<<_COLEMAK);
}
break;
- case _DVORAK:
+ return false;
+ case DVORAK:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
@@ -212,7 +210,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
persistant_default_layer_set(1UL<<_DVORAK);
}
break;
- case _LOWER:
+ return false;
+ case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -221,7 +220,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
break;
- case _RAISE:
+ return false;
+ case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
@@ -230,7 +230,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
break;
- case M_BL:
+ return false;
+ case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
#ifdef BACKLIGHT_ENABLE
@@ -239,9 +240,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
} else {
unregister_code(KC_RSFT);
}
- break;
+ break;
+ return false;
}
- return MACRO_NONE;
+ return true;
};
void matrix_init_user(void) {
diff --git a/quantum/keymap.c b/quantum/keymap.c
index 203a82d954a..74fd518c9bc 100644
--- a/quantum/keymap.c
+++ b/quantum/keymap.c
@@ -141,6 +141,10 @@ action_t action_for_key(uint8_t layer, keypos_t key)
return action;
}
+__attribute__ ((weak))
+const uint16_t PROGMEM fn_actions[] = {
+
+};
/* Macro */
__attribute__ ((weak))
diff --git a/readme.md b/readme.md
index ff75c0fe9e9..a71c3035a30 100644
--- a/readme.md
+++ b/readme.md
@@ -51,7 +51,7 @@ Before you are able to compile, you'll need to install an environment for AVR de
4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
5. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
-7. Future build commands should be run from the standard Windows command prompt, which you can find by searching for "command prompt" from the start menu or start screen. Ignore the "MHV AVR Shell".
+7. Future build commands should be run from the MHV AVR Shell, which sets up an environment compatible with colorful build output. The standard Command Prompt will also work, but add `COLOR=false` to the end of all make commands when using it.
### Mac
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
diff --git a/util/1-setup-path-win.bat b/util/1-setup-path-win.bat
index 92e91be3e2b..699aee21521 100644
--- a/util/1-setup-path-win.bat
+++ b/util/1-setup-path-win.bat
@@ -2,12 +2,12 @@
@ECHO OFF
SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
-CD UTIL
+DEL script1.log > NUL 2>&1
DEL add-paths.log > NUL 2>&1
DEL add-paths-detail.log > NUL 2>&1
DEL UPDATE > NUL 2>&1
-ELEVATE -wait %cd%\add-paths.bat > NUL 2>&1
+ELEVATE -wait add-paths.bat >> script1.log 2>&1
IF ERRORLEVEL 1 (
ECHO You denied admin access. Rerun the script, and be sure to press the yes button this time.
@@ -44,9 +44,14 @@ EXIT /b
:: -----------------------------------------------------------------------------
:KillExplorer
+ECHO.
+ECHO.
ECHO Your desktop will be restarted.
+ECHO.
ECHO All file explorer windows except for the one you launched this script from WILL BE CLOSED.
+ECHO.
ECHO Press enter when ready, or close this window if you would rather do a full restart of your computer at a later time.
+ECHO.
PAUSE
ping -n 5 127.0.0.1 > NUL 2>&1
ECHO Killing process Explorer.exe. . .
@@ -57,5 +62,5 @@ ECHO Your desktop is now loading. . .
ECHO.
ping -n 5 127.0.0.1 > NUL 2>&1
START explorer.exe
-START explorer.exe %CD%\..
+START explorer.exe %CD%
EXIT /b
\ No newline at end of file
diff --git a/util/2-setup-environment-win.bat b/util/2-setup-environment-win.bat
index 905338087a9..3e54cc776c4 100644
--- a/util/2-setup-environment-win.bat
+++ b/util/2-setup-environment-win.bat
@@ -1,46 +1,55 @@
@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@ECHO OFF
+CD %~dp0
+
SET STARTINGDIR=%CD%
+echo %STARTINGDIR%
:: Check for admin privilages
SETX /M test test > nul 2>&1
IF NOT ["%ERRORLEVEL%"]==["0"] (
- ECHO FAILED. Rerun with administrator privileges.
- GOTO ExitBatch
+ ELEVATE -wait 2-setup-environment-win.bat & goto :EOF
)
+DEL %STARTINGDIR%\environment-setup.log
+
:: Make sure path to MinGW exists - if so, CD to it
SET MINGWPATH="C:\MinGW\bin"
-IF NOT EXIST !MINGWPATH! (ECHO Path not found: %MINGWPATH% && GOTO ExitBatch)
+IF NOT EXIST !MINGWPATH! (ECHO Path not found: %MINGWPATH%. Did you install MinGW to the default location? && GOTO ExitBatch)
CD /D %MINGWPATH%
-
+ECHO.
ECHO ------------------------------------------
ECHO Installing wget and unzip
ECHO ------------------------------------------
-mingw-get install msys-wget-bin msys-unzip-bin
+ECHO.
+mingw-get install msys-wget-bin msys-unzip-bin
MKDIR temp
CD temp
+ECHO.
ECHO ------------------------------------------
ECHO Installing dfu-programmer.
ECHO ------------------------------------------
-wget http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip
-unzip dfu-programmer-win-0.7.2.zip
-COPY dfu-programmer.exe ..
+ECHO.
+wget 'http://downloads.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip' >> %STARTINGDIR%\environment-setup.log
+unzip -o dfu-programmer-win-0.7.2.zip >> %STARTINGDIR%\environment-setup.log
+COPY dfu-programmer.exe .. >> %STARTINGDIR%\environment-setup.log
ECHO ------------------------------------------
ECHO Downloading driver
ECHO ------------------------------------------
-wget http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
-unzip libusb-win32-bin-1.2.6.0.zip
-COPY libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+wget http://downloads.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip >> %STARTINGDIR%\environment-setup.log
+unzip -o libusb-win32-bin-1.2.6.0.zip >> %STARTINGDIR%\environment-setup.log
+COPY libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll >> %STARTINGDIR%\environment-setup.log
+ECHO.
ECHO ------------------------------------------
ECHO Installing driver. Accept prompt.
ECHO ------------------------------------------
+ECHO.
IF EXIST "%WinDir%\System32\PnPUtil.exe" (%WinDir%\System32\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
IF EXIST "%WinDir%\Sysnative\PnPUtil.exe" (%WinDir%\Sysnative\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)