From b2d4969f8f49654f79b8747f08ec30aa84cf8ba7 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 16 Aug 2015 17:56:56 -0400 Subject: atomic --- keyboard/atomic/PCB_GUIDE.md | 110 +++++++++ keyboard/atomic/README.md | 56 +++++ keyboard/atomic/__avr_gdbinit | 6 + keyboard/atomic/analog.c | 53 ++++ keyboard/atomic/analog.h | 36 +++ keyboard/atomic/common_keymaps/keymap_brett.c | 42 ++++ keyboard/atomic/common_keymaps/keymap_dotcom.c | 34 +++ keyboard/atomic/common_keymaps/keymap_jack.c | 50 ++++ keyboard/atomic/common_keymaps/keymap_joe.c | 83 +++++++ keyboard/atomic/common_keymaps/keymap_matthew.c | 70 ++++++ keyboard/atomic/common_keymaps/keymap_nathan.c | 153 ++++++++++++ keyboard/atomic/common_keymaps/keymap_peasant.c | 51 ++++ keyboard/atomic/common_keymaps/keymap_reed.c | 74 ++++++ keyboard/atomic/common_keymaps/keymap_sean.c | 57 +++++ keyboard/atomic/common_keymaps/keymap_shane.c | 98 ++++++++ keyboard/atomic/common_keymaps/keymap_simon.c | 44 ++++ keyboard/atomic/common_keymaps/keymap_tim.c | 44 ++++ keyboard/atomic/common_keymaps/keymap_wilba.c | 56 +++++ keyboard/atomic/extended_keymap_common.c | 208 ++++++++++++++++ keyboard/atomic/extended_keymap_common.h | 177 ++++++++++++++ .../extended_keymaps/extended_keymap_austin.c | 50 ++++ .../extended_keymaps/extended_keymap_charlie.c | 54 +++++ .../extended_keymaps/extended_keymap_daniel.c | 48 ++++ .../extended_keymaps/extended_keymap_default.c | 79 ++++++ .../extended_keymaps/extended_keymap_dzobert.c | 49 ++++ .../atomic/extended_keymaps/extended_keymap_jack.c | 188 ++++++++++++++ .../atomic/extended_keymaps/extended_keymap_joe.c | 90 +++++++ .../atomic/extended_keymaps/extended_keymap_kyle.c | 49 ++++ .../extended_keymaps/extended_keymap_numpad.c | 26 ++ keyboard/atomic/flash-pcb.sh | 3 + keyboard/atomic/matrix_center.c | 269 +++++++++++++++++++++ keyboard/atomic/matrix_pcb.c | 231 ++++++++++++++++++ 32 files changed, 2638 insertions(+) create mode 100644 keyboard/atomic/PCB_GUIDE.md create mode 100644 keyboard/atomic/README.md create mode 100644 keyboard/atomic/__avr_gdbinit create mode 100644 keyboard/atomic/analog.c create mode 100644 keyboard/atomic/analog.h create mode 100644 keyboard/atomic/common_keymaps/keymap_brett.c create mode 100644 keyboard/atomic/common_keymaps/keymap_dotcom.c create mode 100644 keyboard/atomic/common_keymaps/keymap_jack.c create mode 100644 keyboard/atomic/common_keymaps/keymap_joe.c create mode 100644 keyboard/atomic/common_keymaps/keymap_matthew.c create mode 100644 keyboard/atomic/common_keymaps/keymap_nathan.c create mode 100644 keyboard/atomic/common_keymaps/keymap_peasant.c create mode 100644 keyboard/atomic/common_keymaps/keymap_reed.c create mode 100644 keyboard/atomic/common_keymaps/keymap_sean.c create mode 100644 keyboard/atomic/common_keymaps/keymap_shane.c create mode 100644 keyboard/atomic/common_keymaps/keymap_simon.c create mode 100644 keyboard/atomic/common_keymaps/keymap_tim.c create mode 100644 keyboard/atomic/common_keymaps/keymap_wilba.c create mode 100644 keyboard/atomic/extended_keymap_common.c create mode 100644 keyboard/atomic/extended_keymap_common.h create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_austin.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_charlie.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_daniel.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_default.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_dzobert.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_jack.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_joe.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_kyle.c create mode 100644 keyboard/atomic/extended_keymaps/extended_keymap_numpad.c create mode 100755 keyboard/atomic/flash-pcb.sh create mode 100644 keyboard/atomic/matrix_center.c create mode 100644 keyboard/atomic/matrix_pcb.c (limited to 'keyboard') diff --git a/keyboard/atomic/PCB_GUIDE.md b/keyboard/atomic/PCB_GUIDE.md new file mode 100644 index 0000000000..833e144b3b --- /dev/null +++ b/keyboard/atomic/PCB_GUIDE.md @@ -0,0 +1,110 @@ +# Planck Firmware Guide + +## Setting up the environment + +### Windows +1. Install [MHV AVR Tools][mhv] for AVR GCC compiler and [Cygwin][cygwin](or [MinGW][mingw]) for shell terminal. +2. Install [DFU-Programmer][dfu-prog] (the -win one). +3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver. + +### Mac +1. Install [CrossPack](https://www.obdev.at/downloads/crosspack/CrossPack-AVR-20131216.dmg). +2. Install [DFU-Programmer][dfu-prog]. + +### Linux +1. Install AVR GCC with your favorite package manager. +2. Install [DFU-Programmer][dfu-prog]. + +## Using the built-in functions + +Here is a list of some of the functions avaiable from the command line: + +* `make clean`: clean the environment - may be required in-between builds +* `make`: compile the code +* `make COMMON=true`: compile with the common (non-extended) keymap +* `make KEYMAP=`: compile with the extended keymap file `extended_keymaps_extended_keymap_.c` +* `make COMMON=true KEYMAP=`: compile with the common keymap file `common_keymaps/keymap_.c` +* `make dfu`: build and flash the layout to the PCB +* `make dfu-force`: build and force-flash the layout to the PCB (may be require for first flash) + +Generally, the instructions to flash the PCB are as follows: + +1. Make changes to the appropriate keymap file +2. Save the file +3. `make clean` +4. Press the reset button on the PCB/press the key with the `RESET` keycode +5. `make dfu` - use the necessary `KEYMAP=` and/or `COMMON=true` arguments here. + +## Extended keymap + +### Keymap + +Unlike the common keymap, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/tmk_keyboard/blob/master/keyboard/planck/extended_keymap_common.h). + +You can use modifiers with keycodes like this: + + LCTL(KC_C) + +Which will generate Ctrl+c. These are daisy-chainable, meaning you can do things like: + + LCTL(LALT(KC_C)) + +That will generate Ctrl+Alt+c. The entire list of these functions is here: + +* `LCTL()`: Left control +* `LSFT()` / `S()`: Left shift +* `LALT()`: Left alt/opt +* `LGUI()`: Left win/cmd +* `RCTL()`: Right control +* `RSFT()`: Right shift +* `RALT()`: Right alt/opt +* `RGUI()`: Right win/cmd + +`S(KC_1)`-like entries are useful in writing keymaps for the Planck. + +### Other keycodes + +A number of other keycodes have been added that you may find useful: + +* `CM_`: the Colemak equivalent of a key (in place of `KC_`), when using Colemak in software (`CM_O` generates `KC_SCLN`) +* `RESET`: jump to bootloader for flashing (same as press the reset button) +* `BL_STEP`: step through the backlight brightnesses +* `BL_<0-15>`: set backlight brightness to 0-15 +* `BL_DEC`: lower the backlight brightness +* `BL_INC`: raise the backlight brightness +* `BL_TOGG`: toggle the backlight on/off + +### Function layers + +The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN` notation (still avaiable, but limited to `FN0`-`FN31`), you can use the `FUNC()` notation. `F()` is a shortcut for this. + +The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action). + +### Macros + +Macros have been setup in the `extended_keymaps/extended_keymaps_default.c` file so that you can use `M()` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`): + + switch(id) { + case 0: + return MACRODOWN(TYPE(KC_A), END); + break; + case 1: + return MACRODOWN(TYPE(KC_B), END); + break; + case 2: + return MACRODOWN(TYPE(KC_C), END); + break; + case 3: + return MACRODOWN(TYPE(KC_D), END); + break; + } + return MACRO_NONE; + +`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke. + +[cygwin]: https://www.cygwin.com/ +[mingw]: http://www.mingw.org/ +[mhv]: https://infernoembedded.com/products/avr-tools +[winavr]: http://winavr.sourceforge.net/ +[crosspack]: http://www.obdev.at/products/crosspack/index.html +[dfu-prog]: http://dfu-programmer.sourceforge.net/ diff --git a/keyboard/atomic/README.md b/keyboard/atomic/README.md new file mode 100644 index 0000000000..ee824d26e0 --- /dev/null +++ b/keyboard/atomic/README.md @@ -0,0 +1,56 @@ +Planck keyboard firmware +====================== +DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). + +## Extended Keymap +If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies: + +- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able) +- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit +- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards) +- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too) + +### Some notes on usage: + +- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix +- Keep an eye on the Makefile - this needs to include the correct files to work +- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent + +## Build + +Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup) + +Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST). + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +####Default +To build with the default keymap, simply move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows: +``` +$ make +``` + +## Keymap +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. + +####**Extended Keymaps** + +To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like: +``` +$ make KEYMAP=[common|jack|] +``` +_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\.c__** + +####**Common Keymaps** + +Building with a common keymap is as simple as adding the COMMON option. Note that only +``` +$ make KEYMAP=[common|jack|] COMMON=true +``` +_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\.c__** + +## Notable TMK forks (which some of the keymap files are from) +- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck) +- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c) +- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck) +- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid) diff --git a/keyboard/atomic/__avr_gdbinit b/keyboard/atomic/__avr_gdbinit new file mode 100644 index 0000000000..afc51e6d19 --- /dev/null +++ b/keyboard/atomic/__avr_gdbinit @@ -0,0 +1,6 @@ +define reset +SIGNAL SIGHUP +end +file planck_lufa.elf +target remote localhost:4242 +break main diff --git a/keyboard/atomic/analog.c b/keyboard/atomic/analog.c new file mode 100644 index 0000000000..49b84ee0e8 --- /dev/null +++ b/keyboard/atomic/analog.c @@ -0,0 +1,53 @@ +// Simple analog to digitial conversion + +#include +#include +#include +#include "analog.h" + + +static uint8_t aref = (1<= 12) return 0; + return adc_read(pgm_read_byte(pin_to_mux + pin)); +#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) + if (pin >= 8) return 0; + return adc_read(pin); +#else + return 0; +#endif +} + +// Mux input +int16_t adc_read(uint8_t mux) +{ +#if defined(__AVR_AT90USB162__) + return 0; +#else + uint8_t low; + + ADCSRA = (1< + +void analogReference(uint8_t mode); +int16_t analogRead(uint8_t pin); +int16_t adc_read(uint8_t mux); + +#define ADC_REF_POWER (1<event; + switch (id) { + case M_Q0: + /* :( | ): */ + return event.pressed ? + MACRO( D(LSFT), T(P), T(9), T(SPC), T(SPC), T(0), T(P), U(LSFT), T(LEFT), T(LEFT), T(LEFT), END ) : + MACRO_NONE; + case M_Q1: + /* (: | :) */ + return event.pressed ? + MACRO( D(LSFT), T(9), T(P), T(SPC), T(SPC), T(P), T(0), U(LSFT), T(LEFT), T(LEFT), T(LEFT), END ) : + MACRO_NONE; + case M_Q2: + /* :) */ + return event.pressed ? + MACRO( D(LSFT), T(P), T(0), U(LSFT), END ) : + MACRO_NONE; + } + return MACRO_NONE; +} diff --git a/keyboard/atomic/common_keymaps/keymap_matthew.c b/keyboard/atomic/common_keymaps/keymap_matthew.c new file mode 100644 index 0000000000..56e7003a97 --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_matthew.c @@ -0,0 +1,70 @@ +// by Matthew Pepers - https://github.com/pepers + +/* grid planck layout - modified programmer dvorak +,-----------------------------------------------------------------------------------------------. +| pause | @ | | | ^ | | | | | * | # | $ | del | +| esc | ; : | , < | . > | P | Y | F | G | G | C | R | bkspc | +| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | +|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------| +| & | / | { | ( | [ | = | ! | ] | ) | } | \ | + | +| ` ~ | A | O | E | U | I | D | H | T | N | S | - _ | +| % | 7 | 5 | 3 | 1 | 9 | 0 | 2 | 4 | 6 | 8 | ? | +|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------| +| | | | | | | | | | | | prtsc | +| tab | ' " | Q | J | K | X | B | M | W | V | Z | retrn | +| | | | | | | | | | | | insrt | +|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------| +| | | | | | | | | | | | | +| lctrl | lgui | lalt | ralt | lower | shift | space | raise | left | down | up | right | +| | | | | | | | | home | pgdn | pgup | end | +`-----------------------------------------------------------------------------------------------' +*/ + +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: dvorak */ + [0] = KEYMAP_GRID( ESC, SCLN, COMM, DOT, P, Y, F, G, C, R, L, BSPC, \ + GRV, A, O, E, U, I, D, H, T, N, S, MINS, \ + TAB, QUOT, Q, J, K, X, B, M, W, V, Z, ENT, \ + LCTL, LGUI, LALT, RALT, FN1, LSFT, SPC, FN2, LEFT, DOWN, UP, RGHT), + + /* 1: lower (FN1) */ + [1] = KEYMAP_GRID( F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, \ + FN17, 7, 5, 3, 1, 9, 0, 2, 4, 6, 8, FN18, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, INS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGDN, PGUP, END), + + /* 2: raise (FN2) */ + [2] = KEYMAP_GRID(PAUS, FN19, FN20, FN21, TRNS, TRNS, TRNS, TRNS, FN22, FN23, FN24, DEL, \ + FN10, SLSH, FN11, FN12, LBRC, EQL, FN13, RBRC, FN14, FN15, BSLS, FN16, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(1), // lower Fn layer + [2] = ACTION_LAYER_MOMENTARY(2), // raise Fn layer + + // lower row1 + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_5), // % + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_SLASH), // ? + + // raise row0 + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_2), // @ + [20] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLASH), // | + [21] = ACTION_MODS_KEY(MOD_LSFT, KC_6), // ^ + [22] = ACTION_MODS_KEY(MOD_LSFT, KC_8), // * + [23] = ACTION_MODS_KEY(MOD_LSFT, KC_3), // # + [24] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // $ + + // raise row1 + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_7), // & + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRACKET), // { + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_9), // ( + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_1), // ! + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_0), // ) + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRACKET), // } + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_EQUAL), // + +}; diff --git a/keyboard/atomic/common_keymaps/keymap_nathan.c b/keyboard/atomic/common_keymaps/keymap_nathan.c new file mode 100644 index 0000000000..5a0900b66d --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_nathan.c @@ -0,0 +1,153 @@ +// Author: Nathan Ross Powell +// https://github.com/nathanrosspowell/tmk_keyboard/blob/planck-jack/keyboard/planck/keymap_nathan.c + +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: main layer + * ,-----------------------------------------------------------------------. + * |Tab | q | w | e | r | t | y | u | i | o | p | BS | + * |-----------------------------------------------------------------------| + * |Ctrl | a | s | d | f | g | h | j | k | l | ; | Ret | + * |-----------------------------------------------------------------------| + * |Shift| z | x | c | v | b | n | m | [ | ( | { | < | + * |-----------------------------------------------------------------------| + * |Meta | \ | / | Alt |Lower|Space|Space|Upper|Left |Down | Up |Right| + * `-----------------------------------------------------------------------' + */ + [0] = KEYMAP_GRID( + TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, + LCTL, A, S, D, F, G, H, J, K, L, SCLN, ENT, + RSFT, Z, X, C, V, B, N, M, LBRC, FN10, FN11, FN12, + LGUI, BSLS, SLSH, LALT, FN0, SPC, SPC, FN1, LEFT, DOWN, UP, RGHT), + + /* 1: fn left/lower layer + * The top row are Visual Studio combos: + * 'Run', 'Breakpoint', 'Step over', 'Step into', 'Set cursor to line' + * 2nd row are key combos: + * 'ctrl-alt-delete', 'ctrl-shift-escape' + * 3rd row are macros keys: + * 'P0' - 'P5' execute a script on Windows machines + * ,-----------------------------------------------------------------------. + * | ESC | F5 | F9 | F10 | F11 |S+F11|CSF10|NLock|Num7 |Num8 |Num9 | Del | + * |-----------------------------------------------------------------------| + * | |C/A/D|C/S/E| Ins |Print|Pause|SLock|Num0 |Num4 |Num5 |Num6 |Num= | + * |-----------------------------------------------------------------------| + * | | P0 | P1 | P2 | P3 | P4 | P5 |Num. |Num1 |Num2 |Num3 |Num/ | + * |-----------------------------------------------------------------------| + * | |User | | | | | | |Home |PgDn |PgUp | End | + * `-----------------------------------------------------------------------' + */ + [1] = KEYMAP_GRID( + ESC, F5, F9, F10, F11, FN30, FN31, NLCK, P7, P8, P9, DEL, + TRNS, FN16, FN17, INS, PSCR, PAUS, SLCK, P0, P4, P5, P6, PEQL, + TRNS, FN2, FN3, FN4, FN5, FN6, FN7, PDOT, P1, P2, P3, PSLS, + TRNS, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGDN, PGUP, END ), + + /* 2: fn right/raise layer + * ,-----------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 |F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-----------------------------------------------------------------------| + * | | ! | @ | # | $ | % | ^ | & | * | - | + | = | + * |-----------------------------------------------------------------------| + * | | _ | ' | " | ` | ~ | , | . | ] | ) | } | > | + * |-----------------------------------------------------------------------| + * | |NextT|PrevT| | | | Esc | |Mute |Vol- |Vol+ | P/P | + * `-----------------------------------------------------------------------' + */ + [2] = KEYMAP_GRID( + F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + TRNS, FN18, FN19, FN20, FN21, FN22, FN23, FN24, FN25, MINS, FN26, PAST, + TRNS, FN27, QUOT, FN28, GRV, FN29, COMM, DOT, RBRC, FN13, FN14, FN15, + TRNS, MNXT, MPRV, TRNS, TRNS, TRNS, ESC, TRNS, MUTE, VOLD, VOLU, MPLY ), +}; + +enum macro_id { + M_P0, + M_P1, + M_P2, + M_P3, + M_P4, + M_P5, + M_USERNAME +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), // left/lower layer + [1] = ACTION_LAYER_MOMENTARY(2), // right/raise layer + // Program macros + [2] = ACTION_MACRO(M_P0), + [3] = ACTION_MACRO(M_P1), + [4] = ACTION_MACRO(M_P2), + [5] = ACTION_MACRO(M_P3), + [6] = ACTION_MACRO(M_P4), + [7] = ACTION_MACRO(M_P5), + [8] = ACTION_MACRO(M_USERNAME), + // Braces + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_9), // ( + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // { + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_COMMA), // < + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_0), // ) + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // } + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT), // > + // Combo + [16] = ACTION_MODS_KEY(MOD_LALT | MOD_LCTL, KC_DEL), // Ctrl+Alt+Delete + [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_ESC), // Ctrl+Shft+Escape + // Symbols + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_1), // ! + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_2), // @ + [20] = ACTION_MODS_KEY(MOD_LSFT, KC_3), // # + [21] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // $ + [22] = ACTION_MODS_KEY(MOD_LSFT, KC_5), // % + [23] = ACTION_MODS_KEY(MOD_LSFT, KC_6), // ^ + [24] = ACTION_MODS_KEY(MOD_LSFT, KC_7), // & + [25] = ACTION_MODS_KEY(MOD_LSFT, KC_8), // * + [26] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // + + [27] = ACTION_MODS_KEY(MOD_LSFT, KC_MINUS), // _ + [28] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOTE), // " + [29] = ACTION_MODS_KEY(MOD_LSFT, KC_GRAVE), // ~ + // Debugging + [30] = ACTION_MODS_KEY(MOD_LSFT, KC_F11), // Step into + [31] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F10), // Set cursor to line + }; + +// Run a script and pass a key number to it. This is Windows specific and the script needs to be on your path. +// *open run dialog* keypress.py [PRG_NUM] +#define ADD_PYTHON_PROGRAM_ON_WIN( PRG_NUM ) MACRO( D(LGUI), T(R), U(LGUI), W(100), T(K), T(E), T(Y), T(P), T(R), T(E), T(S), T(S), T(DOT), T(P), T(Y), T(SPC), T(PRG_NUM), END ) +// *return* +#define RUN_PYTHON_PROGRAM_ON_WIN MACRO( T(ENT), END ) + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + keyevent_t event = record->event; + switch (id) { + case M_P0: + return event.pressed ? + ADD_PYTHON_PROGRAM_ON_WIN( 0 ) : + RUN_PYTHON_PROGRAM_ON_WIN; + case M_P1: + return event.pressed ? + ADD_PYTHON_PROGRAM_ON_WIN( 1 ) : + RUN_PYTHON_PROGRAM_ON_WIN; + case M_P2: + return event.pressed ? + ADD_PYTHON_PROGRAM_ON_WIN( 2 ) : + RUN_PYTHON_PROGRAM_ON_WIN; + case M_P3: + return event.pressed ? + ADD_PYTHON_PROGRAM_ON_WIN( 3 ) : + RUN_PYTHON_PROGRAM_ON_WIN; + case M_P4: + return event.pressed ? + ADD_PYTHON_PROGRAM_ON_WIN( 4 ) : + RUN_PYTHON_PROGRAM_ON_WIN; + case M_P5: + return event.pressed ? + ADD_PYTHON_PROGRAM_ON_WIN( 5 ) : + RUN_PYTHON_PROGRAM_ON_WIN; + case M_USERNAME: + return event.pressed ? + MACRO( T(N), T(A), T(T), T(H), T(A), T(N), T(R), T(O), T(S), T(S), T(P), T(O), T(W), T(E), T(L), T(L), END ) : + MACRO_NONE; + } + return MACRO_NONE; +} diff --git a/keyboard/atomic/common_keymaps/keymap_peasant.c b/keyboard/atomic/common_keymaps/keymap_peasant.c new file mode 100644 index 0000000000..ddacb614e6 --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_peasant.c @@ -0,0 +1,51 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP( /* Native */ + ESC, Q, W, E, R, T, Y, U, I, O, P, FN2, + BSPC, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + TAB, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, + DEL, LCTL, NO, LSFT, LALT, SPC, NO, LEFT, DOWN, UP, RGHT), + [1] = KEYMAP( /* QWERTY->PHOTOSHOP */ + DELETE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, FN1, + O, G, S, U, T, FN27, F21, F10, F11, F7, F8, F9, + TAB, FN4, FN5, FN6, F1, FN7, F18, F19, F23, F20, F22, FN9, + COMM, DOT, FN10, FN11, FN3, SPC, FN12, F2, FN8, F3, F14), + [2] = KEYMAP( /* 2: FN3 PHOTOSHOP */ + ESC, FN25, FN26, NO, NO, NO, NO, NO, NO, NO, NO, NO, + NO, NO, NO, NO, NO, NO, NO, NO, NO, FN19, FN20, FN21, + C, NO, FN22, FN5, NO, FN23, NO, NO, NO, NO, FN13, NO, + FN14, FN15, FN16, FN17, FN3, SPC, FN18, NO, NO, F24, NO), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_DEFAULT_LAYER_SET(0), // set Qwerty layout + [2] = ACTION_DEFAULT_LAYER_SET(1), // set Photoshop presets + [3] = ACTION_LAYER_ON_OFF(2), // Photoshop function layer + + [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9), // photo folder AHK + [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I), // select inverse + [6] = ACTION_MODS_KEY(MOD_LSFT, KC_M), // marquee select + [7] = ACTION_MODS_KEY(MOD_LALT, KC_BSPC), // fill + [8] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_X), // warp + [9] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT | MOD_LSFT, KC_F12), // merge all new layer + [10] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS), // zoom out + [11] = ACTION_MODS_KEY(MOD_LCTL, KC_H), // RBG sliders + [12] = ACTION_MODS_KEY(MOD_LCTL, KC_S), // save + [13] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F5), // layer mask from transparancy + [14] = ACTION_MODS_KEY(MOD_LALT, KC_LBRC), // prev layer + [15] = ACTION_MODS_KEY(MOD_LALT, KC_RBRC), // next layer + [16] = ACTION_MODS_KEY(MOD_LCTL, KC_EQL), // zoom in + [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_H), // HSV sliders + [18] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F11), // save as PNG + [19] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F7), // gaussian blur + [20] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F8), // motion blur + [21] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_X), // liquify filter + [22] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // prev layer blending + [23] = ACTION_MODS_KEY(MOD_LSFT | MOD_LALT, KC_N), // normal layer blending + [24] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // next layer blending + [25] = ACTION_MODS_KEY(MOD_LCTL, KC_Z), // step back + [26] = ACTION_MODS_KEY(MOD_LCTL, KC_Y), // step forward + [27] = ACTION_MODS_KEY(MOD_LCTL, KC_R), // rasterize + +}; diff --git a/keyboard/atomic/common_keymaps/keymap_reed.c b/keyboard/atomic/common_keymaps/keymap_reed.c new file mode 100644 index 0000000000..1aa24e10de --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_reed.c @@ -0,0 +1,74 @@ +#include "keymap_common.h" + +/* + * BUILD: + * Simply run the command below in the keyboard/planck directory + * to build against this keymap + * + * make KEYMAP=reed COMMON_KEYMAP=true + * + * + * DETAILS: + * + * This layout works off of Jack's layout, making some changes that I + * feel significantly improve the function of the keyboard. Major changes + * include adding a "gaming mode" that will allow users to still access + * the number keys 1 through 4 easily for games that require it. Also + * included is the ability to use the tap/hold function for easy use of + * right shift and thumb shift with their tapped companions. + * + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP_GRID( /* Reed */ + ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5, + LCTL, CAPS, LALT, LGUI, FN2, FN7, SPC, FN1, LEFT, DOWN, UP, RGHT), + +[1] = KEYMAP_GRID( /* Reed EXTREME GAMING */ + ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5, + LCTL, 1, 2, 3, 4, SPC, FN2, FN1, LEFT, DOWN, UP, RGHT), + +[2] = KEYMAP_GRID( /* Reed RAISE */ + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, + TRNS, FN3, FN4, PAUSE, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS, + TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, MNXT, VOLD, VOLU, MPLY), + +[3] = KEYMAP_GRID( /* Reed LOWER */ + TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, DEL, + TRNS, TRNS, INS, HOME, PGUP, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, + TRNS, TRNS, DEL, END, PGDN, F11, F12, F13, TRNS, VOLD, VOLU, TRNS, + TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, MPRV, MUTE, MPLY, MNXT), +}; +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + // Actions for the tap/hold modifiers listed above + [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), + [7] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPC), + + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8), + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9), + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0), + [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), + [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), + + [29] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE), +}; diff --git a/keyboard/atomic/common_keymaps/keymap_sean.c b/keyboard/atomic/common_keymaps/keymap_sean.c new file mode 100644 index 0000000000..4fe07f701a --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_sean.c @@ -0,0 +1,57 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP( /* Matrix Dvorak */ + QUOT, COMM, DOT, P, Y, SLSH, EQL, F, G, C, R, L, + A, O, E, U, I, ESC, BSPC, D, H, T, N, S, + SCLN, Q, J, K, X, TAB, ENT, B, M, W, V, Z, + LSFT, LCTL, LALT, LGUI, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), + + [1] = KEYMAP( /* Matrix Qwerty */ + Q, W, E, R, T, QUOT, EQL, Y, U, I, O, P, + A, S, D, F, G, ESC, BSPC, H, J, K, L, SCLN, + Z, X, C, V, B, TAB, ENT, N, M, COMM, DOT, SLSH, + LSFT, LCTL, LALT, LGUI, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), + + [2] = KEYMAP( /* fn1 lower */ + F1, F2, F3, F4, F5, TRNS, TRNS, F6, F7, F8, F9, F10, + 1, 2, 3, 4, 5, F18, DEL, 6, 7, 8, 9, 0, + FN3, FN4, TRNS, GRV, MINS, TRNS, TRNS, BSLS, LBRC, RBRC, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN5, HOME, PGDN, PGUP, END), + + [3] = KEYMAP( /* fn2 raise */ + F1, F2, F3, F4, F5, TRNS, TRNS, F6, F7, F8, F9, F10, + F11, F12, F13, F14, F15, F18, DEL, F16, F17, F18, F19, F20, + FN3, FN4, TRNS, TRNS, TRNS, TRNS, TRNS, EJCT, PWR, LSFT,PAUSE, RSFT, + LEFT, DOWN, UP, RGHT, FN5, TRNS, TRNS, MNXT, VOLD, VOLU, MUTE), + + [4] = KEYMAP( /* lower + raise */ + LEFT, DOWN, UP, RGHT, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, UP, RGHT, + HOME, PGDN, PGUP, END, TRNS, F18, DEL, TRNS, HOME, PGDN, PGUP, END, + FN3, FN4, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, EJCT, PWR, MPLY, RSFT, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MNXT, VOLD, VOLU, MUTE), +}; +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay LOWER + [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay RAISE + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + [5] = ACTION_LAYER_MOMENTARY(4), // to Fn overlay LOWER + RAISE + + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8), + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9), + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0), + [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), + [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), +}; diff --git a/keyboard/atomic/common_keymaps/keymap_shane.c b/keyboard/atomic/common_keymaps/keymap_shane.c new file mode 100644 index 0000000000..8d5ad68753 --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_shane.c @@ -0,0 +1,98 @@ +#include "keymap_common.h" +#include "action_layer.h" +#include "action.h" +#include "action_util.h" + +/* + Shane's Planck Layout + http://www.keyboard-layout-editor.com/#/layouts/015d9011102619d7695c86ffe57cf441 +*/ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP_AND_SWAP( /* Base */ + TAB, Q, W, E, R, T, Y, U, I, O, P, MINS, + LCTL, A, S, D, F, G, H, J, K, L, SCLN, BSPC, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5, + /*ALPHA*/FN3, /*HYPER*/ /*SUPER*/LGUI, /*META*/LALT, LCTL, FN2, FN6, FN1, LEFT, DOWN, UP, RGHT), + [2] = KEYMAP_AND_SWAP( /* More modifiers */ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RCTL, RALT, RGUI, TRNS), + [4] = KEYMAP_AND_SWAP( /* WASD */ + TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, LEFT, DOWN, RIGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + [6] = KEYMAP_AND_SWAP( /* Raise/FN1 */ + FN23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, EQL, + TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, ENT, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, BSLS, TRNS, + PAUS, TRNS, TRNS, TRNS, TRNS, BSPC, TRNS, MUTE, PGUP, PGDN, MNXT), + [8] = KEYMAP_AND_SWAP( /* Lower/FN2 */ + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN19, FN20, TRNS, + TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN24, FN25, LBRC, RBRC, TRNS, TRNS, + FN4, TRNS, TRNS, TRNS, TRNS, ENT, TRNS, MPLY, VOLD, VOLU, MPRV), +}; + +enum function_id { + SPACE_FN, +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch (id) { + case SPACE_FN: + if (record->event.pressed) { + // Change the keyboard maps. + // Whatever even layer's are on, turn on the odd one's too. + for (uint8_t i = 0; i < 9; i += 2) { + if (layer_state & (1UL << i)) + layer_on(i + 1); + } + layer_on(1); + } else { + // turn off all the even layers. + for (uint8_t i = 0; i < 9; i += 2) + layer_off(i + 1); + + if (record->tap.count != 0) { + // Space was tapped rather than used like a modifier. + // So send a space up and down event. + add_key(KC_SPC); + send_keyboard_report(); + del_key(KC_SPC); + send_keyboard_report(); + } + } + break; + } +} + + + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(6), // to fist Fn overlay + [2] = ACTION_LAYER_MOMENTARY(8), // to second Fn overlay + [3] = ACTION_LAYER_TOGGLE(2), // toggle more modifiers + [4] = ACTION_LAYER_TOGGLE(4), // toggle wasd + [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), + [6] = ACTION_FUNCTION_TAP(SPACE_FN), + + [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), + [20] = ACTION_MODS_KEY(MOD_LSFT, KC_0), + [21] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), + [22] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), + [23] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), + [24] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), + [25] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), + [26] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), +}; \ No newline at end of file diff --git a/keyboard/atomic/common_keymaps/keymap_simon.c b/keyboard/atomic/common_keymaps/keymap_simon.c new file mode 100644 index 0000000000..37951364be --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_simon.c @@ -0,0 +1,44 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Jack */ + ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + TAB, A, S, D, F, G, H, J, K, L, DOT, ENT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SCLN, DEL, + LCTL, ENT, LALT, CAPS, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), +[1] = KEYMAP( /* Jack RAISE */ + TRNS, F1, F2, F3, F4, NO, FN11, FN9, FN12, NO, FN14, TRNS, + TRNS, F5, F6, F7, F8, FN16, SLSH, MINS, EQL, LBRC, FN8, TRNS, + TRNS, F9, F10, F11, F12, F15, F16, FN22, SCLN, MINS, QUOT, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +[2] = KEYMAP( /* Jack LOWER */ + FN22, 1, 2, 3, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC, + TRNS, 4, 5, 6, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, + TRNS, 7, 8, 9, 0, FN28, FN15, F7, F8, F9, F10, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay + [2] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay + + [8] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH), + [9] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT), + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8), + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9), + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0), + [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), + [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), + + [29] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE), +}; diff --git a/keyboard/atomic/common_keymaps/keymap_tim.c b/keyboard/atomic/common_keymaps/keymap_tim.c new file mode 100644 index 0000000000..7444f3877b --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_tim.c @@ -0,0 +1,44 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( + ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, + LCTL, LALT, DEL, LGUI, FN2, SPC, FN1, F2, F5, F9, F12), +[2] = KEYMAP( /* RAISE */ + TRNS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, + GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, FN29, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), +[3] = KEYMAP( /* LOWER */ + TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC, + FN22, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, FN29, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay + [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8), + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9), + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0), + [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), + [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), + [29] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT), +}; diff --git a/keyboard/atomic/common_keymaps/keymap_wilba.c b/keyboard/atomic/common_keymaps/keymap_wilba.c new file mode 100644 index 0000000000..9781f8fcd8 --- /dev/null +++ b/keyboard/atomic/common_keymaps/keymap_wilba.c @@ -0,0 +1,56 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Wilba */ + FN27, FN28, FN29, E, R, T, Y, U, I, O, P, BSPC, + TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, + LCTL, LGUI, LALT, RSFT, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), +[1] = KEYMAP( /* Wilba Alternate */ + ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, + TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, + LCTL, LGUI, LALT, RSFT, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), +[2] = KEYMAP( /* Wilba LOWER */ + TRNS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, TRNS, + TRNS, F11, F12, LBRC, RBRC, FN20, EQL, FN23, FN24, MINS, FN21, TRNS, + TRNS, BSLS, GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, FN1, TRNS, TRNS, MNXT, VOLD, VOLU, MPLY), +[3] = KEYMAP( /* Wilba RAISE */ + TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, TRNS, + TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS, + TRNS, FN25, FN22, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS), +}; +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // LOWER + [2] = ACTION_LAYER_MOMENTARY(3), // RAISE + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), // ! + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), // @ + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), // # + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // $ + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), // % + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), // ^ + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), // & + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8), // * + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9), // ( + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0), // ) + + [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), // | + + [26] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE), + + [27] = ACTION_BACKLIGHT_TOGGLE(), + [28] = ACTION_BACKLIGHT_INCREASE(), + [29] = ACTION_BACKLIGHT_DECREASE() + +}; diff --git a/keyboard/atomic/extended_keymap_common.c b/keyboard/atomic/extended_keymap_common.c new file mode 100644 index 0000000000..841b249431 --- /dev/null +++ b/keyboard/atomic/extended_keymap_common.c @@ -0,0 +1,208 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "extended_keymap_common.h" +#include "report.h" +#include "keycode.h" +#include "action_layer.h" +#include "action.h" +#include "action_macro.h" +#include "debug.h" +#include "backlight.h" + + +static action_t keycode_to_action(uint16_t keycode); + + +/* converts key to action */ +action_t action_for_key(uint8_t layer, keypos_t key) +{ + // 16bit keycodes - important + uint16_t keycode = keymap_key_to_keycode(layer, key); + + if (keycode >= 0x0100 && keycode < 0x2000) { + // Has a modifier + action_t action; + // Split it up + action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); + return action; + } else if (keycode >= 0x2000 && keycode < 0x3000) { + // Is a shortcut for function layer, pull last 12bits + return keymap_func_to_action(keycode & 0xFFF); + } else if (keycode >= 0x3000 && keycode < 0x4000) { + action_t action; + action.code = ACTION_MACRO(keycode & 0xFF); + return action; + } else if (keycode >= BL_0 & keycode <= BL_15) { + action_t action; + action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); + return action; + } else if (keycode == BL_DEC) { + action_t action; + action.code = ACTION_BACKLIGHT_DECREASE(); + return action; + } else if (keycode == BL_INC) { + action_t action; + action.code = ACTION_BACKLIGHT_INCREASE(); + return action; + } else if (keycode == BL_TOGG) { + action_t action; + action.code = ACTION_BACKLIGHT_TOGGLE(); + return action; + } else if (keycode == BL_STEP) { + action_t action; + action.code = ACTION_BACKLIGHT_STEP(); + return action; + } else if (keycode == RESET) { + bootloader_jump(); + return; + } + + switch (keycode) { + case KC_FN0 ... KC_FN31: + return keymap_fn_to_action(keycode); +#ifdef BOOTMAGIC_ENABLE + case KC_CAPSLOCK: + case KC_LOCKING_CAPS: + if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { + return keycode_to_action(KC_LCTL); + } + return keycode_to_action(keycode); + case KC_LCTL: + if (keymap_config.swap_control_capslock) { + return keycode_to_action(KC_CAPSLOCK); + } + return keycode_to_action(KC_LCTL); + case KC_LALT: + if (keymap_config.swap_lalt_lgui) { + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_LGUI); + } + return keycode_to_action(KC_LALT); + case KC_LGUI: + if (keymap_config.swap_lalt_lgui) { + return keycode_to_action(KC_LALT); + } + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_LGUI); + case KC_RALT: + if (keymap_config.swap_ralt_rgui) { + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_RGUI); + } + return keycode_to_action(KC_RALT); + case KC_RGUI: + if (keymap_config.swap_ralt_rgui) { + return keycode_to_action(