]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Added Espynn's keymap
authorfolkert4 <folkertjw!gmail.com>
Fri, 27 Jan 2017 18:51:39 +0000 (13:51 -0500)
committerfolkert4 <folkertjw!gmail.com>
Fri, 27 Jan 2017 18:51:39 +0000 (13:51 -0500)
keyboards/planck/keymaps/espynn/Makefile [new file with mode: 0644]
keyboards/planck/keymaps/espynn/keyboard-layout.jpg [new file with mode: 0644]
keyboards/planck/keymaps/espynn/keymap.c [new file with mode: 0644]
keyboards/planck/keymaps/espynn/layout.json [new file with mode: 0644]
keyboards/planck/keymaps/espynn/readme.md [new file with mode: 0644]

diff --git a/keyboards/planck/keymaps/espynn/Makefile b/keyboards/planck/keymaps/espynn/Makefile
new file mode 100644 (file)
index 0000000..44a030b
--- /dev/null
@@ -0,0 +1,63 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device.
+#                Please customize your programmer settings(PROGRAM_CMD)
+#
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+#               (must have teensy_loader_cli installed).
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+#            have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+#             have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+#               (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+#                (must have Atmel FLIP installed).
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+#              with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+#                   bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+# Build Options
+#   change to "no" to disable the options, or define them in the makefile.mk in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI controls
+AUDIO_ENABLE = no           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/planck/keymaps/espynn/keyboard-layout.jpg b/keyboards/planck/keymaps/espynn/keyboard-layout.jpg
new file mode 100644 (file)
index 0000000..55e5396
Binary files /dev/null and b/keyboards/planck/keymaps/espynn/keyboard-layout.jpg differ
diff --git a/keyboards/planck/keymaps/espynn/keymap.c b/keyboards/planck/keymaps/espynn/keymap.c
new file mode 100644 (file)
index 0000000..4a3fe32
--- /dev/null
@@ -0,0 +1,151 @@
+#include "planck.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+#define PREVENT_STUCK_MODIFIERS
+extern keymap_config_t keymap_config;
+
+// Symbolic names for macro IDs.
+#define _QWERTY  0  // QUERTY layer
+#define _LOWER   1  // Lower layer
+#define _RAISE   2  // Raise layer
+#define _CUSTOM  3  // Custom layer (LOWER + RAISE)
+#define _BL      4  // Backlight
+#define _CUS0    5  // Mobile#
+#define _CUS1    6  // signature
+#define _CUS2    7  // macro 2
+#define _CUS3    8  // macro 3
+#define _CUS4    9  // macro 4
+#define _CUS5    10 // email
+#define _COPY    11 // copy
+#define _PASTE   12 // paste
+#define _CUT     13 // cut
+
+// Macro shortcuts.
+#define QWERTY  M(_LOWER)
+#define LOWER   M(_LOWER)
+#define RAISE   M(_RAISE)
+#define CUSTOM  M(_CUSTOM)
+#define BL      M(_BL)
+#define CUS0    M(_CUS0)
+#define CUS1    M(_CUS1)
+#define CUS2    M(_CUS2)
+#define CUS3    M(_CUS3)
+#define CUS4    M(_CUS4)
+#define CUS5    M(_CUS5)
+#define COPY    M(_COPY)
+#define PASTE   M(_PASTE)
+#define CUT     M(_CUT)
+
+// 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
+
+// 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_DEL,  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, SFT_ENT},
+    {KC_LCTL, KC_ESC,  KC_LGUI, KC_LALT, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_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},
+    {KC_TRNS, ZM_NRM,  ZM_IN,   ZM_OUT,  KC_TRNS, KC_PGDN, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+},
+[_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_BSLS, KC_PIPE, KC_GRV,  KC_TILD, KC_LBRC, KC_LBRC, KC_TRNS, KC_TRNS},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_CUSTOM] = { /* CUSTOM */
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CUS4,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+    {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CUS0,    CUS3,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+    {KC_TRNS, KC_TRNS, CUT,     COPY,    PASTE,   CUS1,    CUS5,    CUS2,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+    {BL,      RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+}
+};
+
+// Set a layer persistantly.
+void persistant_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+// Macro actions for each corresponding ID.
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch(id) {
+    case _RAISE: // Raised layer.
+       if (record->event.pressed) {
+           layer_on(_RAISE);
+           update_tri_layer(_LOWER, _RAISE, _CUSTOM);
+       } else {
+           layer_off(_RAISE);
+           update_tri_layer(_LOWER, _RAISE, _CUSTOM);
+       }
+       break;
+    case _LOWER: // Lowered layer.
+       if (record->event.pressed) {
+           layer_on(_LOWER);
+           update_tri_layer(_LOWER, _RAISE, _CUSTOM);
+       } else {
+           layer_off(_LOWER);
+           update_tri_layer(_LOWER, _RAISE, _CUSTOM);
+       }
+       break;
+    case _BL: // Backlight
+       if (record->event.pressed) {
+           register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+           backlight_step();
+#endif
+       } else {
+           unregister_code(KC_RSFT);
+       }
+       break;
+    case _CUS0: // enter your mobile# here
+           return MACRODOWN(T(9), T(9), T(9), T(MINS),T(9), T(9), T(9), T(MINS),T(9), T(9), T(9), T(9),END);
+    case _CUS1: // signature line for email
+           return MACRODOWN(T(ENT), T(ENT), T(MINS), T(J), T(W), END);
+    case _CUS2: // Custom macro 2
+           return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_L), UP(KC_LSFT), END );
+    case _CUS3: // custom macro 3
+           return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_F), UP(KC_LSFT), END );
+    case _CUS4: // custom macro 4
+           return MACRODOWN( DOWN(KC_LSFT), TYPE(KC_I), UP(KC_LSFT), END );
+    case _CUS5: // Enter your email here
+           return MACRODOWN( TYPE(KC_F),
+        DOWN(KC_LSFT), TYPE(KC_2), UP(KC_LSFT), 
+        TYPE(KC_G), TYPE(KC_M), TYPE(KC_A), TYPE(KC_I), TYPE(KC_L), TYPE(KC_DOT), TYPE(KC_C), TYPE(KC_O), TYPE(KC_M), END );
+    case _CUT: //cut macro
+           return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_X), UP(KC_LCTL), END );
+    case _COPY: // copy macro
+           return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_C), UP(KC_LCTL), END );
+    case _PASTE: // paste macro
+           return MACRODOWN( DOWN(KC_LCTL), TYPE(KC_V), UP(KC_LCTL), END ); 
+    };
+    return MACRO_NONE;
+}
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/espynn/layout.json b/keyboards/planck/keymaps/espynn/layout.json
new file mode 100644 (file)
index 0000000..38ccc34
--- /dev/null
@@ -0,0 +1,271 @@
+[
+  {
+    "backcolor": "#858585",
+    "name": "Planck 40%",
+    "author": "James Folkert",
+    "background": {
+      "name": "Aluminium brushed",
+      "style": "background-image: url('/bg/metal/aluminum_texture1642.jpg');"
+    },
+    "switchMount": "cherry",
+    "switchBrand": "cherry",
+    "switchType": "MX1A-A1xx",
+    "pcb": true,
+    "plate": true
+  },
+  [
+    {
+      "fa": [
+        2,
+        2,
+        0,
+        2
+      ]
+    },
+    "F1\n1\n\n!\n\n\n\n\n\n<i class='kb kb-Tab-2'></i>",
+    "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\n6\n\n&\n\n\n\n\n\nY",
+    "F8\n8\n\n*\nMacro4\n\n\n\n\nU",
+    "F9\n9\n\n(\n\n\n\n\n\nI",
+    {
+      "fa": [
+        0,
+        0,
+        0,
+        2
+      ]
+    },
+    "F10\n0\n\n)\n\n\n\n\n\nO",
+    {
+      "fa": [
+        2,
+        2,
+        0,
+        2
+      ]
+    },
+    "F11\n-\n\n_\n\n\n\n\n\nP",
+    "F12\n=\n\n+\n\n\n\n\n\n<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>"
+  ],
+  [
+    {
+      "a": 7,
+      "f": 3
+    },
+    "<i class='mss mss-Unicode-DeleteRight-Big-2'></i>",
+    {
+      "f": 3
+    },
+    "A",
+    {
+      "f": 3
+    },
+    "S",
+    {
+      "f": 3
+    },
+    "D",
+    {
+      "t": "#ff0000",
+      "a": 4,
+      "f": 3
+    },
+    "\n(\n\n\n\n\n\n\n\nF",
+    {
+      "t": "#000000",
+      "f": 3
+    },
+    "\n)\n\n\n\n\n\n\n\nG",
+    {
+      "f": 3
+    },
+    "\n{\n\n\nMacro0\n\n\n\n\nH",
+    {
+      "t": "#ff0000",
+      "f": 3
+    },
+    "\n}\n\n\nMacro3\n\n\n\n\nJ",
+    {
+      "t": "#000000",
+      "f": 3
+    },
+    "{\n\n\n\n\n\n\n\n\nK",
+    {
+      "f": 3
+    },
+    "{\n\n\n\n\n\n\n\n\nL",
+    {
+      "fa": [
+        2,
+        2,
+        2,
+        2,
+        0,
+        0,
+        0,
+        2
+      ]
+    },
+    "\\\n\n|\n\n\n\n\n:\n\n;",
+    {
+      "a": 7,
+      "fa": [
+        9
+      ]
+    },
+    "<i class='mss mss-Unicode-Enter-3'></i>"
+  ],
+  [
+    {
+      "f": 3
+    },
+    "Shift",
+    {
+      "f": 3
+    },
+    "Z",
+    {
+      "f": 3
+    },
+    "X\n\n\n\nCut",
+    {
+      "f": 3
+    },
+    "C\n\n\n\nCopy",
+    {
+      "a": 4,
+      "fa": [
+        2,
+        2,
+        2,
+        2
+      ]
+    },
+    "\\\n[\n|\n{\nPaste\n\n\n\n\nV",
+    "|\n]\n\n}\nMacro1\n\n\n\n\nB",
+    "`\n'\n~\n\"\nMacro5\n\n\n\n\nN",
+    "~\n\"\n\n\nMacro2\n\n\n\n\nM",
+    {
+      "fa": [
+        2,
+        2,
+        2,
+        2,
+        0,
+        0,
+        0,
+        1
+      ]
+    },
+    "[\n\n{\n\n\n\n\n<\n\n,",
+    "[\n\n{\n\n\n\n\n\n\n.",
+    {
+      "a": 6
+    },
+    "\n\n?\n\n\n\n\n\n/",
+    {
+      "a": 4,
+      "fa": [
+        2,
+        2,
+        2,
+        0,
+        0,
+        0,
+        0,
+        1,
+        9,
+        0
+      ]
+    },
+    "\n\n\n<i class='kb kb-Arrows-Bottom-4'></i>Shift\n\n\n\n\n<i class='mss mss-Unicode-Enter-3'></i>\n\n<i class='kb kb-Arrows-Bottom-4'></i>Shift"
+  ],
+  [
+    {
+      "a": 7,
+      "f": 3
+    },
+    "Ctrl\n\n\n\nBLight",
+    {
+      "a": 4,
+      "fa": [
+        2,
+        1,
+        2,
+        0,
+        0,
+        0,
+        0,
+        1,
+        9,
+        9
+      ]
+    },
+    "\nZNorm\n\n\nRESET\n\n\n\n\n<i class='mss mss-Unicode-Escape-3'></i>",
+    {
+      "fa": [
+        2,
+        1,
+        2,
+        0,
+        0,
+        0,
+        0,
+        1,
+        9,
+        6
+      ]
+    },
+    "\nZIn\n\n\n\n\n\n\n\n<i class='kb kb-logo-windows-8'></i>",
+    {
+      "fa": [
+        2,
+        1,
+        2,
+        0,
+        0,
+        0,
+        0,
+        1,
+        9,
+        9
+      ]
+    },
+    "\nZOut\n\n\n\n\n\n\n\n<i class='kb kb-Unicode-Alternate-1'></i>",
+    {
+      "a": 7,
+      "fa": [
+        9
+      ]
+    },
+    "&dArr;",
+    {
+      "a": 4,
+      "fa": [
+        9,
+        5,
+        5
+      ],
+      "w": 2
+    },
+    "\n<i class='kb kb-Unicode-Page-Down-3'></i>\n<i class='kb kb-Unicode-Page-Up-3'></i>",
+    {
+      "a": 7
+    },
+    "&uArr;",
+    {
+      "a": 4,
+      "fa": [
+        2
+      ]
+    },
+    "<i class='kb kb-Multimedia-FastForward-End'></i>\n\n\n\n\n\n\n\n\n&larr;",
+    "<i class='kb kb-Multimedia-Volume-Down-1'></i>\n\n\n\n\n\n\n\n\n&darr;",
+    "<i class='kb kb-Multimedia-Volume-Up-1'></i>\n\n\n\n\n\n\n\n\n&uarr;",
+    "<i class='kb kb-Multimedia-Play-Pause'></i>\n\n\n\n\n\n\n\n\n&rarr;"
+  ]
+]
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/espynn/readme.md b/keyboards/planck/keymaps/espynn/readme.md
new file mode 100644 (file)
index 0000000..8882f46
--- /dev/null
@@ -0,0 +1,18 @@
+# Espynn's keymap for Planck Ortholinear 40% Mechanical Keyboard
+Created by James Folkert: https://twitter.com/trekloFsemaJ
+Added several custom functions to the keymap from the "ab" map. Special thanks to "mollat" for demonstration of macros in their keymap.c
+
+![Layout](keyboard-layout.png "Practical Keymap")
+
+
+* Online keyboard layout editor: http://www.keyboard-layout-editor.com/
+* [JSON of raw layout] (layout.json "JSON of raw layout")
+
+# Notes
+* Simultaneous RAISE+LOWER enters CUSTOM layer. Several custom keymaps are here
+* I disregarded the advice of Jack and used macros for passwords. I accept my fate. These have been abstracted to macros 2, 3, and 4
+* add your mobile and email to the keymap before make
+* RAISE and LOWER also acts as PgUp and PgDn when tapped.
+* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users. (not sure if this works)
+* Bracket/ paran/ brace keys are placed in the center of the keyboard for programmer's convenience.
\ No newline at end of file