From 8c794d73fa75fa2f3f985617a2b566974f3b29bf Mon Sep 17 00:00:00 2001 From: folkert4 Date: Fri, 27 Jan 2017 13:51:39 -0500 Subject: [PATCH] Added Espynn's keymap --- keyboards/planck/keymaps/espynn/Makefile | 63 ++++ .../planck/keymaps/espynn/keyboard-layout.jpg | Bin 0 -> 52908 bytes keyboards/planck/keymaps/espynn/keymap.c | 151 ++++++++++ keyboards/planck/keymaps/espynn/layout.json | 271 ++++++++++++++++++ keyboards/planck/keymaps/espynn/readme.md | 18 ++ 5 files changed, 503 insertions(+) create mode 100644 keyboards/planck/keymaps/espynn/Makefile create mode 100644 keyboards/planck/keymaps/espynn/keyboard-layout.jpg create mode 100644 keyboards/planck/keymaps/espynn/keymap.c create mode 100644 keyboards/planck/keymaps/espynn/layout.json create mode 100644 keyboards/planck/keymaps/espynn/readme.md diff --git a/keyboards/planck/keymaps/espynn/Makefile b/keyboards/planck/keymaps/espynn/Makefile new file mode 100644 index 000000000..44a030ba3 --- /dev/null +++ b/keyboards/planck/keymaps/espynn/Makefile @@ -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 index 0000000000000000000000000000000000000000..55e5396bfde7346da254bac1c926a9abe205a05b GIT binary patch literal 52908 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 literal 0 HcmV?d00001 diff --git a/keyboards/planck/keymaps/espynn/keymap.c b/keyboards/planck/keymaps/espynn/keymap.c new file mode 100644 index 000000000..4a3fe32b8 --- /dev/null +++ b/keyboards/planck/keymaps/espynn/keymap.c @@ -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 index 000000000..38ccc3452 --- /dev/null +++ b/keyboards/planck/keymaps/espynn/layout.json @@ -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", + "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" + ], + [ + { + "a": 7, + "f": 3 + }, + "", + { + "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 + ] + }, + "" + ], + [ + { + "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\nShift\n\n\n\n\n\n\nShift" + ], + [ + { + "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", + { + "fa": [ + 2, + 1, + 2, + 0, + 0, + 0, + 0, + 1, + 9, + 6 + ] + }, + "\nZIn\n\n\n\n\n\n\n\n", + { + "fa": [ + 2, + 1, + 2, + 0, + 0, + 0, + 0, + 1, + 9, + 9 + ] + }, + "\nZOut\n\n\n\n\n\n\n\n", + { + "a": 7, + "fa": [ + 9 + ] + }, + "⇓", + { + "a": 4, + "fa": [ + 9, + 5, + 5 + ], + "w": 2 + }, + "\n\n", + { + "a": 7 + }, + "⇑", + { + "a": 4, + "fa": [ + 2 + ] + }, + "\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→" + ] +] \ 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 index 000000000..8882f4601 --- /dev/null +++ b/keyboards/planck/keymaps/espynn/readme.md @@ -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