diff options
58 files changed, 4182 insertions, 209 deletions
| diff --git a/keyboards/clueboard/keymaps/colemak/keymap.c b/keyboards/clueboard/keymaps/colemak/keymap.c new file mode 100644 index 0000000000..6b1fc7c9c6 --- /dev/null +++ b/keyboards/clueboard/keymaps/colemak/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +  /* Keymap _BL: Base Layer (Default Layer) +   */ +[_BL] = KEYMAP( +  F(0),    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_GRV,  KC_BSPC,          KC_PGUP, \ +  KC_TAB,  KC_Q,    KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,    KC_SCLN,     KC_LBRC,  KC_RBRC,  KC_BSLS,                   KC_PGDN, \ +  KC_BSPC, KC_A,    KC_R,   KC_S,   KC_T,   KC_D,   KC_H,   KC_N,   KC_E,   KC_I,    KC_O,  KC_QUOT,  KC_NUHS,  KC_ENT,                             \ +  KC_LSFT, KC_NUBS, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM, KC_DOT,   KC_SLSH,  KC_RO,    KC_RSFT,          KC_UP,            \ +  KC_LCTL, MO(_FL), KC_LGUI,KC_MHEN,          KC_SPC,KC_SPC,                         KC_HENK,  KC_RALT,  KC_RCTL,  KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + +  /* Keymap _FL: Function Layer +   */ +[_FL] = KEYMAP( +  KC_GRV,  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_CAPS,           BL_STEP, \ +  _______, _______, _______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END,   _______,  _______,  _______,                   _______, \ +  KC_DEL,  _______, MO(_CL),_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,   KC_RGHT,  _______,  _______,  _______,                           \ +  _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,          KC_PGUP,         \ +  _______, _______, _______,_______,        _______,_______,                         _______,  _______,  _______,  MO(_FL), KC_HOME, KC_PGDN, KC_END), + +  /* Keymap _CL: Control layer +   */ +[_CL] = KEYMAP( +  _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______, RGB_TOG,             RGB_VAI, \ +  _______, _______, _______,_______,RESET,  _______,_______,_______,_______,_______, _______,  _______,  _______,  _______,                   RGB_VAD, \ +  _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,                         \ +  MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  MO(_FL),          RGB_SAI,          \ +  _______, _______, _______,_______,        RGB_MOD,   RGB_MOD,                            _______,  _______,  _______,  _______, RGB_HUD,    RGB_SAD,    RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N +   of this list. + */ +const uint16_t PROGMEM fn_actions[] = { +  [0] = ACTION_FUNCTION(0),  // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { +  static uint8_t mods_pressed; + +  switch (id) { +    case 0: +      /* Handle the combined Grave/Esc key +       */ +      mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed + +      if (record->event.pressed) { +        /* The key is being pressed. +         */ +        if (mods_pressed) { +          add_key(KC_GRV); +          send_keyboard_report(); +        } else { +          add_key(KC_ESC); +          send_keyboard_report(); +        } +      } else { +        /* The key is being released. +         */ +        if (mods_pressed) { +          del_key(KC_GRV); +          send_keyboard_report(); +        } else { +          del_key(KC_ESC); +          send_keyboard_report(); +        } +      } +      break; +  } +} diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.pngBinary files differ index 2c03af5818..273a49778e 100644 --- a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png +++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.pngBinary files differ index a267ff23d2..5930e38aca 100644 --- a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png +++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.pngBinary files differ deleted file mode 100644 index c8c90cf5c4..0000000000 --- a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png +++ /dev/null diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.pngBinary files differ new file mode 100644 index 0000000000..0c6473abbd --- /dev/null +++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.png diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.pngBinary files differ new file mode 100644 index 0000000000..4488e1b37b --- /dev/null +++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.png diff --git a/keyboards/ergodox/keymaps/deadcyclo/keymap.c b/keyboards/ergodox/keymaps/deadcyclo/keymap.c index 5774511cc7..243ce94e98 100644 --- a/keyboards/ergodox/keymaps/deadcyclo/keymap.c +++ b/keyboards/ergodox/keymaps/deadcyclo/keymap.c @@ -5,8 +5,9 @@  #define BASE 0 // default layer  #define SYMB 1 // symbols -#define MDIA 2 // media keys -#define NAVG 3 // navigation +#define MDIA 2 // media keys and navigation +#define UNI 3  // unicode 1 +#define UNI2 4 // unicode 2  enum macros {    RUN @@ -94,11 +95,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * ,--------------------------------------------------.           ,--------------------------------------------------.   * | Esc/L3 |   1  |   2  |   3  |   4  |   5  |  6   |           |   6  |   7  |   8  |   9  |   0  |   -  |   =/L3 |   * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| - * | Tab/L1 |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \/L1 | + * | Tab/L1 |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L2  |   Y  |   U  |   I  |   O  |   P  |   \/L1 |   * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| - * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2| ctrl/'| + * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  | ctrl/'|   * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------| - * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift | + * | LShift |Z / L4|X / L2|   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |. / L2|/ / L4| RShift |   * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'   *   |Grv/L1|  UNI |AltShf| Lalt | Ralt |                                       | Lalt | Ralt | LEAD |  UNI | ~/L1 |   *   `----------------------------------'                                       `----------------------------------' @@ -114,25 +115,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  // Otherwise, it needs KC_*  [BASE] = KEYMAP(  // layer 0 : default          // left hand -	LT(NAVG,KC_ESC),         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6, +	LT(UNI,KC_ESC),         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_6,          LT(SYMB,KC_TAB),        KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB), -        KC_LCTL,        LT(MDIA, KC_A),         KC_S,   KC_D,   KC_F,   KC_G, -        KC_LSFT,        CTL_T(KC_Z),  KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO), +        KC_LCTL,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G, +        KC_LSFT,        LT(4, KC_Z),  LT(MDIA, KC_X),   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),          LT(SYMB,KC_GRV),LCTL(LSFT(KC_U)),      LALT(KC_LSFT),  KC_RALT,KC_LALT,                                                ALT_T(KC_APP),  KC_HOME,                                                                KC_END,                                                 KC_SPC,KC_TAB,KC_LBRC,          // right hand -		KC_6,     KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,             LT(NAVG,KC_EQL), -	TG(SYMB),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             LT(SYMB, KC_BSLS), -	KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),CTL_T(KC_QUOT), -             MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_RSFT, +		KC_6,     KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,             LT(UNI,KC_EQL), +	TG(MDIA),    KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             LT(SYMB, KC_BSLS), +	KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,CTL_T(KC_QUOT), +	MEH_T(KC_NO),KC_N,   KC_M,   KC_COMM,LT(MDIA, KC_DOT), LT(UNI2, KC_SLSH),   KC_RSFT,  		KC_LALT,  KC_RALT,KC_LEAD,LCTL(LSFT(KC_U)),          LT(SYMB,KC_TILD),               KC_PGUP,        KC_INS,               KC_PGDN, -             KC_RBRC,KC_BSPC, KC_ENT +             KC_RBRC,KC_BSPC, KC_ENT         ), -/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U)) +/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U))     *                                                     * ,--------------------------------------------------.           ,--------------------------------------------------.   * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |   F12  | @@ -177,13 +178,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  /* Keymap 2: Media, mouse and navigation   *   * ,--------------------------------------------------.           ,--------------------------------------------------. - * |        | gg(1)|      |      |      |      |      |           |      |      |      |      |      |      |        | + * |        | gg(1)| gg(2)| gg(3)| gg(4)| gg(5)| gg(6)|           | gg(6)| gg(7)| gg(8)| gg(9)| gg(0)|      |        |   * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|   * |        |      |      | MsUp | RUN  |      |      |           |      |      |      |  Up  |      |      |        |   * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|   * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      | Left | Down | Right|      |  Play  |   * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| - * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        | + * |        |      |      |      |      |      |      |           |      |      | Prev | Next |      |      |        |   * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'   *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |   *   `----------------------------------'                                       `----------------------------------' @@ -209,7 +210,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS,  		F(I3_GO_GROUP_6), F(I3_GO_GROUP_7), F(I3_GO_GROUP_8), F(I3_GO_GROUP_9), F(I3_GO_GROUP_10), KC_TRNS, KC_TRNS,         KC_TRNS,  KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS,  KC_TRNS, KC_TRNS,                   KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_MPLY, -       KC_TRNS,  KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT,  KC_TRNS, KC_TRNS, +       KC_TRNS,  KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS,  KC_TRNS, KC_TRNS,                            KC_VOLU, KC_VOLD, KC_MUTE,  KC_TRNS, KC_TRNS,         KC_TRNS, KC_TRNS,         KC_TRNS, @@ -238,7 +239,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS,   *                                 `--------------------'       `--------------------'   */  // Unicode -[NAVG] = KEYMAP( +[UNI] = KEYMAP(  		KC_TRNS, UC(0x250c), UC(0x2510), UC(0x2514), UC(0x2518), UC(0x2502), UC(0x2500),  		KC_TRNS, F(EMOJI_SHRUG), F(EMOJI_YAY), F(EMOJI_HUG), F(EMOJI_SMILE), F(EMOJI_SMILE2), KC_TRNS,  		KC_TRNS, F(EMOJI_HMM1), F(EMOJI_HMM2), F(EMOJI_BEAR1), F(EMOJI_BEAR2), F(EMOJI_FUU), @@ -257,6 +258,48 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS,  		KC_TRNS,  		KC_TRNS, KC_TRNS, KC_TRNS  ), + +/* Keymap 4: Unicode 2  + * + * ,--------------------------------------------------.           ,--------------------------------------------------. + * |        |  ¹   |  ²   |  ³   |  ⁴   |  ⁵   |  ⁶   |           |  ⁶   |  ⁷   |  ⁸   |  ⁹   |  ⁰   |  ℃   |   ™    | + * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| + * |        |  ₁   |  ₂   |  ₃   |  ₄   |  ₅   |  ₆   |           |  ₆   |  ₇   |  ₈   |  ₉   |  ₀   |  ⁄   |        | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * |        |  ⅞   |  ⅝   |  ⅜   |  ⅛   |  ⅚   |------|           |------|  ⅓   |  ⅒   |  ⅑   |  ⅐   |  ¾   |        | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * |        |      |      |  ⅗   |  ⅖   |  ⅕   |  ⅔   |           |  ¼   |  ⅙   |  ⅘   |  ½   |      |      |        | + * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' + *   |      |      |      |      |      |                                       |      |      |      |      |      | + *   `----------------------------------'                                       `----------------------------------' + *                                        ,-------------.       ,-------------. + *                                        |      |      |       |      |      | + *                                 ,------|------|------|       |------+------+------. + *                                 |      |      |      |       |      |      |      |  + *                                 |      |      |------|       |------|      |      | + *                                 |      |      |      |       |      |      |      | + *                                 `--------------------'       `--------------------' + */ +// Unicode 2    +[UNI2] = KEYMAP( +		KC_TRNS, UC(0x00b9), UC(0x00b2), UC(0x00b3), UC(0x2074), UC(0x2075), UC(0x2076), +		KC_TRNS, UC(0x2081), UC(0x2082), UC(0x2083), UC(0x2084), UC(0x2085), UC(0x2086), +		KC_TRNS, UC(0x215e), UC(0x215d), UC(0x215c), UC(0x215b), UC(0x215a), +		KC_TRNS, KC_TRNS, KC_TRNS, UC(0x2157), UC(0x2156), UC(0x2155), UC(0x2154), +		KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +		KC_TRNS, KC_TRNS, +                                                    KC_TRNS, +                                  KC_TRNS, KC_TRNS, KC_TRNS, +    // right hand +		UC(0x2076),  UC(0x2077), UC(0x2078), UC(0x2079), UC(0x2070), UC(0x2103), UC(0x2122), +		UC(0x2086),  UC(0x2087), UC(0x2088), UC(0x2089), UC(0x2080), UC(0x2044), KC_TRNS, +		UC(0x2153), UC(0x2152), UC(0x2151), UC(0x2150), UC(0x00be), KC_TRNS, +		UC(0x00bc),  UC(0x2159), UC(0x2158), UC(0x00bd), KC_TRNS, KC_TRNS, KC_TRNS, +       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +		KC_TRNS, KC_TRNS, +		KC_TRNS, +		KC_TRNS, KC_TRNS, KC_TRNS +),  };  const uint16_t PROGMEM fn_actions[] = { @@ -506,8 +549,11 @@ void matrix_scan_user(void) {        #endif        break;      case 4: -      ergodox_right_led_1_on(); // TODO: Make a fourth layer +      ergodox_right_led_1_on();        ergodox_right_led_3_on(); +      #ifdef RGBLIGHT_ENABLE +       rgblight_setrgb(0xff,0x00,0xff); +      #endif        break;      default:        // none diff --git a/keyboards/ergodox/keymaps/deadcyclo/readme.md b/keyboards/ergodox/keymaps/deadcyclo/readme.md index fa41f0ec16..c839f99c90 100644 --- a/keyboards/ergodox/keymaps/deadcyclo/readme.md +++ b/keyboards/ergodox/keymaps/deadcyclo/readme.md @@ -51,10 +51,16 @@ provides standard media control keys, and default arrow keys.  ## Layer 3 - Unicode -[](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289) +[](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)  The unicode layer provides keys for directly typing unicode (utf-8) +## Layer 4 - Unicode 2 + +[](http://www.keyboard-layout-editor.com/#/gists/7b2241110ab8311d9668a0798f3baf4a) + +The unicode 2 layer provides keys for directly typing unicode (utf-8) +  # Changelog  - 02.01.2017 Added delete key on second layer @@ -63,6 +69,7 @@ The unicode layer provides keys for directly typing unicode (utf-8)  - 24.01.2017 Added unicode keys. Added shrug hug and yay. Moved Navigation to layer 2  - 25.01.2017 Added lots of new emojis and some unicode keys  - 27.01.2017 Added new unicode keys and shortcut for ibus unicode composer key (CTRL+SHIFT+U) +- 11.03.2017 Added additional unicode layer. Moved some layer switch keys to more sane locations  # TODO diff --git a/keyboards/ergodox/keymaps/guni/keymap.c b/keyboards/ergodox/keymaps/guni/keymap.c index f33829b8a4..9d9191f627 100644 --- a/keyboards/ergodox/keymaps/guni/keymap.c +++ b/keyboards/ergodox/keymaps/guni/keymap.c @@ -170,7 +170,7 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)      if (id == TEENSY_KEY) {          clear_keyboard();          print("\n\nJump to bootloader... "); -        _delay_ms(250); +        wait_ms(250);          bootloader_jump(); // should not return          print("not supported.\n");      } diff --git a/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c new file mode 100644 index 0000000000..ab2464c424 --- /dev/null +++ b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c @@ -0,0 +1,408 @@ +#include "ergodox.h" +#include "action_layer.h" +#include "keymap_extras/keymap_german.h" + +#define UM 0 + +#define L0   0      // layer_0 +#define L1   1      // layer_1   +#define L2   2      // layer_2 +#define L3   3      // layer_3 +#define L4   4      // layer_4 +#define L5   5      // layer_5 +#define L6   6      // layer_6 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* +    .------------------------------------.------------------------------------. +    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL| +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |VOL- |VOL+ | !MUTE |PLAY | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     |-----| !-----|     !     ! +                      ! CTL !     ! ALT ! ! CTL !     ! ALT ! +                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE| +                      '-----------------' '-----------------' + */ +[L0] = KEYMAP( + KC_ESC,  DE_1,    DE_2,     DE_3,    DE_4,     DE_5,    DE_ACUT, + KC_TAB,  DE_X,    DE_V,     DE_L,    DE_C,     DE_W,    KC_PSCR, + MO(1),   DE_U,    DE_I,     DE_A,    DE_E,     DE_O, + KC_LSFT, DE_UE,   DE_OE,    DE_AE,   DE_P,     DE_Z,    KC_SPACE, + KC_LCTL, KC_LGUI, KC_LALT,  MO(3),   MO(2), + /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     KC_VOLD, KC_VOLU, + /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     /*-*/    KC_TRNS, + /*-*/    /*-*/    /*-*/     /*-*/    CTL_T(KC_ENTER), MO(1),   ALT_T(KC_TAB), + DE_GRV,  DE_6,    DE_7,     DE_8,    DE_9,     DE_0,    DE_CIRC, + KC_TRNS, DE_K,    DE_H,     DE_G,    DE_F,     DE_Q,    DE_SS, + /*-*/    DE_S,    DE_N,     DE_R,    DE_T,     DE_D,    DE_Y, + KC_TRNS, DE_B,    DE_M,     DE_COMM, DE_DOT,   DE_J,    KC_RSFT, + /*-*/    /*-*/    MO(2),    MO(3),   KC_APP,   KC_RALT, KC_RCTL, + KC_MUTE, KC_MPLY, + KC_TRNS, + CTL_T(KC_ESC), MO(1),   ALT_T(KC_SPACE) +), +/* +    .------------------------------------.------------------------------------. +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |     | +                      '-----------------' '-----------------' + */ +[L1] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS, + KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, + KC_TRNS, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, 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, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_TRNS, + /*-*/    DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT, + KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS, + /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* + * .------------------------------------.------------------------------------. + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + *  |    |    |    |    |    |                     !    |    |    |    |    | + *  '------------------------'                     '------------------------' + *                         .-----------. .-----------. + *                         |     |     | !     |     | + *                   .-----+-----+-----! !-----+-----+-----. + *                   !     !     |     | !     |     !     ! + *                   !     !     !-----! !-----!     !     ! + *                   |     |     |     | !     |     |  0  | + *                   '-----------------' '-----------------' + */ +[L2] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_TRNS, + KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, 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, DE_7,    DE_8,    DE_9,    KC_TRNS, KC_TRNS, + /*-*/    KC_TRNS, DE_4,    DE_5,    DE_6,    KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, DE_1,    DE_2,    DE_3,    KC_TRNS, KC_TRNS, + /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, DE_0 +), +/* + * .------------------------------------.------------------------------------. + * |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + *  |    |    |    |    |    |                     !    |    |    |    |    | + *  '------------------------'                     '------------------------' + *                         .-----------. .-----------. + *                         |     |     | !     |     | + *                   .-----+-----+-----! !-----+-----+-----. + *                   !     !     |     | !     |     !     ! + *                   !     !     !-----! !-----!     !     ! + *                   |     |     |     | !     |     |     | + *                   '-----------------' '-----------------' + */ +[L3] = KEYMAP( + KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6, + KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, + KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, + KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, 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_WH_U, KC_MS_U, KC_WH_D, KC_TRNS, KC_TRNS, + /*-*/    KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* + * .------------------------------------.------------------------------------. + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + *  |    |    |    |    |    |                     !    |    |    |    |    | + *  '------------------------'                     '------------------------' + *                         .-----------. .-----------. + *                         |     |     | !     |     | + *                   .-----+-----+-----! !-----+-----+-----. + *                   !     !     |     | !     |     !     ! + *                   !     !     !-----! !-----!     !     ! + *                   |     |     |     | !     |     |     | + *                   '-----------------' '-----------------' + */ +[L4] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_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 +), +/* + * .------------------------------------.------------------------------------. + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + *  |    |    |    |    |    |                     !    |    |    |    |    | + *  '------------------------'                     '------------------------' + *                         .-----------. .-----------. + *                         |     |     | !     |     | + *                   .-----+-----+-----! !-----+-----+-----. + *                   !     !     |     | !     |     !     ! + *                   !     !     !-----! !-----!     !     ! + *                   |     |     |     | !     |     |     | + *                   '-----------------' '-----------------' + */ +[L5] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_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 +), +/* + * .------------------------------------.------------------------------------. + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     | + * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! + * |     |    |    |    |    |    |     |     |    |    |    |    |    |     | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + *  |    |    |    |    |    |                     !    |    |    |    |    | + *  '------------------------'                     '------------------------' + *                         .-----------. .-----------. + *                         |     |     | !     |     | + *                   .-----+-----+-----! !-----+-----+-----. + *                   !     !     |     | !     |     !     ! + *                   !     !     !-----! !-----!     !     ! + *                   |     |     |     | !     |     |     | + *                   '-----------------' '-----------------' + */ +[L6] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, + /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = {}; + +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 + +// TODO: allow default mode to be configured +static uint16_t unicode_mode = UC_MODE_WIN; + +uint16_t hextokeycode(uint8_t hex) { +    if (hex == 0x0) { +        return KC_P0; +    } +    if (hex < 0xA) { +        return KC_P1 + (hex - 0x1); +    } +    return KC_A + (hex - 0xA); +} + +void unicode_action_function(uint16_t hi, uint16_t lo) { +    switch (unicode_mode) { +    case UC_MODE_WIN: +        register_code(KC_LALT); + +        register_code(KC_PPLS); +        unregister_code(KC_PPLS); + +        register_code(hextokeycode((hi & 0xF0) >> 4)); +        unregister_code(hextokeycode((hi & 0xF0) >> 4)); +        register_code(hextokeycode((hi & 0x0F))); +        unregister_code(hextokeycode((hi & 0x0F))); +        register_code(hextokeycode((lo & 0xF0) >> 4)); +        unregister_code(hextokeycode((lo & 0xF0) >> 4)); +        register_code(hextokeycode((lo & 0x0F))); +        unregister_code(hextokeycode((lo & 0x0F))); + +        unregister_code(KC_LALT); +        break; +    case UC_MODE_LINUX: +        register_code(KC_LCTL); +        register_code(KC_LSFT); + +        register_code(KC_U); +        unregister_code(KC_U); + +        register_code(hextokeycode((hi & 0xF0) >> 4)); +        unregister_code(hextokeycode((hi & 0xF0) >> 4)); +        register_code(hextokeycode((hi & 0x0F))); +        unregister_code(hextokeycode((hi & 0x0F))); +        register_code(hextokeycode((lo & 0xF0) >> 4)); +        unregister_code(hextokeycode((lo & 0xF0) >> 4)); +        register_code(hextokeycode((lo & 0x0F))); +        unregister_code(hextokeycode((lo & 0x0F))); + +        unregister_code(KC_LCTL); +        unregister_code(KC_LSFT); +        break; +    case UC_MODE_OSX: +        break; +    } +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { +    if (!record->event.pressed) { +        return MACRO_NONE; +    } +    // MACRODOWN only works in this function +    switch(id) { +        case UM: +            unicode_mode = (unicode_mode + 1) % 2; +            break; + + +        default: +            break; +    } +    return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +    uint8_t layer = biton32(layer_state); + +    ergodox_board_led_off(); +    ergodox_right_led_1_off(); +    ergodox_right_led_2_off(); +    ergodox_right_led_3_off(); +    switch (layer) { +        case L1: +            ergodox_right_led_1_on(); +            break; +        case L2: +            ergodox_right_led_2_on(); +            break; +        case L3: +            ergodox_right_led_3_on(); +            break; +        case L4: +            ergodox_right_led_1_on(); +            ergodox_right_led_2_on(); +            break; +        case L5: +            ergodox_right_led_1_on(); +            ergodox_right_led_3_on(); +            break; +        // case L6: +        //     ergodox_right_led_2_on(); +        //     ergodox_right_led_3_on(); +        //     break; +        // case L7: +        //     ergodox_right_led_1_on(); +        //     ergodox_right_led_2_on(); +        //     ergodox_right_led_3_on(); +        //     break; +        default: +            ergodox_board_led_off(); +            break; +    } +}; diff --git a/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md new file mode 100644 index 0000000000..d9fcda9661 --- /dev/null +++ b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md @@ -0,0 +1,194 @@ +# Neo2 for ErgoDox on QWERTZ +# +# Description +This layout is ment to be used on PCs with DE-de with an additional guest keyboard. E.g. on your PC at work you can use your ergodox with neo but a second keybord is plugged in so your coworkers can enter a few signs if necessary. I live in Germany, so this is my usecase. +# Layers +[Layer0](#layer-0) +Letters, modifiers and volume + +[Layer1](#layer-1) +Symbols + +[Layer2](#layer-2) +Motion, digits and next/prev Song + +[Layer3](#layer-3) +F1 to F12 and mouse actions + +[Layer4](#layer-4) +not used + +[Layer5](#layer-5) +not used + +[Layer6](#layer-6) +not used + + +## Layer 0 + +    .------------------------------------.------------------------------------. +    |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL| +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |VOL- |VOL+ | !MUTE |PLAY | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     |-----| !-----|     !     ! +                      ! CTL !     ! ALT ! ! CTL !     ! ALT ! +                      |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE| +                      '-----------------' '-----------------' +                       +* Left side ESC, TAB, [SymbolLayer], Shift, Ctr, Gui(Windows key), and Alt like normal QWERTZ with neo2. +* Space on right side of left half for mous activity so you don't have to leave the mouse for Space. +* Top row of thumb keys is hard to reach for me, so I put media control on there. +* Thumb keys make use of modifier/tap. E.g. if you tap the Enter key it will be Enter. If you keep it pressed down it will be Ctr. The hold action is written on top of the tap action. +* The small middle thumb keys are not used, es well as the 1.5 sized ones on the left side of the right half. + + +## Layer 1 + +    .------------------------------------.------------------------------------. +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |     | +                      '-----------------' '-----------------' + + +## Layer 2 + +    .------------------------------------.------------------------------------. +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |  0  | +                      '-----------------' '-----------------' + + + +## Layer 3 + +    .------------------------------------.------------------------------------. +    |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |     | +                      '-----------------' '-----------------' +* M_A Mouse acceleration +* M_B Mouse button +* M_C Mouse cursor +* M_W Mouse wheel + +## Layer 4 + + + +    .------------------------------------.------------------------------------. +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |     | +                      '-----------------' '-----------------' + + +## Layer 5 + + +    .------------------------------------.------------------------------------. +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |     | +                      '-----------------' '-----------------' + + +## Layer 6 + +    .------------------------------------.------------------------------------. +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     | +    !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----! +    |     |    |    |    |    |    |     |     |    |    |    |    |    |     | +    '-----+----+----+----+----+----------'----------+----+----+----+----+-----' +     |    |    |    |    |    |                     !    |    |    |    |    | +     '------------------------'                     '------------------------' +                            .-----------. .-----------. +                            |     |     | !     |     | +                      .-----+-----+-----! !-----+-----+-----. +                      !     !     |     | !     |     !     ! +                      !     !     !-----! !-----!     !     ! +                      |     |     |     | !     |     |     | +                      '-----------------' '-----------------' + diff --git a/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c b/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c new file mode 100644 index 0000000000..4c735a6c29 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c @@ -0,0 +1 @@ +#include "MS-sculpt-mobile.h" diff --git a/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h b/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h new file mode 100644 index 0000000000..1583dea6e8 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h @@ -0,0 +1,48 @@ +#ifndef MICROSOFT_SCULPT_MOBILE_H +#define MICROSOFT_SCULPT_MOBILE_H + +#include "quantum.h" + + +#define KEYMAP( \ +                k7Q, k6O, k6P,  k6Q, k5O, k5P, k5Q, k7A, k7B, k7C, k7D, k7E, k7F, k1O, k1K, k1L, \ +                k5A,  k5K,  k5L, k5M, k5N, k5H, k5I, k2A, k2B, k2C, k2D, k5B, k5C, k5J, k2E, \ +                k6R,  k6D,  k6E, k6F, k7I, k7J, k4A, k4B, k4C, k4D, k3A, k3B, k3C, k3D, \ +                k0J, k6A, k6B, k6C, k7H, k1A, k1B, k5D, k5E, k5F, k5G, k1C, k7P,   k2G, \ +                k2P, k7K, k7L, k7M, k7O, k0A, k0B, k0C, k0D, k0E, k0F, k2L, k6G, k1P,\ +                k1Q, k4N, k3O,k6N, k3K, k0R, k1M, k6H, k6I, k6J \ +) \ +{ \ +        {k0A, k0B, k0C, k0D, k0E, k0F, KC_NO, KC_NO, KC_NO, k0J, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, k0R},\ +        {k1A, k1B, k1C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k1K, k1L, k1M, KC_NO, k1O, k1P, k1Q, KC_NO},\ +        {k2A, k2B, k2C, k2D, k2E, KC_NO, k2G, KC_NO, KC_NO, KC_NO, KC_NO, k2L, KC_NO, KC_NO, KC_NO, k2P, KC_NO, KC_NO},\ +        {k3A, k3B, k3C, k3D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k3K, KC_NO, KC_NO, KC_NO, k3O, KC_NO, KC_NO, KC_NO},\ +        {k4A, k4B, k4C, k4D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k4N, KC_NO,KC_NO, KC_NO, KC_NO},\ +        {k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q, KC_NO },\ +        {k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6J, KC_NO, KC_NO, KC_NO, k6N, k6O, k6P, k6Q, k6R},\ +        {k7A, k7B, k7C, k7D, k7E, k7F, KC_NO, k7H, k7I, k7J, k7K, k7L, k7M, KC_NO, k7O, k7P, k7Q, KC_NO},\ +} + + +#define MATRIX_TESTING_KEYMAP( \ +        k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0, k0J, k0K, k0L, k0M, k0N, k0O, k0P, k0Q,\ +        k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1, k1J, k1K, k1L, k1M, k1N, k1O, k1P, k1Q,\ +        k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2, k2J, k2K, k2L, k2M, k2N, k2O, k2P, k2Q,\ +        k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3, k3J, k3K, k3L, k3M, k3N, k3O, k3P, k3Q,\ +        k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4, k4J, k4K, k4L, k4M, k4N, k4O, k4P, k4Q,\ +        k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q,\ +        k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6, k6J, k6K, k6L, k6M, k6N, k6O, k6P, k6Q,\ +        k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H, k7I, k7, k7J, k7K, k7L, k7M, k7N, k7O, k7P, k7Q\ +) \ +{ \ +       {k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0, k0J, k0K, k0L, k0M, k0N, k0O, k0P, k0Q},\ +        {k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1, k1J, k1K, k1L, k1M, k1N, k1O, k1P, k1Q},\ +        {k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2, k2J, k2K, k2L, k2M, k2N, k2O, k2P, k2Q},\ +        {k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3, k3J, k3K, k3L, k3M, k3N, k3O, k3P, k3Q},\ +        {k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4, k4J, k4K, k4L, k4M, k4N, k4O, k4P, k4Q},\ +        {k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q},\ +        {k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6, k6J, k6K, k6L, k6M, k6N, k6O, k6P, k6Q},\ +        {k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H, k7I, k7, k7J, k7K, k7L, k7M, k7N, k7O, k7P, k7Q},\ +} + +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/Makefile b/keyboards/handwired/MS-sculpt-mobile/Makefile new file mode 100644 index 0000000000..bd09e5885d --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED +	include ../../../Makefile +endif diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c new file mode 100644 index 0000000000..3a9b86997d --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -0,0 +1,459 @@ +/*  A library to output the right key shortcut in any common app.  +Given a global variable babble_mode to show the environment and a  +key that calls the paste macro, do the right type of paste.  +Setting the context is done by another macro, or TBD interaction with the host.  + +Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts +and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c  +*/ + +#include "babblePaste.h" +#include "action_macro.h" + +#ifdef USE_BABLPASTE + +// GLOBAL variable to determine mode.  Sets startup default if no eeppom +uint8_t babble_mode =0 ; + +// small function that we might also want to call from a keymap.  + +macro_t* switch_babble_mode( uint8_t id) { + babble_mode= id; + return MACRO_NONE; //less typing where called +} + +		 +// Today I learned that the preprocessor can not create a switch statement label from an argument +// And else statements have problems, see https://gcc.gnu.org/onlinedocs/gcc-3.0.1/cpp_3.html#SEC15 +#define BABLM(ent, macro...) \ +	if ( ent == shortcut ) \ +		 {  action_macro_play( MACRO(macro)); return MACRO_NONE; }    + + +/* this function runs the appropriate babblepaste macro, given +the global babble_mode, and a shortcut from the ENUM in babblePaste.h  +TODO, the pointers in this function should be stored in a PROGMEM array, not ram.  +But that requires even more clever preprocessor foo. +*/ +const  macro_t *babblePaste (keyrecord_t *record,  uint8_t shortcut) { +/* +	 if ( shortcut < BABL_START_NUM || \ +			 shortcut >= (BABL_START_NUM + BABL_NUM_MACROS ) ) { +			return MACRO_NONE; +		} +*/ +  + +#ifdef MS_MODE +	if ( BABL_WINDOWS  == shortcut ) { return switch_babble_mode(MS_MODE);  }  +#endif     +#ifdef MAC_MODE +	if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE);  }  +#endif +#ifdef LINUX_MODE +	if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE);  } +#endif	     + #ifdef READMUX_MODE +	if ( BABL_READLINE == shortcut  ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } +#endif    +#ifdef VI_MODE +	if ( BABL_VI == shortcut  ) { return switch_babble_mode(VI_MODE);   } +#endif +#ifdef EMACS_MODE +	if ( BABL_EMACS == shortcut  ) { return switch_babble_mode(EMACS_MODE);   } +#endif + + + +    switch(babble_mode) {   + +#ifdef MS_MODE +		 +	 case MS_MODE:	 +		BABLM( BABL_GO_LEFT_1C,	T(LEFT), END ); +		BABLM( BABL_GO_RIGHT_1C ,	T(RIGHT), END ); +		BABLM( BABL_GO_LEFT_WORD,	D(LCTL), T(LEFT), U(LCTL), END ); +		BABLM( BABL_GO_RIGHT_WORD, D(LCTL), T(RIGHT), U(LCTL), END ); +		BABLM( BABL_GO_START_LINE,	T(HOME), END ); +		BABLM( BABL_GO_END_LINE,	T(END), END ); +		BABLM( BABL_GO_START_DOC,	D(LCTL),T(HOME),  U(LCTL),END ); +		BABLM( BABL_GO_END_DOC,	D(LCTL),T(END),  U(LCTL),END ); +		BABLM( BABL_GO_NEXT_LINE,	T(DOWN), END ); +		BABLM( BABL_GO_PREV_LINE,	T(UP), END ); +		BABLM( BABL_PGDN,			T(PGDN), END ); +		BABLM( BABL_PGUP,			T(PGUP), END ); +		BABLM( BABL_DEL_RIGHT_1C,	T(DEL), END ); +		BABLM( BABL_DEL_LEFT_WORD,	D(LCTL), T(BSPACE), U(LCTL), END ); +		BABLM( BABL_DEL_RIGHT_WORD,		D(LCTL), T(DEL), U(LCTL), END ); +		BABLM( BABL_DEL_TO_LINE_END,	D(RSFT), T(HOME), U(RSFT), T(DEL),  END); +		BABLM( BABL_DEL_TO_LINE_START,	D(RSFT), T(END), U(RSFT), T(DEL),  END ); +#ifndef BABL_MOVEMENTONLY +		BABLM( BABL_UNDO, 		D(LCTL), T(Z), U(LCTL), END ); +		BABLM( BABL_REDO, 		D(LCTL), T(Y), U(LCTL), END ); +		BABLM( BABL_CUT, 		D(LCTL), T(X), U(LCTL), END ); +		BABLM( BABL_COPY, 		D(LCTL), T(C), U(LCTL), END ); +		BABLM( BABL_PASTE, 		D(LCTL), T(V), U(LCTL), END );		 +		BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END ); +		BABLM( BABL_FIND, 		D(LCTL),T(F),  U(LCTL),END ); +		BABLM( BABL_FIND_NEXT, 			T(F3),END ); +		BABLM( BABL_FIND_REPLACE,		D(LCTL),T(H),  U(LCTL),END ); +		BABLM( BABL_RUNAPP, 	D(LGUI),T(R),  U(LGUI),END ); +		BABLM( BABL_SWITCH_APP_NEXT, D(LALT),T(TAB), U(LALT),END ); +		BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); +		BABLM( BABL_CLOSE_APP, 	D(LALT),T(F4), U(LALT),END ); +		BABLM( BABL_HELP,		T(F1),END ); +#ifndef BABL_NOBROWSER +		BABLM( BABL_BROWSER_NEW_TAB,		D(LCTL), T(T), U(LCTL),END ); +		BABLM( BABL_BROWSER_CLOSE_TAB,		D(LCTL), T(W), U(LCTL),END ); +		BABLM( BABL_BROWSER_REOPEN_LAST_TAB,		D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END ); +		BABLM( BABL_BROWSER_NEXT_TAB,		D(LCTL), T(TAB), U(LCTL),END ); +		BABLM( BABL_BROWSER_PREV_TAB,		D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END ); +		BABLM( BABL_BROWSER_URL_BAR,		D(LCTL), T(L), U(LCTL),END ); +		BABLM( BABL_BROWSER_FORWARD,		D(LALT), T(RIGHT), U(LALT),END ); +		BABLM( BABL_BROWSER_BACK,			D(LALT), T(LEFT), U(LALT),END ); +		BABLM( BABL_BROWSER_FIND,			D(LCTL), T(F), U(LCTL),END ); +		BABLM( BABL_BROWSER_BOOKMARK,		D(LCTL), T(D), U(LCTL),END ); +		//BABLM( BABL_BROWSER_DEV_TOOLS,	T(F12), U(LCTL),END  ); // EDGE  +		BABLM( BABL_BROWSER_DEV_TOOLS,		D(LCTL), T(T), U(LCTL),END  ); // Chrome +		// Chrome +		BABLM( BABL_BROWSER_RELOAD,			D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache +		BABLM( BABL_BROWSER_FULLSCREEN,		T(F11),END ); //command shift F +		BABLM( BABL_BROWSER_ZOOM_IN,		D(LCTL), D(RSFT), T(EQL), U(RSFT), U(LCTL),END ); // ctr+ + +		BABLM( BABL_BROWSER_ZOOM_OUT,		D(LCTL), T(MINS), U(LCTL),END ); +#endif +#endif + +		// Todo, ring bell, flash light, show user this isn't supported +		return MACRO_NONE; +		 +	 	 +#endif /* MS_MODE*/ + + +#ifdef LINUX_MODE + +	 case LINUX_MODE: +		BABLM( BABL_GO_LEFT_1C  , 	T(LEFT), END ); +		BABLM( BABL_GO_RIGHT_1C  , 	T(RIGHT), END ); +		BABLM( BABL_GO_LEFT_WORD  , 	D(LCTL), T(LEFT), U(LCTL), END ); +		BABLM( BABL_GO_RIGHT_WORD  , D(LCTL), T(RIGHT), U(LCTL), END ); +		BABLM( BABL_GO_START_LINE , 	T(HOME), END ); +		BABLM( BABL_GO_END_LINE  ,	T(END), END ); +		BABLM( BABL_GO_START_DOC  , 	D(LCTL),T(HOME),  U(LCTL),END ); +		BABLM( BABL_GO_END_DOC  , 	D(LCTL),T(END),  U(LCTL),END ); +		BABLM( BABL_GO_NEXT_LINE  , 	T(DOWN), END ); +		BABLM( BABL_GO_PREV_LINE  , 	T(UP), END ); +		BABLM( BABL_PGDN  , 			T(PGDN), END ); +		BABLM( BABL_PGUP  , 			T(PGUP), END ); +		BABLM( BABL_DEL_RIGHT_1C  , 	D(DEL), END );	  +		BABLM( BABL_DEL_LEFT_WORD  ,	D(LCTL), T(BSPACE), U(LCTL), END ); +		BABLM( BABL_DEL_RIGHT_WORD  , D(LCTL), T(DEL), U(LCTL), END ); +		BABLM( BABL_DEL_TO_LINE_END,	D(RSFT), T(HOME), U(RSFT), T(DEL),  END); +		BABLM( BABL_DEL_TO_LINE_START,	D(RSFT), T(END), U(RSFT), T(DEL),  END ); +#ifndef BABL_MOVEMENTONLY +		BABLM( BABL_UNDO  , 	D(LCTL), T(Z), U(LCTL), END ); +		BABLM( BABL_REDO  , 	D(LCTL), T(Y), U(LCTL), END ); +		BABLM( BABL_CUT  , 	D(LCTL), T(X), U(LCTL), END ); +		BABLM( BABL_COPY  , 	D(LCTL), T(C), U(LCTL), END ); +		BABLM( BABL_PASTE  ,	D(LCTL), T(V), U(LCTL), END );			 +		BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END );	 +		BABLM( BABL_FIND,	D(LCTL),T(F),  U(LCTL),END ); +		/* BABLM(BABL_FIND_NEXT  , T(F3),END ); KDE */ +		BABLM( BABL_FIND_NEXT,	D(LCTL),T(G),  U(LCTL),END ); // Gnome*/ +		/* BABLM(  , D(LCTL),T(R),  U(LCTL),END ); KDE */ +		BABLM( BABL_FIND_REPLACE,	D(LCTL),T(H),  U(LCTL),END ); // Gnome*/ +		BABLM( BABL_RUNAPP,			D(LALT),T(F2),  U(LALT),END ); +		BABLM( BABL_SWITCH_APP_NEXT,	D(LCTL),T(TAB), U(LCTL),END ); +		BABLM( BABL_SWITCH_APP_LAST,	D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); +		BABLM( BABL_CLOSE_APP,	D(LALT),T(F4), U(LALT),END ); +		//BABLM( BABL_HELP, 		END );  + +#ifndef BABL_NOBROWSER +		BABLM( BABL_BROWSER_NEW_TAB,		D(LCTL), T(T), U(LCTL),END ); +		BABLM( BABL_BROWSER_CLOSE_TAB,		D(LCTL), T(W), U(LCTL),END ); +		BABLM( BABL_BROWSER_REOPEN_LAST_TAB,		D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END ); +		BABLM( BABL_BROWSER_NEXT_TAB,		D(LCTL), T(TAB), U(LCTL),END ); +		BABLM( BABL_BROWSER_PREV_TAB,		D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END ); +		BABLM( BABL_BROWSER_URL_BAR,		D(LCTL), T(L), U(LCTL),END ); +		BABLM( BABL_BROWSER_FORWARD,		D(LALT), T(RIGHT), U(LALT),END ); +		BABLM( BABL_BROWSER_BACK,			D(LALT), T(LEFT), U(LALT),END ); +		BABLM( BABL_BROWSER_FIND,			D(LCTL), T(F), U(LCTL),END ); +		BABLM( BABL_BROWSER_BOOKMARK,		D(LCTL), T(D), U(LCTL),END ); +		BABLM( BABL_BROWSER_DEV_TOOLS,		D(LCTL), T(T), U(LCTL),END  ); // Chrome +		BABLM( BABL_BROWSER_RELOAD,			D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache +		BABLM( BABL_BROWSER_FULLSCREEN,		T(F11),END ); //command shift F +		BABLM( BABL_BROWSER_ZOOM_IN,		D(LCTL), T(PLUS), U(LCTL),END ); +		BABLM( BABL_BROWSER_ZOOM_OUT,		D(LCTL), T(MINS), U(LCTL),END ); +#endif +#endif +	 return MACRO_NONE; +	 +#endif  +	   +#ifdef MAC_MODE + +	 case MAC_MODE: +		BABLM( BABL_GO_LEFT_1C ,	T(LEFT), END ); +		BABLM( BABL_GO_RIGHT_1C,	T(RIGHT), END ); +		BABLM( BABL_GO_LEFT_WORD ,	D(LALT), T(LEFT), U(LALT), END ); +		BABLM( BABL_GO_RIGHT_WORD ,	D(LALT), T(RIGHT), U(LALT), END ); +		BABLM( BABL_GO_START_LINE ,	D(LGUI), T(LEFT), U(LGUI),  END ); +		BABLM( BABL_GO_END_LINE ,	D(LGUI), T(RIGHT), U(LGUI), END ); +		BABLM( BABL_GO_START_DOC ,	D(LGUI),T(UP),  U(LGUI),END ); +		BABLM( BABL_GO_END_DOC ,	D(LGUI),T(DOWN),  U(LGUI),END ); +		BABLM( BABL_GO_NEXT_LINE ,	T(DOWN), END ); +		BABLM( BABL_GO_PREV_LINE ,	T(UP), END ); +		BABLM( BABL_PGDN ,		D(LALT),T(DOWN), U(LALT), END ); +		BABLM( BABL_PGUP ,  	D(LALT),T(UP), U(LALT), END ); +		BABLM( BABL_DEL_RIGHT_1C ,	D(DEL), END );	  +		BABLM( BABL_DEL_LEFT_WORD ,	D(LALT), T(BSPACE), U(LALT), END ); +		BABLM( BABL_DEL_RIGHT_WORD,	D(LALT), T(DEL), U(LALT), END ); +		BABLM( BABL_DEL_TO_LINE_END,	D(LCTL), T(K), U(LCTL), END );// there must be another way +		BABLM( BABL_DEL_TO_LINE_START,	D(LGUI), T(BSPACE), U(LGUI),   END ); +#ifndef BABL_MOVEMENTONLY +		BABLM( BABL_UNDO , 		D(1), D(LGUI), T(Z), U(LGUI), END ); +		BABLM( BABL_REDO , 		D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); +		BABLM( BABL_CUT ,		D(LGUI), T(X), U(LGUI), END ); +		BABLM( BABL_COPY ,		D(LGUI), T(C), U(LGUI), END ); +		BABLM( BABL_PASTE ,		D(LGUI), T(V), U(LGUI), END );			 +		BABLM( BABL_SELECT_ALL ,	D(LGUI), T(A), U(LGUI), END ); +		BABLM( BABL_FIND ,			D(LGUI),T(F),  U(LGUI),END ); +		BABLM( BABL_FIND_NEXT, 		D(LGUI),T(G),  U(LGUI),END ); +		BABLM( BABL_FIND_REPLACE,	D(LGUI),T(F),  U(LGUI),END ); +		BABLM( BABL_RUNAPP ,		D(LGUI),T(R), U(LGUI),END ); +		BABLM( BABL_SWITCH_APP_NEXT ,	D(LGUI),T(TAB), U(LGUI),END ); +		BABLM( BABL_SWITCH_APP_LAST ,	D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); +		BABLM( BABL_CLOSE_APP ,			D(LGUI),T(Q),  U(LGUI),END ); +		BABLM( BABL_HELP ,				D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); + +#ifndef BABL_NOBROWSER +		BABLM( BABL_BROWSER_NEW_TAB,		D(LGUI), T(T), U(LGUI),END ); +		BABLM( BABL_BROWSER_CLOSE_TAB,		D(LGUI), T(W), U(LGUI),END ); +		BABLM( BABL_BROWSER_REOPEN_LAST_TAB,		D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); +		BABLM( BABL_BROWSER_NEXT_TAB,		D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); +		BABLM( BABL_BROWSER_PREV_TAB,		D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_URL_BAR,		D(LGUI), T(L), U(LGUI),END ); +		BABLM( BABL_BROWSER_FORWARD,		D(LGUI), T(RIGHT), U(LGUI),END ); +		BABLM( BABL_BROWSER_BACK,			D(LGUI), T(LEFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_FIND,			D(LGUI), T(F), U(LGUI),END ); +		BABLM( BABL_BROWSER_BOOKMARK,		D(LGUI), T(D), U(LGUI),END ); +		//BABLM( BABL_BROWSER_DEV_TOOLS,	T(F12), U(LGUI),END  ); // EDGE  +		BABLM( BABL_BROWSER_DEV_TOOLS,		D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome +		// Chrome +		BABLM( BABL_BROWSER_RELOAD,			D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache +		BABLM( BABL_BROWSER_FULLSCREEN,		D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F +		BABLM( BABL_BROWSER_ZOOM_IN,		D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ + +		BABLM( BABL_BROWSER_ZOOM_OUT,		D(LGUI), T(MINS), U(LGUI),END ); +#endif +#endif +			 +	 return MACRO_NONE; +#endif 	 +	 +#ifdef EMACS_MODE + +	 case EMACS_MODE: +	 	switch(shortcut) { +//probably should allow meta to not be ALT + +		BABLM( BABL_GO_LEFT_1C,			T(LEFT), END ); +		BABLM( BABL_GO_RIGHT_1C, 		T(RIGHT), END ); +		BABLM( BABL_GO_LEFT_WORD, 		D(LALT), T(B), U(LALT), END ); +		BABLM( BABL_GO_RIGHT_WORD ,		D(LALT), T(F), U(LALT), END ); +		BABLM( BABL_GO_START_LINE ,  	D(LCTL), T(A), U(LCTL),  END ); +		BABLM( BABL_GO_END_LINE ,  		D(LCTL), T(E), U(LCTL), END ); +		BABLM( BABL_GO_START_DOC , 		D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); +		BABLM( BABL_GO_END_DOC , 		D(LALT), D(LSFT), T(DOT), U(LSFT), U(LALT) ,END ); +		BABLM( BABL_GO_NEXT_LINE , 		D(LCTL), T(N), U(LCTL), END ); +		BABLM( BABL_GO_PREV_LINE ,  	D(LCTL), T(P), U(LCTL), END ); +		BABLM( BABL_PGDN ,				D(LCTL), T(V), U(LCTL), END ); +		BABLM( BABL_PGUP ,  			D(LALT), T(V), U(LALT), END ); +		BABLM( BABL_DEL_RIGHT_1C, 		D(LCTL), T(D), U(LCTL),END );	  +		BABLM( BABL_DEL_LEFT_WORD , 	D(LCTL), T(BSPACE), U(LCTL), END ); +		BABLM( BABL_DEL_RIGHT_WORD , 	D(LALT), T(D), U(LALT), END ); +		BABLM( BABL_DEL_TO_LINE_END,	D(LCTL), T(K), U(LCTL), END );  +		BABLM( BABL_DEL_TO_LINE_START,	T(ESC),  T(0), D(LCTL), T(K), U(LCTL),  END ); +#ifndef BABL_MOVEMENTONLY +		BABLM( BABL_UNDO , 		D(LCTL), T(X), U(LCTL),T(C), END ); +		BABLM( BABL_REDO , 		D(LCTL), T(X), U(LCTL),T(C), END ); // arguably +		BABLM( BABL_CUT , 		D(LCTL), T(W), U(LCTL), END ); +		BABLM( BABL_COPY , 		D(LALT), T(W), U(LALT), END ); //really? +		BABLM( BABL_PASTE ,  	D(LCTL), T(Y), U(LCTL), END );			 +		BABLM( BABL_SELECT_ALL ,D(LCTL), T(X), U(LCTL),T(H), END );	  +		BABLM( BABL_FIND , 		D(LCTL), T(S), U(LCTL),END ); +		BABLM( BABL_FIND_NEXT , D(LCTL), T(S), U(LCTL),END ); +		BABLM( BABL_FIND_REPLACE , 		D(LALT),D(LSFT), T(5),U(LSFT),  U(LALT), END ); +		BABLM( BABL_RUNAPP , 			D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably +		BABLM( BABL_SWITCH_APP_NEXT , 	D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably +		BABLM( BABL_SWITCH_APP_LAST , 	D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably +		BABLM( BABL_CLOSE_APP ,			D(LCTL), T(X), U(LCTL),T(C),END ); +		BABLM( BABL_HELP , 				D(LCTL),T(H), U(LCTL),T(A),END); // start search in help +#ifndef BABL_NOBROWSER +/* you get to figure w3 out  +		BABLM( BABL_BROWSER_NEW_TAB,		D(LGUI), T(T), U(LGUI),END ); +		BABLM( BABL_BROWSER_CLOSE_TAB,		D(LGUI), T(W), U(LGUI),END ); +		BABLM( BABL_BROWSER_REOPEN_LAST_TAB,		D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); +		BABLM( BABL_BROWSER_NEXT_TAB,		D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); +		BABLM( BABL_BROWSER_PREV_TAB,		D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_URL_BAR,		D(LGUI), T(L), U(LGUI),END ); +		BABLM( BABL_BROWSER_FORWARD,		D(LGUI), T(RIGHT), U(LGUI),END ); +		BABLM( BABL_BROWSER_BACK,			D(LGUI), T(LEFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_FIND,			D(LGUI), T(F), U(LGUI),END ); +		BABLM( BABL_BROWSER_BOOKMARK,		D(LGUI), T(D), U(LGUI),END ); +		//BABLM( BABL_BROWSER_DEV_TOOLS,	T(F12), U(LGUI),END  ); // EDGE  +		BABLM( BABL_BROWSER_DEV_TOOLS,		D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome +		// Chrome +		BABLM( BABL_BROWSER_RELOAD,			D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache +		BABLM( BABL_BROWSER_FULLSCREEN,		D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F +		BABLM( BABL_BROWSER_ZOOM_IN,		D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ + +		BABLM( BABL_BROWSER_ZOOM_OUT,		D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif +#endif +				break; +	  +	 return MACRO_NONE; +	} +	 +#endif 	 + + +#ifdef VI_MODE +	 case VI_MODE: +// you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell) +			 +			 +			BABLM( BABL_GO_LEFT_1C , T(H), END ); +			BABLM( BABL_GO_RIGHT_1C , T(L), END ); +			BABLM( BABL_GO_LEFT_WORD , T(B),END ); +			BABLM( BABL_GO_RIGHT_WORD , T(W), END ); +			BABLM( BABL_GO_START_LINE , D(LSFT), T(6),U(LSFT), END ); //^ +			BABLM( BABL_GO_END_LINE ,   D(LSFT), T(4),U(LSFT) , END ); //$ +			BABLM( BABL_GO_START_DOC , T(G),T(G) ,END ); +			BABLM( BABL_GO_END_DOC , D(LSFT), T(G),U(LSFT),END ); +			BABLM( BABL_GO_NEXT_LINE ,  T(J), END ); +			BABLM( BABL_GO_PREV_LINE,  T(K), END ); +			BABLM( BABL_PGDN ,D(LCTL), T(F), U(LCTL), END ); +			BABLM( BABL_PGUP , D(LCTL), T(B), U(LCTL), END ); +			BABLM( BABL_DEL_RIGHT_1C ,  T(X),END );	  +			BABLM( BABL_DEL_LEFT_WORD ,  T(D),T(G),T(E),END ); +			BABLM( BABL_DEL_RIGHT_WORD ,  T(D),T(W),END ); +			BABLM( BABL_DEL_TO_LINE_END,	T(D),D(LSFT), T(4),U(LSFT) ,END ); // d$ +			BABLM( BABL_DEL_TO_LINE_START,	T(D),D(LSFT), T(6),U(LSFT) ,END );  +#ifndef BABL_MOVEMENTONLY +			BABLM( BABL_UNDO , T(U), END ); + 			BABLM( BABL_REDO ,  D(LCTL), T(R), U(LCTL), END );   + 			BABLM( BABL_CUT ,  T(X), END ); + 			BABLM( BABL_COPY , T(Y),END ); +			BABLM( BABL_PASTE ,  T(P), END );			 +			BABLM( BABL_SELECT_ALL , D(LSFT), T(SCLN),U(LSFT),D(LSFT), T(5),U(LSFT),T(Y), END ); // wrong but helpful?  +			BABLM( BABL_FIND ,   T(SLASH),END ); +			BABLM( BABL_FIND_NEXT , T(N),END ); +			BABLM( BABL_FIND_REPLACE ,  D(LALT),D(LSFT), T(5),U(LSFT),  U(LALT), END ); +			BABLM( BABL_RUNAPP,END ); +			BABLM( BABL_SWITCH_APP_NEXT		,END ); +			BABLM( BABL_SWITCH_APP_LAST		,END ); +			BABLM(BABL_CLOSE_APP,	D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END ); +			BABLM(BABL_HELP,	 D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help +#ifndef BABL_NOBROWSER +/* you get to figure this out  +		BABLM( BABL_BROWSER_NEW_TAB,		D(LGUI), T(T), U(LGUI),END ); +		BABLM( BABL_BROWSER_CLOSE_TAB,		D(LGUI), T(W), U(LGUI),END ); +		BABLM( BABL_BROWSER_REOPEN_LAST_TAB,		D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); +		BABLM( BABL_BROWSER_NEXT_TAB,		D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); +		BABLM( BABL_BROWSER_PREV_TAB,		D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_URL_BAR,		D(LGUI), T(L), U(LGUI),END ); +		BABLM( BABL_BROWSER_FORWARD,		D(LGUI), T(RIGHT), U(LGUI),END ); +		BABLM( BABL_BROWSER_BACK,			D(LGUI), T(LEFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_FIND,			D(LGUI), T(F), U(LGUI),END ); +		BABLM( BABL_BROWSER_BOOKMARK,		D(LGUI), T(D), U(LGUI),END ); +		//BABLM( BABL_BROWSER_DEV_TOOLS,	T(F12), U(LGUI),END  ); // EDGE  +		BABLM( BABL_BROWSER_DEV_TOOLS,		D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome +		// Chrome +		BABLM( BABL_BROWSER_RELOAD,			D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache +		BABLM( BABL_BROWSER_FULLSCREEN,		D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F +		BABLM( BABL_BROWSER_ZOOM_IN,		D(LGUI), T(PLUS), U(LGUI),END ); +		BABLM( BABL_BROWSER_ZOOM_OUT,		D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif +#endif	  +		 return MACRO_NONE;	 +#endif + + + + +#ifdef READMUX_MODE +// Readline command line editing + tmux windowing +// I havent decided how much to do readline and how much tmux +	 +	 +	case READMUX_MODE:		 +		 +		BABLM( BABL_GO_LEFT_1C , 		T(LEFT), END ); +		BABLM( BABL_GO_RIGHT_1C , 		T(RIGHT), END ); +		BABLM( BABL_GO_LEFT_WORD , 		D(LALT), T(B), U(LALT), END ); +		BABLM( BABL_GO_RIGHT_WORD , 	D(LALT), T(F), U(LALT), END ); +		BABLM( BABL_GO_START_LINE ,  	D(LCTL), T(A), U(LCTL),  END ); +		BABLM( BABL_GO_END_LINE ,  		D(LCTL), T(E), U(LCTL), END ); +		//BABLM( BABL_GO_START_DOC		,END );// tmux? +		//BABLM( BABL_GO_END_DOC		,END );  // tmux? +		BABLM( BABL_GO_NEXT_LINE ,  	D(LCTL), T(N), U(LCTL), END ); +		BABLM( BABL_GO_PREV_LINE ,  	D(LCTL), T(P), U(LCTL), END ); +		BABLM( BABL_PGDN , 			T(PGDN), END ); +		BABLM( BABL_PGUP , 			T(PGUP), END ); +		BABLM( BABL_DEL_RIGHT_1C , 	D(LCTL), T(D), U(LCTL),END );	  +		BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(W), U(LCTL), END ); +		BABLM( BABL_DEL_RIGHT_WORD , 	D(LALT), T(D), U(LALT), END ); +		BABLM( BABL_DEL_TO_LINE_END,	D(LCTL), T(K), U(LCTL), END );  +		BABLM( BABL_DEL_TO_LINE_START,	D(LCTL), T(U), U(LCTL),  END ); +#ifndef BABL_MOVEMENTONLY +		BABLM( BABL_UNDO , 			D(LALT), T(R), U(LALT) , END ); +		BABLM( BABL_REDO , 			D(LCTL), T(X), U(LCTL),T(C), END ); // arguably +		BABLM( BABL_CUT , 			D(LCTL), T(K), U(LCTL), END ); // wrong half the time +		//BABLM( BABL_COPY		,END );  +		BABLM( BABL_PASTE ,  		D(LCTL), T(Y), U(LCTL), END );			 +		BABLM( BABL_SELECT_ALL ,	D(LCTL), T(A), T(K), T(Y), U(LCTL) , END );	  +		BABLM( BABL_FIND ,  		D(LCTL), T(R), U(LCTL), END ); // search history +		BABLM(BABL_FIND_NEXT,  		D(LCTL), T(S), U(LCTL), END ); +		//BABLM( BABL_FIND_REPLACE		,END );  +		BABLM( BABL_RUNAPP ,  		D(LCTL), T(B), U(LCTL),  T(C),END );  //tmux +		BABLM( BABL_SWITCH_APP_NEXT ,  D(LCTL), T(B), U(LCTL),  T(N),END );  //tmux +		BABLM( BABL_SWITCH_APP_LAST ,  D(LCTL), T(B), U(LCTL),  T(P),END );  //tmux +		BABLM( BABL_CLOSE_APP , 		D(LCTL), T(B), U(LCTL),  T(D),END); // usually what I want +		// BABLM( BABL_HELP		,END );  +#ifndef BABL_NOBROWSER +/* Add lynx shortcuts?  +		BABLM( BABL_BROWSER_NEW_TAB,		D(LGUI), T(T), U(LGUI),END ); +		BABLM( BABL_BROWSER_CLOSE_TAB,		D(LGUI), T(W), U(LGUI),END ); +		BABLM( BABL_BROWSER_REOPEN_LAST_TAB,		D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); +		BABLM( BABL_BROWSER_NEXT_TAB,		D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); +		BABLM( BABL_BROWSER_PREV_TAB,		D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_URL_BAR,		D(LGUI), T(L), U(LGUI),END ); +		BABLM( BABL_BROWSER_FORWARD,		D(LGUI), T(RIGHT), U(LGUI),END ); +		BABLM( BABL_BROWSER_BACK,			D(LGUI), T(LEFT), U(LGUI),END ); +		BABLM( BABL_BROWSER_FIND,			D(LGUI), T(F), U(LGUI),END ); +		BABLM( BABL_BROWSER_BOOKMARK,		D(LGUI), T(D), U(LGUI),END ); +		//BABLM( BABL_BROWSER_DEV_TOOLS,	T(F12), U(LGUI),END  ); // EDGE  +		BABLM( BABL_BROWSER_DEV_TOOLS,		D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome +		// Chrome +		BABLM( BABL_BROWSER_RELOAD,			D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache +		BABLM( BABL_BROWSER_FULLSCREEN,		D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F +		BABLM( BABL_BROWSER_ZOOM_IN,		D(LGUI), T(PLUS), U(LGUI),END ); +		BABLM( BABL_BROWSER_ZOOM_OUT,		D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif +#endif +		 +	return MACRO_NONE; +	 +#endif 			 + +	default:	 +    	return MACRO_NONE; +    } + +} + + +#endif
\ No newline at end of file diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h new file mode 100644 index 0000000000..3067c854de --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -0,0 +1,238 @@ +/*  A library to output the right key shortcut in any common app.  +Given a global variable babble_mode to show the environment and a  +key that calls the paste macro, do the right type of paste.  + +Setting the bable_mode is done by another macro, or TBD interaction with the host.  + +Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts +and jeebak & algernon's keymap +*/ +#ifndef _babblePaste_h_included__ +#define _babblePaste_h_included__ +#include "action_layer.h" +#include "quantum_keycodes.h" +#include "config.h" + +#ifdef USE_BABLPASTE + +/* *************************** + +// Uncomment any modes you want. Whatever mode = 0 will be the default on boot +// Expect to get errors if you comment a feature out and leave it in your keymap.  + +#define USE_BABLPASTE + +//#define MS_MODE 0 // Windows.  +//#define MAC_MODE 1 +//#define LINUX_MODE 2 //aka gnome+KDE +//#define EMACS_MODE 3 +//#define VI_MODE 4 +//#define WORDSTAR_MODE 5 +//#define READMUX 6  // Readline and tmux + +// This removes everything but cursor movement +//#define BABL_MOVEMENTONLY +// and this just removes browser shortcuts +//#define BABL_NOBROWSER +****************************/ + + +// Uncomment if you need more free flash space +// It removes everything but cursor movement +//#define BABL_MOVEMENTONLY + + +// Define starting number for BABL macros in the macro range.  +// Probably can start the default even lower +#define BABL_START_NUM 50 + +/* Macros handled by babblepaste. Most should be available for all platforms. +Whatever isn't defined will NOP  */ +enum  { +// Movement macros +	// left & right +	BABL_GO_LEFT_1C= BABL_START_NUM, +	BABL_GO_RIGHT_1C, +	BABL_GO_LEFT_WORD,	 +	BABL_GO_RIGHT_WORD, +	BABL_GO_START_LINE, +	BABL_GO_END_LINE, +	// now up & down +	BABL_GO_START_DOC, +	BABL_GO_END_DOC, +	BABL_GO_NEXT_LINE, +	BABL_GO_PREV_LINE, +	BABL_PGDN, +	BABL_PGUP, +	// And the delete options +	//BABL_DEL_LEFT_1C == backspace, so why bother.  +	BABL_DEL_RIGHT_1C, // usually = Del +	BABL_DEL_LEFT_WORD, +	BABL_DEL_RIGHT_WORD, +	BABL_DEL_TO_LINE_END, // delete from cursor to end of line +	BABL_DEL_TO_LINE_START, // delete from cursor to begining line +#ifndef BABL_MOVEMENTONLY +	   // Cut & Paste +    BABL_UNDO, +	BABL_REDO, +	BABL_CUT, +	BABL_COPY, +	BABL_PASTE, +	BABL_SELECT_ALL, +	/* not yet implemented +	BABL_SWAP_LAST2C // swap last characters before the cursor +	BABL_SWAP_LAST2W // Swap the last two words before the cursor +	*/ +		// find & replace +	BABL_FIND, +	BABL_FIND_NEXT, +	BABL_FIND_REPLACE, +		// GUI or app +	BABL_RUNAPP, +	BABL_SWITCH_APP_NEXT, +	BABL_SWITCH_APP_LAST, // previous +	BABL_CLOSE_APP, +	BABL_HELP, + +#ifndef BABL_NOBROWSER +	BABL_BROWSER_NEW_TAB, +	BABL_BROWSER_CLOSE_TAB, +	BABL_BROWSER_REOPEN_LAST_TAB, +	BABL_BROWSER_NEXT_TAB, +	BABL_BROWSER_PREV_TAB, +	BABL_BROWSER_URL_BAR, +	BABL_BROWSER_FORWARD, +	BABL_BROWSER_BACK, +	BABL_BROWSER_FIND, +	BABL_BROWSER_BOOKMARK, +	BABL_BROWSER_DEV_TOOLS, // hard one to remember +	BABL_BROWSER_RELOAD, +	BABL_BROWSER_FULLSCREEN, +	BABL_BROWSER_ZOOM_IN, +	BABL_BROWSER_ZOOM_OUT, +	 +#endif + +#endif +// Macros for mode switching +#ifdef MS_MODE +	BABL_WINDOWS, +#endif +#ifdef MAC_MODE +	BABL_MAC, +#endif +#ifdef LINUX_MODE +	BABL_LINUX, +#endif +#ifdef EMACS_MODE +	BABL_EMACS, +#endif +#ifdef VI_MODE +	BABL_VI, +#endif +#ifdef READMUX_MODE +	BABL_READLINE, +#endif + + +}; + +// BUG, used to jump to babble functiion. Surely there is a way to calculate size of enum?  +#define BABL_NUM_MACROS 48+4 // 48 + # of defined modes.  + +/* And all the shorthand keymap ready versions */ +// First the mode switching macros +#ifdef MS_MODE +#define B_WIN  	M(BABL_WINDOWS) +#endif +#ifdef MAC_MODE +#define B_MAC 	M(BABL_MAC) +#endif +#ifdef LINUX_MODE +#define B_LNX 	M(BABL_LINUX) +#endif +#ifdef EMACS_MODE +#define B_EMAX  M(BABL_EMACS) +#endif +#ifdef VI_MODE +#define B_VI  	M(BABL_VI) +#endif +#ifdef READMUX_MODE +#define B_READ  M(BABL_READLINE) +#endif + +// and all the movement & action.  + +#define B_L1C  M(BABL_GO_LEFT_1C) +#define B_R1C  M(BABL_GO_RIGHT_1C) +#define B_L1W  M(BABL_GO_LEFT_WORD) +#define B_R1W  M(BABL_GO_RIGHT_WORD) +#define B_GSOL  M(BABL_GO_START_LINE) +#define B_GEOL  M(BABL_GO_END_LINE) +#define B_GTOP  M(BABL_GO_START_DOC) +#define B_GEND  M(BABL_GO_END_DOC) +#define B_DOWN  M(BABL_GO_NEXT_LINE) +#define B_UP  M(BABL_GO_PREV_LINE) +#define B_PGDN  M(BABL_PGDN) +#define B_PGUP  M(BABL_PGUP) +//#define B_BKSP  M(BABL_DEL_LEFT_1C) == backspace so why bother.  +#define B_DEL  M(BABL_DEL_RIGHT_1C) // usually = Del +#define B_DLW  M(BABL_DEL_LEFT_WORD) +#define B_DRW  M(BABL_DEL_RIGHT_WORD) +#define B_DEOL  M(BABL_DEL_TO_LINE_END) // delete from cursor to end of line +#define B_DSOL  M(BABL_DEL_TO_LINE_START) // delete from cursor to begining line +#define B_UNDO  M(BABL_UNDO) +#define B_REDO  M(BABL_REDO) +#define B_CUT  M(BABL_CUT) +#define B_COPY  M(BABL_COPY) +#define B_PAST  M(BABL_PASTE) +#define B_SELA  M(BABL_SELECT_ALL) +#define B_FIND  M(BABL_FIND) +#define B_FINDN  M(BABL_FIND_NEXT) +#define B_FINDR  M(BABL_FIND_REPLACE) +#define B_RAPP  M(BABL_RUNAPP) +#define B_NAPP  M(BABL_SWITCH_APP_NEXT) +#define B_PAPP M(BABL_SWITCH_APP_LAST) // previous +#define B_CAPP  M(BABL_CLOSE_APP) +#define B_HELP  M(BABL_HELP) +#define B_NTAB  M(BABL_BROWSER_NEW_TAB) +#define B_CTAB  M(BABL_BROWSER_CLOSE_TAB) +#define B_ROTB  M(BABL_BROWSER_REOPEN_LAST_TAB) +#define B_NXTB  M(BABL_BROWSER_NEXT_TAB) +#define B_PTAB  M(BABL_BROWSER_PREV_TAB) +#define B_NURL M(BABL_BROWSER_URL_BAR) +#define B_BFWD  M(BABL_BROWSER_FORWARD) +#define B_BBAK  M(BABL_BROWSER_BACK) +#define B_BFND  M(BABL_BROWSER_FIND) +#define B_BOOK  M(BABL_BROWSER_BOOKMARK) +#define B_BDEV  M(BABL_BROWSER_DEV_TOOLS) // hard one to remember +#define B_BRLD  M(BABL_BROWSER_RELOAD) +#define B_BFUlL  M(BABL_BROWSER_FULLSCREEN) +#define B_ZMIN  M(BABL_BROWSER_ZOOM_IN) +#define B_ZMOT  M(BABL_BROWSER_ZOOM_OUT) +  +  + + + + + +/*  from action_macro.h +typedef uint8_t macro_t; + +#define MACRO_NONE      (macro_t*)0 +#define MACRO(...)      ({ static const macro_t __m[] PROGMEM = { __VA_ARGS__ }; &__m[0]; }) +#define MACRO_GET(p)    pgm_read_byte(p) + +#define BABL_MSTART (entry, os,  macro...) ( const macro_t bablDict[entry][os] PROGMEM = { macro... }; ) + +*/ + +const macro_t *babblePaste(keyrecord_t *record,  uint8_t shortcut); + +macro_t* switch_babble_mode( uint8_t id); + + +#endif +#endif + diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt new file mode 100644 index 0000000000..cf75e153e8 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt @@ -0,0 +1,123 @@ + BabblePaste is a library of common macros used to make sure that +you can have one "paste" button on one layer, and it will do the  +right thing on any OS or app. Windows=Ctrl-V. Mac = Command-V and so on.  + +The babblepaste library looks for the current status in a babble_mode global variable.  +To switch modes, run the switch_babble_mode() function, or a pre defined macro.  +Currently supported  are Windows, OS X, Gnome/kde, Emacs, VI and readline,  +across 42+ common macro actions.  + + +###To use the library +1) Paste the following into your config.h.  + +//////Begin////// +#define USE_BABLPASTE 1  + +#ifdef USE_BABLPASTE +/* define BabblePaste maps. Whatever = 0 will be the default. */ +// MAC_MODE   0 +// MS_MODE 1 +// LINUX_MODE 2  +// EMACS_MODE 3 +// VI_MODE 3 +// Readline and tmux +// READMUX_MODE 2  +// WORDSTAR_MODE 5 +#endif + +// Uncomment these to remove options an free up  flash space + +// This removes everything but cursor movement +// BABL_MOVEMENTONLY +// and this just removes browser shortcuts +// BABL_NOBROWSER +///////End/////// + +2) Add the following to your keymap in the action_get_macro + +//////Begin////// +#ifdef USE_BABLPASTE + +   if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { +   		if (record->event.pressed)  { // is there a case where this isn't desired? +   +   			babblePaste ( record,  id ); +   			return MACRO_NONE; +   		} +   	} +#endif +///////End/////// + +3) add Babbelpaste actions to your keymap. See the full list in babblePaste.h, or the +list below +B_L1C  // go left 1 char +B_R1C  // go Right 1 char + B_L1W //GO_LEFT_1 WORD + B_R1W  //BABL_GO_RIGHT_1 WORD + B_GSOL  // BABL_GOTO_START of _LINE + B_GEOL  // BABL_GOTO_END_LINE + B_GTOP  //BABL_GOTO_START_DOC + B_GEND  //BABL_GO_END_DOC + B_DOWN  //BABL_GO_NEXT_LINE + B_UP   // BABL_GO_PREV_LINE + B_PGDN  //PGDN + B_PGUP  //PGUP +// B_BKSP  //backspace so why bother.  + B_DEL  // DEL_RIGHT_1 Char // usually = Del + B_DLW  // DEL_LEFT_ 1 WORD) + B_DRW   //DEL_RIGHT_1 WORD + B_DEOL  // delete from cursor to end of line + B_DSOL  // delete from cursor to begining line + B_UNDO  //UNDO + B_REDO  // REDO + B_CUT  // CUT) + B_COPY  // COPY) + B_PAST  // PASTE) + B_SELA  // SELECT_ALL + B_FIND  // FIND) + B_FINDN  //FIND_NEXT) + B_FINDR  // FIND_REPLACE) + B_RAPP  // open application launcher + B_NAPP  // switch to next app + B_PAPP  // switch to previous app + B_CAPP  // CLOSE_APP) + B_HELP  // HELP) + B_NTAB  // BROWSER_NEW_TAB) + B_CTAB  //BROWSER_CLOSE_TAB) + B_ROTB  //BROWSER_REOPEN_LAST_TAB) + B_NXTB  //BROWSER_NEXT_TAB) + B_PTAB  //BROWSER_PREV_TAB) + B_NURL //BROWSER_jump to URL_BAR) + B_BFWD  // BROWSER_FORWARD (in history)  + B_BBAK  //BROWSER_BACK (in history) + B_BFND  // BROWSER_FIND) + B_BOOK  //BROWSER_New BOOKMARK) + B_BDEV  //BROWSER_ Open DEV_TOOLS) // hard one to remember + B_BRLD  // BROWSER_RELOAD Page + B_BFUlL // BROWSER_FULLSCREEN) + B_ZMIN  // BROWSER_ZOOM_IN) + B_ZMOT  //BROWSER_ZOOM_OUT) + + +#### Development notes +-Why a new function? Because it would make the keymap too ugly to put it there.   +-Why not return the macro to action_get_macro? Because I kept running into scope problems +and pointers to the wrong type.  +-Why not an array of arrays as a lookup instead of a function? That would allow you  +to store the lookup table in PROGMEM.  True, but that takes more pre-processor skill  +than I had.  + +-Have you tested this on every platform? No. Submit a patch.   + + +### Next steps for someone.  +Make it easier to pair macros with modifiers. So key foo will jump to start of line, and  +Shift(foo) will jump to the first tab in a browser.  + +## Thanks + +Thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts +and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c +And of course QMK...  + diff --git a/keyboards/handwired/MS-sculpt-mobile/config.h b/keyboards/handwired/MS-sculpt-mobile/config.h new file mode 100644 index 0000000000..f89514278d --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/config.h @@ -0,0 +1,100 @@ +/* +Copyright 2012 Jun Wako <[email protected]> + +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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x6060 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Microsoftplus +#define DESCRIPTION     6000 + +/* key matrix size */ +#define MATRIX_ROWS 8  +#define MATRIX_COLS 18  + +#ifdef ASTAR  +#define PRODUCT         sculpt mobile astar +                        /*0   1   2   3    4   5  6   7   8 */ +#define MATRIX_ROW_PINS {D7, C6, D4, D0, D1, D3, D2, E2} +/*                        A  B   C   D   E   F   G   H   I   J  K   L   M   N   O   P   Q  R  */ +#define MATRIX_COL_PINS {B4, B5, E6, B7, B6, D6,  C7, F7, F6, F4,F5, F1,F0, D5, B0, B1, B2, B3} + +#else +#define PRODUCT         sculpt mobile teensypp +/* 			0  1  2  3  4 5  6   7 */ +#define MATRIX_ROW_PINS { F7,F6,F4,F5,F3,F2,F1,F0} +/*                        A   B   C   D   E   F   G   H   I   J  K  L   M   N   O   P   Q  R  */ +#define MATRIX_COL_PINS { B7, D0, D1, D2, D3, D4, D5, D6, D7, E0,E1,C1, C0, C3, C2, C5, C4,C7} +#define UNUSED_PINS { B6,B5,B4,B3,B2,B1,B0 } + + +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#define PREVENT_STUCK_MODIFIERS + +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile new file mode 100644 index 0000000000..8b829218b2 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +#   change to "no" to disable the options, or define them in the Makefile 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 = no       # 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. +SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../../Makefile +endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h new file mode 100644 index 0000000000..8893d122e0 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c new file mode 100644 index 0000000000..ab09dcdd1c --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +#include "MS-sculpt-mobile.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/*  +* +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|Mute| +*  -------------------------------------------------------------------------------' +* |  ~ |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |Bakspace| Del | +* -------------------------------------------------------------------------- +* | tab  |  q |  w |  e |  r |  t |  y |  u |  i |  o |  p |  [ |  ] |  \   |     | +*  -------------------------------------------------------------------------------' +* | caps  |  a |  s |  d |  f |  g |  h |  j |  k |  l |  ; |  ' | enter     |PgUp| +* --------------------------------------------------------------------------------	 +* |Lsft    |  z |  x |  c |  v |  b |  n |  m |  , |  . |  / |      Rsft| Up| PgDn| +* ---------------------------------------------------------------------------------	 +* |Lctl   |Lgui  |Lalt |       Space          |Ralt  |  FN |  Rctl |Left|Down|Rght| +* ---------------------------------------------------------------------------------	 +*/ + +[0] = KEYMAP( \ +   KC_ESC, 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_VOLD, KC_VOLU, KC_MUTE,\ +   KC_GRAVE, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ +   KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,  KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\ +   KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ +   KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,\ +   KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, RSFT(KC_1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +) +  +}; +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +  // MACRODOWN only works in this function +      switch(id) { +        case 0: +          if (record->event.pressed) { +            register_code(KC_RSFT); +          } else { +            unregister_code(KC_RSFT); +          } +        break; +      } +    return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  return true; +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md new file mode 100644 index 0000000000..e67ddc6fec --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for microsoft-sculpt-mobile diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile new file mode 100644 index 0000000000..1209ad7814 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile @@ -0,0 +1,21 @@ +# Build Options +#   change to "no" to disable the options, or define them in the Makefile 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 = no       # 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. +SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR +	include ../../../../../Makefile +endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h new file mode 100644 index 0000000000..8cf4202cda --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -0,0 +1,32 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#define USE_BABLPASTE + +// Expect to get errors if you comment a feature out and leave it in your keymap.  + +#ifdef USE_BABLPASTE +//define BabblePaste maps +// Windows.  +#define MAC_MODE   0 +#define MS_MODE 1 +//aka gnome+KDE +//#define LINUX_MODE 2  +//#define EMACS_MODE 3 +#define VI_MODE 3 +// Readline and tmux +#define READMUX_MODE 2  +//#define WORDSTAR_MODE 5 +#endif + +// Uncomment if you need more free flash space + +// This removes everything but cursor movement +//#define BABL_MOVEMENTONLY +// and this just removes browser shortcuts +//#define BABL_NOBROWSER + +// place overrides here +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c new file mode 100644 index 0000000000..395a9fb470 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -0,0 +1,272 @@ +#include "MS-sculpt-mobile.h" +#include "action_layer.h" +#include "action_util.h" +#include "babblePaste.h" + +#ifdef AUDIO_ENABLE +  #include "audio.h" +#endif + +#define _QWR 0 +#define _CDH 2 +#define _SYM 3 +#define _MOV 4 +#define _TRAN 5 + + +enum layer_keycodes { +QWR, +CDH, +SYM, +MOV, +NUM,  +TRAN +}; + + +// Shorter spacing +#define XXXX  KC_NO +#define ____  KC_TRNS + +// Custom macros + +/* Fn Keys */ +#define TT_SYM MO(_SYM) +#define TT_MOV KC_FN2 +#define TT_NUM MO(_NUM) +#define SSFT ACTION_MODS_ONESHOT(MOD_LSFT) + +enum macro_keycodes { +DHPASTE=1, +VIBRK, +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/*  QWERTY +* +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| +*  -------------------------------------------------------------------------------' +* | ESC |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |Bakspace| Del| +* --------------------------------------------------------------------------- +* | tab  |  q |  w |  e |  r |  t |  y |  u |  i |  o |  p |  [ |  ] |  \    |    | +*  -------------------------------------------------------------------------------' +* |Bak/Mov|  a |  s |  d |  f |  g |  h |  j |  k |  l |  ; |  ' | enter     |PgUp| +* --------------------------------------------------------------------------------	 +* |Lsft    |  z |  x |  c |  v |  b |  n |  m |  , |  . |  / |      Rsft| Up| PgDn| +* ---------------------------------------------------------------------------------	 +* |Lctl   |Lgui  |Lalt |       Space/Sym      | GUI |  Sym |  Rctl |Left|Down|Rght| +* ---------------------------------------------------------------------------------	 +*/ + +[_QWR] = KEYMAP( \ +   KC_ESC,   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_VOLD, KC_VOLU, CDH,\ +   KC_ESC,   KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8,   KC_9, KC_0,    KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ +   KC_TAB,   KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I,   KC_O, KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,\ +   TT_MOV,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K,   KC_L, KC_SCLN, KC_QUOT,  KC_ENT, KC_PGUP,\ +   KC_LSFT,  KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,  KC_UP,  KC_PGDN,\ +   KC_LCTL,  KC_LGUI, KC_LALT, KC_FN1, KC_RGUI,TT_SYM,KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +), + +[_CDH] = KEYMAP (\ +   ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     QWR,  \ +   KC_ESC,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,   \ +   KC_TAB,  KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U,    KC_Y,   KC_SCLN, ____,    ____,   ____,\ +   TT_MOV,  KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E,    KC_I,   KC_O,    KC_QUOT, KC_ENT, KC_2,\ +   KC_LSFT, KC_Z, KC_X, KC_C, M(DHPASTE), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____,   KC_1,\ +  ____,     ____, ____ , KC_FN1, ____, ____, ____, ____, ____,   ____ + +), + + +/*  SYM +* +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| +*  -------------------------------------------------------------------------------' +* | ESC |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |Bakspace|Del | +*  -------------------------------------------------------------------------- +* | ESC: | ^  |  { |  } |  @ |  % |    |   [ | ( | )  | _  |  [ |  ] |  \    |    | +*  -------------------------------------------------------------------------------' +* |Bak/Mov|  ! |  # |  0 | =  |  { |   } | -  | 1 |  + |  ] |  ` | enter     |PgUp| +* --------------------------------------------------------------------------------	 +* |Lsft    |  ; | ~ |  : | ~  | "|"|  $ | *   |    |  .  |  / |      Rsft| Up| PgDn| +* ---------------------------------------------------------------------------------	 +* |Lctl   |Lgui  |Lalt |       Space/Sym      | GUI |  Sym |  Rctl |Left|Down|Rght| +* ---------------------------------------------------------------------------------	 +*/ + +[_SYM] = KEYMAP (\ +  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     ____,  \ +  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,   \ +  M(VIBRK),  KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC,         ____,   KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS,   ____,   ____,   ____,\ +  ____,    KC_EXLM, KC_HASH,  KC_0,  KC_EQL, KC_LCBR,            KC_RCBR,KC_MINS,KC_1,  KC_PLUS,KC_RBRC,  KC_GRV,   ____,  ____,\ +  ____,    KC_SCLN, KC_TILDE,  KC_COLN,  KC_TILDE,  KC_PIPE,     KC_DLR, KC_ASTR, ____,  KC_DOT ,   KC_SLSH,     ____, ____, ____,\ +  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____ +), +/*  +* |ESC | MAC| Win|RdLn| VI |    |    |    |    |    |    |    |    |    |    |    | +*  -------------------------------------------------------------------------------' +* |     |    |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |Bakspace| Del| +* --------------------------------------------------------------------------- +* | tab  |    |    |Find|    |pTab |DSOL|DelW| Up |DelW|DEOL|  [ |  ] |  \    |    | +*  -------------------------------------------------------------------------------' +* |Bak/Mov|    |    |    |    |nTab |GSOL| <- | Dwn | -> | EOL |  ' | enter   |PgUp| +* --------------------------------------------------------------------------------	 +* |Lsft    |Undo| Cut|Copy|Pste|    |    |    |    |    |  / |      Rsft| Up| PgDn| +* ---------------------------------------------------------------------------------	 +* |Lctl   |Lgui  |Lalt |       Space/Sym      | GUI |  Sym |  Rctl |Left|Down|Rght| +* ---------------------------------------------------------------------------------	 +*/ + +[_MOV] = KEYMAP (\ +  ____,    B_MAC,B_WIN,B_READ, B_VI, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     ____,  \ +  ____,      ____, B_PAPP, B_NAPP, ____, ____,      ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,   \ +  ____,     B_UNDO, ____, B_BFND, ____, B_PTAB,     B_DSOL, B_DLW, B_UP,   B_DRW, B_DEOL,  ____,  ____,   ____, \ +  ____,     B_SELA, B_BRLD, ____, ____, B_NXTB,     B_GSOL, B_L1C, B_DOWN, B_R1C,B_GEOL,   ____, ____, ____,\ +  ____,     B_UNDO,B_CUT, B_COPY, B_PAST, B_PAST,    ____, ____, ____, ____, ____,       ____,  ____,   ____, \ +  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____ +), + +[_TRAN] = KEYMAP (\ +  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     ____,  \ +  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, ____,   \ +  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, \ +  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, \ +  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, \ +  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____ +)  +}; + +const uint16_t PROGMEM fn_actions[] = { +[1] = ACTION_LAYER_TAP_KEY(_SYM,KC_SPACE), +[2] = ACTION_LAYER_TAP_KEY(_MOV,KC_BSPC) +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2]    = SONG(STARTUP_SOUND); +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); +#endif + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  switch (keycode) { +    case QWR: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_qwerty, false, 0); +        #endif +        layer_off(_CDH); +      } +      return false; +      break; +       +    case CDH: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_colemak, false, 0); +        #endif +        layer_on(_CDH); +      } +      return false; +      break; +       +    case SYM: +      if (record->event.pressed) { +        layer_on(_SYM); +      } else { +		layer_off(_SYM); +      } +     return false; +     break; +      +   } + return true; + +} +  +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + +/* If id is in the range of BABL macros, call the babl function */ +/* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ +#ifdef USE_BABLPASTE + +   if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { +   		if (record->event.pressed)  { // is there a case where this isn't desired? +   +   			babblePaste ( record,  id ); +   			return MACRO_NONE; +   		} +   	} +#endif + + +  // MACRODOWN only works in this function +      switch(id) { +        case 0: +          if (record->event.pressed) { +            register_code(KC_RSFT); +          } else { +            unregister_code(KC_RSFT); +          } +        break; + + /* Colemak mod-dh moves the D key to the qwerty V position +   This hack makes apple-V_position do what I mean */ + 	case DHPASTE:   +		if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { +			if (record->event.pressed) { +	  	 		clear_keyboard_but_mods(); +		 		register_code(KC_V); +	     	} else { +		 		unregister_code(KC_V); +	    	} +		} else { +            if (record->event.pressed) { +          		register_code(KC_D); +            } else { +           		unregister_code(KC_D); +	   		}	 +		} +	break; +			 +	case VIBRK: // vi esc: +		 if (record->event.pressed) { +			return MACRO( T(ESC),D(LSFT),T(SCLN),U(LSFT), END ); +		 } +	break;	 + + + + +	default: +    	return MACRO_NONE; +    } + + +return MACRO_NONE; +}; + + + + + +void matrix_init_user(void) { +} + +void matrix_scan_user(void) { + +} + + +void led_set_user(uint8_t usb_led) { + +} + + + + + + diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md new file mode 100644 index 0000000000..96ee0e77a5 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md @@ -0,0 +1 @@ +# A more programmer oriented keymap for microsoft-sculpt-mobile diff --git a/keyboards/handwired/MS-sculpt-mobile/readme.md b/keyboards/handwired/MS-sculpt-mobile/readme.md new file mode 100644 index 0000000000..d435b449fb --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/readme.md @@ -0,0 +1,58 @@ + +This is a way to take a Microsoft ergonomic bluetooth keyboard, and make it  +into a hard-wired keyboard running QMK.  + +The keyboard is known under several different names: +Mobile Bluetooth 5000, Mobile 6000, Sculpt mobile, and Asus rebranded  + +I had a stack of them,since they're cheap on ebay, travel well, and are just ergo enough.  + +The ribbon cable is 1mm pitch, which is hard to hand solder. I bought a cheap set of  +"pitch adapter" boards https://www.amazon.com/Double-Sided-0-4mm-1-0-Adapter-60mmx38mm/dp/B00OK42118 + +Cut the original ribbon cable sockets off the bluetooth board using a razor, they're hard to desolder.  +They're also allow the cable to be inserted on top or bottom.  + +If I was going to do it again, I'd make the MCU connection come out the top of the keyboard +and avoid the wires dangling out the bottom.  + +As I was debugging the matrix, I started to get random failures. In desparation I tried a second MCU,  +but had the same problems. It turns out that the ribbon cable connections can get worn. Shave a +half millimeter off the end of the ribbon cable & the errors go away.  + +My method for discovering the matrix was to set up a KEYMAP macro that included all pins.  +See MATRIX_TESTING_KEYMAP if you need it. Then set up a keymap that has all printable symbols +in the first 4 rows. test each key & record output. Then switch the printable symbols to the +bottom 4 rows & repeat. This was enough to show the matrix.  + + +The full original keymap for the sculpt is  +        A       B       C       D       E       F       G       H   --->   +0       b       n       m       ,       .       /                 +1       g       h       "                                           +2       7       8       9       0       Del             PgUp      +3       p       [       ]       \                                 +4       y       u       i       o                                       +5       ~       -       +=      j       k       l       ;       5 +6       a       s       d       q       w       e,      Up      left     +7       F7      F8      F9      F10     F11     F12             f +    			 +----->  I       J       K       L       M       N       O       P       Q       R        +0               Caps                                                            FN       +1                       Vol+    mute    Rctl            vol-    pgdn    LCTL             +2                               Rshift                          LShift                   +3                       Ralt                            LAlt                     +4                                               LGUI                                             +5       6       bakspc  1       2       3       4       F4      F5      F6                       +6       Down    right                           spc     F1      F2      F3      tab              +7       r       t       z       x       c               v       enter   Esc                      + +This works with 18 cols + 8  rows on a Teensy++, or Arm based Teensy.  + +The Astar mini has all pins exposed , so you can do 18x8 +If you want a speaker, LEDs &etc, you'll need to free up a pin.  I recommend joining columns +R and L to the same pin.  + +Building - add ASTAR=1 to the compile line or leave out for teensy2++ + + diff --git a/keyboards/handwired/MS-sculpt-mobile/rules.mk b/keyboards/handwired/MS-sculpt-mobile/rules.mk new file mode 100644 index 0000000000..680389c846 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/rules.mk @@ -0,0 +1,48 @@ + +## Project specific files +SRC=  babblePaste.c + + +ifdef ASTAR +  CFLAGS=-D ASTAR + OPT_DEFS += -DBOOTLOADER_SIZE=4096 + MCU = atmega32u4 + OPT_DEFS += -DCATERINA_BOOTLOADER + SCULPT_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done ; \ +		 avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) + +else + MCU = at90usb1286 + OPT_DEFS += -DBOOTLOADER_SIZE=2048 + SCULPT_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex +endif + +F_CPU = 16000000 +ARCH = AVR8 +F_USB = $(F_CPU) +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +# +BOOTMAGIC_ENABLE ?= no      # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no       # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes        # Console for debug(+400) +COMMAND_ENABLE ?= yes        # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no            # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no            # MIDI controls +UNICODE_ENABLE ?= no         # Unicode +BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no           # Audio output on port C6 + + +USB ?= /dev/cu.usbmodem14141 + +  + +upload: build +	$(SCULPT_UPLOAD_COMMAND) diff --git a/keyboards/handwired/numpad20/Makefile b/keyboards/handwired/numpad20/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/numpad20/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED +	include ../../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/handwired/numpad20/config.h b/keyboards/handwired/numpad20/config.h new file mode 100644 index 0000000000..847f2111f5 --- /dev/null +++ b/keyboards/handwired/numpad20/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako <[email protected]> + +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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xBB80 +#define PRODUCT_ID      0x0504 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Hexwire +#define PRODUCT         Numpad 20 +#define DESCRIPTION     Handwired 4x5 numpad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F6, B1, B3, B6, B5 } +#define MATRIX_COL_PINS { D1, D0, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1          H +//#define MAGIC_KEY_HELP2          SLASH +//#define MAGIC_KEY_DEBUG          D +//#define MAGIC_KEY_DEBUG_MATRIX   X +//#define MAGIC_KEY_DEBUG_KBD      K +//#define MAGIC_KEY_DEBUG_MOUSE    M +//#define MAGIC_KEY_VERSION        V +//#define MAGIC_KEY_STATUS         S +//#define MAGIC_KEY_CONSOLE        C +//#define MAGIC_KEY_LAYER0_ALT1    ESC +//#define MAGIC_KEY_LAYER0_ALT2    GRAVE +//#define MAGIC_KEY_LAYER0         0 +//#define MAGIC_KEY_LAYER1         1 +//#define MAGIC_KEY_LAYER2         2 +//#define MAGIC_KEY_LAYER3         3 +//#define MAGIC_KEY_LAYER4         4 +//#define MAGIC_KEY_LAYER5         5 +//#define MAGIC_KEY_LAYER6         6 +//#define MAGIC_KEY_LAYER7         7 +//#define MAGIC_KEY_LAYER8         8 +//#define MAGIC_KEY_LAYER9         9 +//#define MAGIC_KEY_BOOTLOADER     PAUSE +//#define MAGIC_KEY_LOCK           CAPS +//#define MAGIC_KEY_EEPROM         E +//#define MAGIC_KEY_NKRO           N +//#define MAGIC_KEY_SLEEP_LED      Z + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/handwired/numpad20/keymaps/default/keymap.c b/keyboards/handwired/numpad20/keymaps/default/keymap.c new file mode 100644 index 0000000000..37031206a9 --- /dev/null +++ b/keyboards/handwired/numpad20/keymaps/default/keymap.c @@ -0,0 +1,16 @@ +#include "numpad20.h" + +#define KC_ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +  [0] = COMPACT_KEYMAP( +    LEFT,RGHT, UP ,DOWN, \ +     P7 , P8 , P9 ,PLUS, \ +     P4 , P5 , P6 ,MINS, \ +     P1 , P2 , P3 , ENT, \ +     P0 ,DOT ,RGHT, TAB \ +    ) +}; + +const uint16_t PROGMEM fn_actions[] = { +}; diff --git a/keyboards/handwired/numpad20/numpad20.c b/keyboards/handwired/numpad20/numpad20.c new file mode 100644 index 0000000000..101cf2cb4b --- /dev/null +++ b/keyboards/handwired/numpad20/numpad20.c @@ -0,0 +1,8 @@ +#include "numpad20.h" + +void matrix_init_kb(void) { +	// put your keyboard start-up code here +	// runs once when the firmware starts up + +	matrix_init_user(); +} diff --git a/keyboards/handwired/numpad20/numpad20.h b/keyboards/handwired/numpad20/numpad20.h new file mode 100644 index 0000000000..191979be0d --- /dev/null +++ b/keyboards/handwired/numpad20/numpad20.h @@ -0,0 +1,20 @@ +#ifndef NUMPAD20_H +#define NUMPAD20_H + +#include "quantum.h" + +#define COMPACT_KEYMAP( \ +    K00, K01, K02, K03, \ +    K10, K11, K12, K13, \ +    K20, K21, K22, K23, \ +    K30, K31, K32, K33, \ +    K40, K41, K42, K43 \ +    ) { \ +  { KC_##K00, KC_##K01, KC_##K02, KC_##K03 },  \ +  { KC_##K10, KC_##K11, KC_##K12, KC_##K13 },  \ +  { KC_##K20, KC_##K21, KC_##K22, KC_##K23 },  \ +  { KC_##K30, KC_##K31, KC_##K32, KC_##K33 },  \ +  { KC_##K40, KC_##K41, KC_##K42, KC_##K43 }   \ +} + +#endif
\ No newline at end of file diff --git a/keyboards/handwired/numpad20/rules.mk b/keyboards/handwired/numpad20/rules.mk new file mode 100644 index 0000000000..e897ef2523 --- /dev/null +++ b/keyboards/handwired/numpad20/rules.mk @@ -0,0 +1,83 @@ + +# MCU name +MCU = atmega32u4 + +# Processor frequency. +#     This will define a symbol, F_CPU, in all source code files equal to the +#     processor frequency in Hz. You can then use this symbol in your source code to +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done +#     automatically to create a 32-bit value in your source code. +# +#     This will be an integer division of F_USB below, as it is sourced by +#     F_USB after it has run through any CPU prescalers. Note that this value +#     does not *change* the processor frequency - it should merely be updated to +#     reflect the processor speed set externally so that the code can use accurate +#     software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +#     This will define a symbol, F_USB, in all source code files equal to the +#     input clock frequency (before any prescaling is performed) in Hz. This value may +#     differ from F_CPU if prescaling is used on the latter, and is required as the +#     raw input clock is fed directly to the PLL sections of the AVR for high speed +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +#     at the end, this will be done automatically to create a 32-bit value in your +#     source code. +# +#     If no clock division is performed on the input clock inside the AVR (via the +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Teensy++ halfKay 1024 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#   USBaspLoader     2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +#   change yes to no to disable +# +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 ?= yes        # Console for debug(+400) +COMMAND_ENABLE ?= yes        # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no            # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no            # MIDI controls +UNICODE_ENABLE ?= no         # Unicode +BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no           # Audio output on port C6 + +ifndef QUANTUM_DIR +	include ../../../Makefile +endif + +avrdude: build +	ls /dev/tty* > /tmp/1; \ +	echo "Reset your Pro Micro now"; \ +	while [[ -z $$USB ]]; do \ +	  sleep 1; \ +	  ls /dev/tty* > /tmp/2; \ +	  USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ +	done; \ +	avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude diff --git a/keyboards/handwired/ortho5x13/Makefile b/keyboards/handwired/ortho5x13/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/ortho5x13/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED +	include ../../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/config.h b/keyboards/handwired/ortho5x13/config.h new file mode 100644 index 0000000000..f85159596c --- /dev/null +++ b/keyboards/handwired/ortho5x13/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako <[email protected]> + +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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xBB80 +#define PRODUCT_ID      0x050D +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Hexwire +#define PRODUCT         Ortho 5x13 +#define DESCRIPTION     Handwired 5x13 ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1          H +//#define MAGIC_KEY_HELP2          SLASH +//#define MAGIC_KEY_DEBUG          D +//#define MAGIC_KEY_DEBUG_MATRIX   X +//#define MAGIC_KEY_DEBUG_KBD      K +//#define MAGIC_KEY_DEBUG_MOUSE    M +//#define MAGIC_KEY_VERSION        V +//#define MAGIC_KEY_STATUS         S +//#define MAGIC_KEY_CONSOLE        C +//#define MAGIC_KEY_LAYER0_ALT1    ESC +//#define MAGIC_KEY_LAYER0_ALT2    GRAVE +//#define MAGIC_KEY_LAYER0         0 +//#define MAGIC_KEY_LAYER1         1 +//#define MAGIC_KEY_LAYER2         2 +//#define MAGIC_KEY_LAYER3         3 +//#define MAGIC_KEY_LAYER4         4 +//#define MAGIC_KEY_LAYER5         5 +//#define MAGIC_KEY_LAYER6         6 +//#define MAGIC_KEY_LAYER7         7 +//#define MAGIC_KEY_LAYER8         8 +//#define MAGIC_KEY_LAYER9         9 +//#define MAGIC_KEY_BOOTLOADER     PAUSE +//#define MAGIC_KEY_LOCK           CAPS +//#define MAGIC_KEY_EEPROM         E +//#define MAGIC_KEY_NKRO           N +//#define MAGIC_KEY_SLEEP_LED      Z + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c new file mode 100644 index 0000000000..c1262a83d7 --- /dev/null +++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c @@ -0,0 +1,289 @@ +#include "ortho5x13.h" +#include "action_layer.h" +#include "eeconfig.h" +#ifdef AUDIO_ENABLE +  #include "audio.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK, +  LOWER, +  RAISE, +  BACKLIT +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define KC_L1 LOWER +#define KC_L2 RAISE + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,------------------------------------------------------------------------------------------. + * | Esc  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   -  |   =  | + * |------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |   [  |   ]  | + * |------+------+------+------+------+-------------+------+------+------+------+------+------| + * |   `  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |   '  |   \  | + * |------+------+------+------+------+------|------+------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |  Up  | + * |------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Bksp |Shift | Left | Down |Right | + * `------------------------------------------------------------------------------------------' + */ +[_QWERTY] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----+----+----+----+----+----+----+----. +     ESC , 1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 0  ,MINS,EQL , +  //|----+----+----+----+----+----+----+----+----+----+----+----+----| +     TAB , Q  , W  , E  , R  , T  , Y  , U  , I  , O  , P  ,LBRC,RBRC, +  //|----+----+----+----+----+----+----+----+----+----+----+----+----| +     GRV , A  , S  , D  , F  , G  , H  , J  , K  , L  ,SCLN,QUOT,BSLS, +  //|----+----+----+----+----+----+----+----+----+----+----+----+----| +     LSFT, Z  , X  , C  , V  , B  , N  , M  ,COMM,DOT ,SLSH,ENT , UP , +  //|----+----+----+----+----+---------+----+----+----+----+----+----| +     HYPR,LCTL,LALT,LGUI, L1 ,  SPACE  , L2 ,BSPC,RSFT,LEFT,RGHT,DOWN +  //`----+----+----+----+----+---------+----+----+----+----+----+----' +    ), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Del  | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, +  {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 }, +  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Del  | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, +  {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 }, +  {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { +  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, +  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, +  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, +  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, +  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, +  {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS}, +  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______}, +  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      | Reset|      |      |      |      |      |      |      |      |      |  Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |      |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |             |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { +  {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12}, +  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, +  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______}, +  {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______}, +  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { +  {NOTE_B5, 20}, +  {NOTE_B6, 8}, +  {NOTE_DS6, 20}, +  {NOTE_B6, 8} +}; + +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_dvorak[][2]     = SONG(DVORAK_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); + +float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} + +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); +            #endif +            persistant_default_layer_set(1UL<<_QWERTY); +          } +          return false; +          break; +        case COLEMAK: +          if (record->event.pressed) { +            #ifdef AUDIO_ENABLE +              PLAY_NOTE_ARRAY(tone_colemak, false, 0); +            #endif +            persistant_default_layer_set(1UL<<_COLEMAK); +          } +          return false; +          break; +        case DVORAK: +          if (record->event.pressed) { +            #ifdef AUDIO_ENABLE +              PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +            #endif +            persistant_default_layer_set(1UL<<_DVORAK); +          } +          return false; +          break; +        case LOWER: +          if (record->event.pressed) { +            layer_on(_LOWER); +            update_tri_layer(_LOWER, _RAISE, _ADJUST); +          } else { +            layer_off(_LOWER); +            update_tri_layer(_LOWER, _RAISE, _ADJUST); +          } +          return false; +          break; +        case RAISE: +          if (record->event.pressed) { +            layer_on(_RAISE); +            update_tri_layer(_LOWER, _RAISE, _ADJUST); +          } else { +            layer_off(_RAISE); +            update_tri_layer(_LOWER, _RAISE, _ADJUST); +          } +          return false; +          break; +        case BACKLIT: +          if (record->event.pressed) { +            register_code(KC_RSFT); +            #ifdef BACKLIGHT_ENABLE +              backlight_step(); +            #endif +          } else { +            unregister_code(KC_RSFT); +          } +          return false; +          break; +      } +    return true; +}; + +void matrix_init_user(void) { +    #ifdef AUDIO_ENABLE +        startup_user(); +    #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ +    _delay_ms(20); // gets rid of tick +    PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ +    PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +    _delay_ms(150); +    stop_all_notes(); +} + +void music_on_user(void) +{ +    music_scale_user(); +} + +void music_scale_user(void) +{ +    PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif
\ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/ortho5x13.c b/keyboards/handwired/ortho5x13/ortho5x13.c new file mode 100644 index 0000000000..cf8352cc43 --- /dev/null +++ b/keyboards/handwired/ortho5x13/ortho5x13.c @@ -0,0 +1,8 @@ +#include "ortho5x13.h" + +void matrix_init_kb(void) { +	// put your keyboard start-up code here +	// runs once when the firmware starts up + +	matrix_init_user(); +} diff --git a/keyboards/handwired/ortho5x13/ortho5x13.h b/keyboards/handwired/ortho5x13/ortho5x13.h new file mode 100644 index 0000000000..d442212fe9 --- /dev/null +++ b/keyboards/handwired/ortho5x13/ortho5x13.h @@ -0,0 +1,36 @@ +#ifndef ORTHO5X13_H +#define ORTHO5X13_H + +#include "quantum.h" + +#define KEYMAP( \ +  k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ +  k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ +  k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ +  k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ +  k40, k41, k42, k43, k44,    k45,   k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ +  { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \ +  { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \ +  { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \ +  { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b, k3c }, \ +  { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c } \ +} + +#define COMPACT_KEYMAP( \ +  k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ +  k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ +  k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ +  k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ +  k40, k41, k42, k43, k44,    k45,   k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ +  { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, KC_##k0c }, \ +  { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, KC_##k1c }, \ +  { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, KC_##k2c }, \ +  { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k35, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, KC_##k3c }, \ +  { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_NO,    KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c } \ +} + +#endif
\ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/rules.mk b/keyboards/handwired/ortho5x13/rules.mk new file mode 100644 index 0000000000..e897ef2523 --- /dev/null +++ b/keyboards/handwired/ortho5x13/rules.mk @@ -0,0 +1,83 @@ + +# MCU name +MCU = atmega32u4 + +# Processor frequency. +#     This will define a symbol, F_CPU, in all source code files equal to the +#     processor frequency in Hz. You can then use this symbol in your source code to +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done +#     automatically to create a 32-bit value in your source code. +# +#     This will be an integer division of F_USB below, as it is sourced by +#     F_USB after it has run through any CPU prescalers. Note that this value +#     does not *change* the processor frequency - it should merely be updated to +#     reflect the processor speed set externally so that the code can use accurate +#     software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +#     This will define a symbol, F_USB, in all source code files equal to the +#     input clock frequency (before any prescaling is performed) in Hz. This value may +#     differ from F_CPU if prescaling is used on the latter, and is required as the +#     raw input clock is fed directly to the PLL sections of the AVR for high speed +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +#     at the end, this will be done automatically to create a 32-bit value in your +#     source code. +# +#     If no clock division is performed on the input clock inside the AVR (via the +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Teensy++ halfKay 1024 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#   USBaspLoader     2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +#   change yes to no to disable +# +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 ?= yes        # Console for debug(+400) +COMMAND_ENABLE ?= yes        # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no            # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no            # MIDI controls +UNICODE_ENABLE ?= no         # Unicode +BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no           # Audio output on port C6 + +ifndef QUANTUM_DIR +	include ../../../Makefile +endif + +avrdude: build +	ls /dev/tty* > /tmp/1; \ +	echo "Reset your Pro Micro now"; \ +	while [[ -z $$USB ]]; do \ +	  sleep 1; \ +	  ls /dev/tty* > /tmp/2; \ +	  USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ +	done; \ +	avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude diff --git a/keyboards/lets_split/keymaps/hexwire/Makefile b/keyboards/lets_split/keymaps/hexwire/Makefile new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/Makefile @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/lets_split/keymaps/hexwire/README.md b/keyboards/lets_split/keymaps/hexwire/README.md new file mode 100644 index 0000000000..edf2b66276 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/README.md @@ -0,0 +1,108 @@ +Hexwire's Let's Split Layout +============================ + +### Changes from default layout + +- Main layer +    - The right space bar key has been changed to backspace, as I only hit space with my left thumb +    - Backtick is at the lower right and also serves goes to the 3rd function layer when held +    - Enter key acts as shift when held +    - Escape key acts as control when held +    - Minus key at upper right +- Lower layer +    - Numbers are on the lower layer, to make it easier to use a numpad on the right hand +    - Arrow keys +    - Straight and curly brackets in the middle two columns +    - Screenshot keys for MacOS +- Upper layer +    - Symbols are on the upper layer +    - Media keys +    - Page Up/Down, Home/End +- 3rd function layer +    - Function keys + +## Layouts + +### Qwerty + +``` +,----+----+----+----+----+----.    ,----+----+----+----+----+----. + TAB , Q  , W  , E  , R  , T  ,      Y  , U  , I  , O  , P  ,MINS, +|----+----+----+----+----+----|    |----+----+----+----+----+----| +  X0 , A  , S  , D  , F  , G  ,      H  , J  , K  , L  ,SCLN,QUOT, +|----+----+----+----+----+----|    |----+----+----+----+----+----| + LSFT, Z  , X  , C  , V  , B  ,      N  , M  ,COMM,DOT ,SLSH, X4 , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +  X3 ,LCTL,LALT,LGUI, X1 ,SPC ,     BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----'    `----+----+----+----+----+----' +``` + +### Colemak + +``` +,----+----+----+----+----+----.    ,----+----+----+----+----+----. + TAB , Q  , W  , F  , P  , G  ,      J  , L  , U  , Y  ,SCLN,MINS, +|----+----+----+----+----+----|    |----+----+----+----+----+----| +  X0 , A  , R  , S  , T  , D  ,      H  , N  , E  , I  , O  ,QUOT, +|----+----+----+----+----+----|    |----+----+----+----+----+----| + LSFT, Z  , X  , C  , V  , B  ,      K  , M  ,COMM,DOT ,SLSH, X4 , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +  X3 ,LCTL,LALT,LGUI, X1 ,SPC ,     BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----'    `----+----+----+----+----+----' +``` + +### Dvorak + +``` +,----+----+----+----+----+----.    ,----+----+----+----+----+----. + TAB ,QUOT,COMM,DOT , P  , Y  ,      F  , G  , C  , R  , L  ,MINS, +|----+----+----+----+----+----|    |----+----+----+----+----+----| +  X0 , A  , O  , E  , U  , I  ,      D  , H  , R  , N  , S  ,SLSH, +|----+----+----+----+----+----|    |----+----+----+----+----+----| + LSFT,SCLN, Q  , J  , K  , X  ,      B  , M  , W  , V  , Z  , X4 , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +  X3 ,LCTL,LALT,LGUI, X1 ,SPC ,     BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----'    `----+----+----+----+----+----' +``` + +### Lower + +``` +,----+----+----+----+----+----.    ,----+----+----+----+----+----. +     , 1  , 2  , 3  , 4  , 5  ,      6  , 7  , 8  , 9  , 0  ,    , +|----+----+----+----+----+----|    |----+----+----+----+----+----| + DEL ,CAPP,LEFT,RGHT, UP ,LBRC,     RBRC, P4 , P5 , P6 ,PLUS,PIPE, +|----+----+----+----+----+----|    |----+----+----+----+----+----| +     ,CPYP,    ,    ,DOWN,LCBR,     RCBR, P1 , P2 , P3 ,MINS,    , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +     ,    ,    ,    ,    ,    ,     DEL ,    , P0 ,PDOT,    , +`----+----+----+----+----+----'    `----+----+----+----+----+----' +``` + +### Raise + +``` +,----+----+----+----+----+----.    ,----+----+----+----+----+----. +     ,EXLM, AT ,HASH,DLR ,PERC,     CIRC,AMPR,ASTR,LPRN,RPRN,    , +|----+----+----+----+----+----|    |----+----+----+----+----+----| + DEL ,MPRV,MNXT,VOLU,PGUP,UNDS,     EQL ,HOME,    ,    ,    ,BSLS, +|----+----+----+----+----+----|    |----+----+----+----+----+----| + MUTE,MSTP,MPLY,VOLD,PGDN,MINS,     PLUS,END ,    ,    ,    ,    , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +     ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,     +`----+----+----+----+----+----'    `----+----+----+----+----+----' +``` + +### 3rd function layer + +``` +,----+----+----+----+----+----.    ,----+----+----+----+----+----. + F12 , F1 , F2 , F3 , F4 , F5 ,      F6 , F7 , F8 , F9 ,F10 ,F11 , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +     ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +     ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    , +|----+----+----+----+----+----|    |----+----+----+----+----+----| +     ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    +`----+----+----+----+----+----'    `----+----+----+----+----+----' +``` diff --git a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h new file mode 100644 index 0000000000..d9d063fbfe --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h @@ -0,0 +1,23 @@ +#ifndef COMPACT_KEYMAP_H +#define COMPACT_KEYMAP_H + +#define COMPACT_KEYMAP( \ +  k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ +  k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ +  k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ +  k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ +  ) \ +  { \ +    { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \ +    { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \ +    { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \ +    { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \ +    { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \ +    { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \ +    { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \ +    { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \ +  } + +#define KC_ KC_TRNS + +#endif
\ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h new file mode 100644 index 0000000000..b45214fe08 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -0,0 +1,35 @@ +/* +Copyright 2012 Jun Wako <[email protected]> + +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 <http://www.gnu.org/licenses/>. +*/ + + +#define USE_SERIAL + +#define EE_HANDS + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#ifdef SUBPROJECT_rev1 +    #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 +    #include "../../rev2/config.h" +#endif
\ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c new file mode 100644 index 0000000000..796a1fcab0 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -0,0 +1,205 @@ +#include "lets_split.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "compact_keymap.h" + +extern keymap_config_t keymap_config; + +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _FN3 5 +#define _FN4 6 +#define _ADJUST 16 + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK, +  LOWER, +  RAISE, +  FN3, +  FN4, +  ADJUST, +}; + +#define _______ KC_TRNS + +#define KC_CAPW LGUI(LSFT(KC_3))        // Capture whole screen +#define KC_CPYW LGUI(LSFT(LCTL(KC_3)))  // Copy whole screen +#define KC_CAPP LGUI(LSFT(KC_4))        // Capture portion of screen +#define KC_CPYP LGUI(LSFT(LCTL(KC_4)))  // Copy portion of screen +#define KC_X0 MT(MOD_LCTL, KC_ESC) +#define KC_X1 LOWER +#define KC_X2 RAISE +#define KC_X3 LT(_FN3, KC_GRV) +#define KC_X4 MT(MOD_LSFT, KC_ENT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +  [_QWERTY] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----.    ,----+----+----+----+----+----. +     TAB , Q  , W  , E  , R  , T  ,      Y  , U  , I  , O  , P  ,MINS, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +      X0 , A  , S  , D  , F  , G  ,      H  , J  , K  , L  ,SCLN,QUOT, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +     LSFT, Z  , X  , C  , V  , B  ,      N  , M  ,COMM,DOT ,SLSH, X4 , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +      X3 ,LCTL,LALT,LGUI, X1 ,SPC ,     BSPC, X2 ,LEFT,DOWN, UP ,RGHT +  //`----+----+----+----+----+----'    `----+----+----+----+----+----' +  ), + +  [_COLEMAK] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----.    ,----+----+----+----+----+----. +     TAB , Q  , W  , F  , P  , G  ,      J  , L  , U  , Y  ,SCLN,MINS, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +      X0 , A  , R  , S  , T  , D  ,      H  , N  , E  , I  , O  ,QUOT, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +     LSFT, Z  , X  , C  , V  , B  ,      K  , M  ,COMM,DOT ,SLSH, X4 , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +      X3 ,LCTL,LALT,LGUI, X1 ,SPC ,     BSPC, X2 ,LEFT,DOWN, UP ,RGHT +  //`----+----+----+----+----+----'    `----+----+----+----+----+----' +  ), + +  [_DVORAK] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----.    ,----+----+----+----+----+----. +     TAB ,QUOT,COMM,DOT , P  , Y  ,      F  , G  , C  , R  , L  ,MINS, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +      X0 , A  , O  , E  , U  , I  ,      D  , H  , R  , N  , S  ,SLSH, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +     LSFT,SCLN, Q  , J  , K  , X  ,      B  , M  , W  , V  , Z  , X4 , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +      X3 ,LCTL,LALT,LGUI, X1 ,SPC ,     BSPC, X2 ,LEFT,DOWN, UP ,RGHT +  //`----+----+----+----+----+----'    `----+----+----+----+----+----' +  ), + +  [_LOWER] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----.    ,----+----+----+----+----+----. +         , 1  , 2  , 3  , 4  , 5  ,      6  , 7  , 8  , 9  , 0  ,    , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +     DEL ,CAPP,LEFT,RGHT, UP ,LBRC,     RBRC, P4 , P5 , P6 ,PLUS,PIPE, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +         ,CPYP,    ,    ,DOWN,LCBR,     RCBR, P1 , P2 , P3 ,MINS,    , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +         ,    ,    ,    ,    ,    ,     DEL ,    , P0 ,PDOT,    ,    +  //`----+----+----+----+----+----'    `----+----+----+----+----+----' +  ), + +  [_RAISE] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----.    ,----+----+----+----+----+----. +         ,EXLM, AT ,HASH,DLR ,PERC,     CIRC,AMPR,ASTR,LPRN,RPRN,    , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +     DEL ,MPRV,MNXT,VOLU,PGUP,UNDS,     EQL ,HOME,    ,    ,    ,BSLS, +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +     MUTE,MSTP,MPLY,VOLD,PGDN,MINS,     PLUS,END ,    ,    ,    ,    , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +         ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,     +  //`----+----+----+----+----+----'    `----+----+----+----+----+----' +  ), + +  [_FN3] = COMPACT_KEYMAP( +  //,----+----+----+----+----+----.    ,----+----+----+----+----+----. +     F12 , F1 , F2 , F3 , F4 , F5 ,      F6 , F7 , F8 , F9 ,F10 ,F11 , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +         ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +         ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    , +  //|----+----+----+----+----+----|    |----+----+----+----+----+----| +         ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    +  //`----+----+----+----+----+----'    `----+----+----+----+----+----' +  ), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * |      | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn|      |      | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |             |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +  [_ADJUST] = KEYMAP( \ +    _______, RESET  , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \ +    _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \ +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +  ) + + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_dvorak[][2]     = SONG(DVORAK_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} + +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); +        #endif +        persistant_default_layer_set(1UL<<_QWERTY); +      } +      return false; +      break; +    case COLEMAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_colemak, false, 0); +        #endif +        persistant_default_layer_set(1UL<<_COLEMAK); +      } +      return false; +      break; +    case DVORAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +        #endif +        persistant_default_layer_set(1UL<<_DVORAK); +      } +      return false; +      break; +    case LOWER: +      if (record->event.pressed) { +        layer_on(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case RAISE: +      if (record->event.pressed) { +        layer_on(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case ADJUST: +      if (record->event.pressed) { +        layer_on(_ADJUST); +      } else { +        layer_off(_ADJUST); +      } +      return false; +      break; +  } +  return true; +} diff --git a/keyboards/lets_split/keymaps/smt/config.h b/keyboards/lets_split/keymaps/smt/config.h new file mode 100644 index 0000000000..ba271d1ac6 --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/config.h @@ -0,0 +1,34 @@ +/* +Copyright 2012 Jun Wako <[email protected]> + +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 <http://www.gnu.org/licenses/>. +*/ + + +#define USE_SERIAL + +#define MASTER_LEFT +// #define _MASTER_RIGHT +// #define EE_HANDS + + +#ifdef SUBPROJECT_rev1 +    #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 +    #include "../../rev2/config.h" +#endif +#ifdef SUBPROJECT_rev2fliphalf +	#include "../../rev2fliphalf/config.h" +#endif diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c new file mode 100644 index 0000000000..c4bdb7ebc4 --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/keymap.c @@ -0,0 +1,219 @@ +#include "lets_split.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK, +  LOWER, +  RAISE, +  ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +// Custom macros +#define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl +#define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift +#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV     MEH_T(KC_GRV)               // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab  |   Q  |   W  |   E  |   R  |   T  | |   Y  |   U  |   I  |   O  |   P  | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc  |   A  |   S  |   D  |   F  |   G  | |   H  |   J  |   K  |   L  |   ;  |  "   | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  | |   N  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |   `  | Ctrl | Alt  | GUI  |Lower |Space | |Space |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------' `-----------------------------------------' + */ +[_QWERTY] = KEYMAP( \ +  HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \ +  CTL_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, SFT_ENT, \ +  MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +), + +/* Colemak + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab  |   Q  |   W  |   F  |   P  |   G  | |   J  |   L  |   U  |   Y  |   ;  | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc  |   A  |   R  |   S  |   T  |   D  | |   H  |   N  |   E  |   I  |   O  |  "   | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  | |   K  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |   `  | Ctrl | Alt  | GUI  |Lower |Space | |Space |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------' `-----------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ +  HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \ +  CTL_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, SFT_ENT, \ +  MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +), + +/* Dvorak + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab  |   "  |   ,  |   .  |   P  |   Y  | |   F  |   G  |   C  |   R  |   L  | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  | |   D  |   H  |   T  |   N  |   S  |  -   | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift|   ;  |   Q  |   J  |   K  |   X  | |   B  |   M  |   W  |   V  |   Z  |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |   `  | Ctrl | Alt  | GUI  |Lower |Space | |Space |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------' `-----------------------------------------' + */ +[_DVORAK] = KEYMAP( \ +  HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \ +  CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, \ +  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT, \ +  MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +), + +/* Lower + * ,-----------------------------------------. ,-----------------------------------------. + * |   0  |   1  |   2  |   3  |   4  |   5  | |   6  |   7  |   8  |   9  |   0  | Del  | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |   $  |  F1  |  F2  |  F3  |  F4  |  F5  | |  F6  |   4  |   5  |   6  |      |      | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 | |  F12 |   1  |   2  |   3  |      |      | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |      |      |      | |      |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `-----------------------------------------' + */ +[_LOWER] = KEYMAP( \ +  ALL_T(KC_0),   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL, \ +  CTL_T(KC_DLR), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_4,    KC_5,    KC_6,    _______, _______, \ +  _______,       KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_1,    KC_2,    KC_3,    _______, _______, \ +  _______,       _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------. ,-----------------------------------------. + * |   ~  |   !  |   @  |   #  |   $  |   %  | |   ^  |   &  |   *  |   (  |   )  | Del  | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |      |      |      | |   _  |   ?  |   +  |   {  |   }  |  |   | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |      |      |      | |   -  |   /  |   =  |   [  |   ]  |  \   | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |      |      |      | |      |      | Home |PageDn|PageUp| End  | + * `-----------------------------------------' `-----------------------------------------' + */ +[_RAISE] = KEYMAP( \ +  ALL_T(KC_TILD), KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ +  _______,        _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ +  _______,        _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL,  KC_LBRC, KC_RBRC, SFT_T(KC_BSLS), \ +  _______,        _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------. ,-----------------------------------------. + * |      | Reset|      |      |      |      | |      |      |      |      |      | Reset| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |Aud on|Audoff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak|      |      | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |      |      |      | |      |      |      |      |      |      | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |      |      |      |      |      |      | |      |      |      |      |      |      | + * `-----------------------------------------' `-----------------------------------------' + */ +[_ADJUST] = KEYMAP( \ +  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ +  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \ +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_dvorak[][2]     = SONG(DVORAK_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} + +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); +        #endif +        persistant_default_layer_set(1UL<<_QWERTY); +      } +      return false; +      break; +    case COLEMAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_colemak, false, 0); +        #endif +        persistant_default_layer_set(1UL<<_COLEMAK); +      } +      return false; +      break; +    case DVORAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +        #endif +        persistant_default_layer_set(1UL<<_DVORAK); +      } +      return false; +      break; +    case LOWER: +      if (record->event.pressed) { +        layer_on(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case RAISE: +      if (record->event.pressed) { +        layer_on(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case ADJUST: +      if (record->event.pressed) { +        layer_on(_ADJUST); +      } else { +        layer_off(_ADJUST); +      } +      return false; +      break; +  } +  return true; +} diff --git a/keyboards/lets_split/keymaps/smt/readme.md b/keyboards/lets_split/keymaps/smt/readme.md new file mode 100644 index 0000000000..20bc662f0a --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/readme.md @@ -0,0 +1,88 @@ +# smt's Let's Split keymap + +This keymap is ported from my Planck keymap. + + +## Qwerty + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab  |   Q  |   W  |   E  |   R  |   T  | |   Y  |   U  |   I  |   O  |   P  | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc  |   A  |   S  |   D  |   F  |   G  | |   H  |   J  |   K  |   L  |   ;  |  "   | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift|   Z  |   X  |   C  |   V  |   B  | |   N  |   M  |   ,  |   .  |   /  |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|   `  | Ctrl | Alt  | GUI  |Lower |Space | |Space |Raise | Left | Down |  Up  |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Colemak + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab  |   Q  |   W  |   F  |   P  |   G  | |   J  |   L  |   U  |   Y  |   ;  | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc  |   A  |   R  |   S  |   T  |   D  | |   H  |   N  |   E  |   I  |   O  |  "   | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift|   Z  |   X  |   C  |   V  |   B  | |   K  |   M  |   ,  |   .  |   /  |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|   `  | Ctrl | Alt  | GUI  |Lower |Space | |Space |Raise | Left | Down |  Up  |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab  |   "  |   ,  |   .  |   P  |   Y  | |   F  |   G  |   C  |   R  |   L  | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc  |   A  |   O  |   E  |   U  |   I  | |   D  |   H  |   T  |   N  |   S  |  -   | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift|   ;  |   Q  |   J  |   K  |   X  | |   B  |   M  |   W  |   V  |   Z  |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|   `  | Ctrl | Alt  | GUI  |Lower |Space | |Space |Raise | Left | Down |  Up  |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Lower + +``` +,-----------------------------------------. ,-----------------------------------------. +|   0  |   1  |   2  |   3  |   4  |   5  | |   6  |   7  |   8  |   9  |   0  | Del  | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|   $  |  F1  |  F2  |  F3  |  F4  |  F5  | |  F6  |   4  |   5  |   6  |      |      | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |  F7  |  F8  |  F9  |  F10 |  F11 | |  F12 |   1  |   2  |   3  |      |      | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |      |      |      | |      |      | Next | Vol- | Vol+ | Play | +`-----------------------------------------' `-----------------------------------------' +``` + +## Raise + +``` +,-----------------------------------------. ,-----------------------------------------. +|   ~  |   !  |   @  |   #  |   $  |   %  | |   ^  |   &  |   *  |   (  |   )  | Del  | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |      |      |      | |   _  |   ?  |   +  |   {  |   }  |  |   | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |      |      |      | |   -  |   /  |   =  |   [  |   ]  |  \   | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |      |      |      | |      |      | Home |PageDn|PageUp| End  | +`-----------------------------------------' `-----------------------------------------' +``` + +## Adjust (Lower + Raise) + +``` +,-----------------------------------------. ,-----------------------------------------. +|      | Reset|      |      |      |      | |      |      |      |      |      | Reset| +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |Aud on|Audoff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak|      |      | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |      |      |      | |      |      |      |      |      |      | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|      |      |      |      |      |      | |      |      |      |      |      |      | +`-----------------------------------------' `-----------------------------------------' +``` diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index 51e5a40bfe..708f699da9 100644 --- a/keyboards/planck/keymaps/smt/keymap.c +++ b/keyboards/planck/keymaps/smt/keymap.c @@ -11,15 +11,17 @@ extern keymap_config_t keymap_config;  // The underscores don't mean anything - you can have a layer called STUFF or any other name.  // Layer names don't all need to be of the same length, obviously, and you can also skip them  // entirely and just use numbers. -#define _DVORAK 0 -#define _QWERTY 1 -#define _LOWER 2 -#define _RAISE 3 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4  #define _ADJUST 16  enum planck_keycodes { -  DVORAK = SAFE_RANGE, -  QWERTY, +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK,    LOWER,    RAISE,    BACKLIT @@ -29,60 +31,84 @@ enum planck_keycodes {  #define _______ KC_TRNS  #define XXXXXXX KC_NO +// Custom macros +#define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl +#define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift +#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV     MEH_T(KC_GRV)               // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) +  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Dvorak +/* Qwerty   * ,-----------------------------------------------------------------------------------. - * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | + * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | + * |   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |   * `-----------------------------------------------------------------------------------'   */ -[_DVORAK] = { -  {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_MINS}, -  {SFT_T(KC_ESC), KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z, SFT_T(KC_ENT)}, -  {ALL_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,      KC_RGHT} +[_QWERTY] = { +  {HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC}, +  {CTL_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, SFT_ENT}, +  {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}  }, -/* Qwerty +/* Colemak   * ,-----------------------------------------------------------------------------------. - * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp | + * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   | + * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter | + * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | + * |   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |   * `-----------------------------------------------------------------------------------'   */ -[_QWERTY] = { -  {_______, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC}, -  {_______, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT}, -  {_______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______}, -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +[_COLEMAK] = { +  {HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC}, +  {CTL_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, SFT_ENT}, +  {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { +  {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC}, +  {CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS}, +  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT}, +  {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}  },  /* Lower   * ,-----------------------------------------------------------------------------------. - * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  | + * |   0  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  | Home |PageUp| + * |   $  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  |      |      |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  | End  |PageDn| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |   * `-----------------------------------------------------------------------------------'   */  [_LOWER] = { -  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, -  {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_4,    KC_5,    KC_6,    KC_HOME, KC_PGUP}, -  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_1,    KC_2,    KC_3,    KC_END,  KC_PGDN}, -  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +  {ALL_T(KC_0),   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, +  {CTL_T(KC_DLR), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_4,    KC_5,    KC_6,    _______, _______}, +  {_______,       KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_1,    KC_2,    KC_3,    _______, _______}, +  {_______,       _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}  },  /* Raise @@ -93,21 +119,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |      |      |      |      |      |   -  |   /  |   =  |   [  |   ]  |  \   |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | + * |      |      |      |      |      |      |      |      | Home |PageDn|PageUp| End  |   * `-----------------------------------------------------------------------------------'   */  [_RAISE] = { -  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, -  {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, -  {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS}, -  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +  {ALL_T(KC_TILD), KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, +  {_______,        _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, +  {_______,        _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL,  KC_LBRC, KC_RBRC, SFT_T(KC_BSLS)}, +  {_______,        _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}  },  /* Adjust (Lower + Raise)   * ,-----------------------------------------------------------------------------------. - * |      | Reset|      |      |      |      |      |      |      |      |      |  Del | + * |      | Reset|      |      |      |      |      |      |      |      |      | Reset|   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Dvorak|Qwerty|      |      |      | + * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -115,8 +141,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * `-----------------------------------------------------------------------------------'   */  [_ADJUST] = { -  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, -  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, DVORAK,  QWERTY,  _______, _______, _______}, +  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, +  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},    {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},    {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}  } @@ -128,6 +154,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  float tone_startup[][2]    = SONG(STARTUP_SOUND);  float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND);  float tone_dvorak[][2]     = SONG(DVORAK_SOUND);  float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND); @@ -142,21 +169,30 @@ void persistant_default_layer_set(uint16_t default_layer) {  bool process_record_user(uint16_t keycode, keyrecord_t *record) {    switch (keycode) { -    case DVORAK: +    case QWERTY:        if (record->event.pressed) {          #ifdef AUDIO_ENABLE -          PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);          #endif -        persistant_default_layer_set(1UL<<_DVORAK); +        persistant_default_layer_set(1UL<<_QWERTY);        }        return false;        break; -    case QWERTY: +    case COLEMAK:        if (record->event.pressed) {          #ifdef AUDIO_ENABLE -          PLAY_NOTE_ARRAY(tone_qwerty, false, 0); +          PLAY_NOTE_ARRAY(tone_colemak, false, 0);          #endif -        persistant_default_layer_set(1UL<<_QWERTY); +        persistant_default_layer_set(1UL<<_COLEMAK); +      } +      return false; +      break; +    case DVORAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +        #endif +        persistant_default_layer_set(1UL<<_DVORAK);        }        return false;        break; diff --git a/keyboards/planck/keymaps/smt/readme.md b/keyboards/planck/keymaps/smt/readme.md index 0e955a5742..dc7c9cf9f1 100644 --- a/keyboards/planck/keymaps/smt/readme.md +++ b/keyboards/planck/keymaps/smt/readme.md @@ -4,49 +4,70 @@ This keymap is primarily based on the default Planck keymap.  Notable differences from the default are: -1. **Dvorak by default** +- **[Mod-Tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys** -    I happen to type in Dvorak, and prefer that layer to be the default on my keyboard. This is easy enough to switch around with Qwerty, Colemak, or whatever. +    - `Esc/Ctrl` -2. **Right Shift** +        I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... -    I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. +    - `Enter/Shift` -    Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome! +        I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. -3. Escape +    - `Tab/Hyper` (Super+Ctrl+Shift+Alt) -    I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... +        It's great to be able to use Tab as a custom modifier key. I tend to use [Hyper](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) commands for various OS-specific operations depending on what machine I'm working on. -4. Backtick +    - `Backtick/Meh` (Ctrl+Shift+Alt) -    I don't currently have LEDs on any of my keyboards, and even if I did, I don't think I would want their controls on a base layer. +        Why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. The "Meh" mapping is just a less-cool "Hyper"; the same, just without Super. -    So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. +- **Swapped responsibilities of "lower" and "raise" layers** -## Dvorak (default) +    I prefer to use symbols via the "raise" layer, and numbers via the "lower" layer. + +- **Removed Plover layer** + +    I don't intend to use stenography anytime soon, so Plover just didn't have a place in my keymap. + + +## Qwerty  ```  ,-----------------------------------------------------------------------------------. -| Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | +| Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |  |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | +| Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |  |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | +| Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |  |------+------+------+------+------+------+------+------+------+------+------+------| -|   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | +|   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |  `-----------------------------------------------------------------------------------'  ``` -## Qwerty (same as default) +## Colemak  ```  ,-----------------------------------------------------------------------------------. -| Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp | +| Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |  |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   | +| Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |  |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter | +| Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +|   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right | +`-----------------------------------------------------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------------------------------------------------. +| Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |  |------+------+------+------+------+------+------+------+------+------+------+------|  |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |  `-----------------------------------------------------------------------------------' @@ -54,15 +75,15 @@ Notable differences from the default are:  ## Lower -This is where I put the number row, a numpad cluster, function keys, and some light navigation via Home/End/PageUp/PageDn. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. +This is where I put the number row, a numpad cluster, function keys, and media controls.  ```  ,-----------------------------------------------------------------------------------. -|   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  | +|   0  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |  |------+------+------+------+------+-------------+------+------+------+------+------| -|      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  | Home |PageUp| +|   $  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  |      |      |  |------+------+------+------+------+------|------+------+------+------+------+------| -|      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  | End  |PageDn| +|      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  |      |      |  |------+------+------+------+------+------+------+------+------+------+------+------|  |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |  `-----------------------------------------------------------------------------------' @@ -70,7 +91,7 @@ This is where I put the number row, a numpad cluster, function keys, and some li  ## Raise -As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. +As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. I've also added cursorkeys to correspond to the arrows.  I haven't completely filled this layer, which leaves room for future mappings and macros. @@ -82,21 +103,21 @@ I haven't completely filled this layer, which leaves room for future mappings an  |------+------+------+------+------+------|------+------+------+------+------+------|  |      |      |      |      |      |      |   -  |   /  |   =  |   [  |   ]  |  \   |  |------+------+------+------+------+------+------+------+------+------+------+------| -|      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | +|      |      |      |      |      |      |      |      | Home |PageDn|PageUp| End  |  `-----------------------------------------------------------------------------------'  ```  ## Adjust (Lower + Raise) -Utility layer. This is where I'd switch to Qwerty, or ~~fool around with~~ adjust the audio/music settings. +Utility layer. This is where I'd switch between Qwerty and Dvorak, ~~fool around with~~ adjust the audio/music settings, or put the Planck into bootloader mode.  ```  ,-----------------------------------------------------------------------------------. -|      | Reset|      |      |      |      |      |      |      |      |      |  Del | +|      | Reset|      |      |      |      |      |      |      |      |      | Reset|  |------+------+------+------+------+-------------+------+------+------+------+------| -|      |      |      |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty|      |      |      | +|      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |  |------+------+------+------+------+------|------+------+------+------+------+------| -|      |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff|      |      |      |      |      | +|      |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|      |      |      |      |      |  |------+------+------+------+------+------+------+------+------+------+------+------|  |      |      |      |      |      |             |      |      |      |      |      |  `-----------------------------------------------------------------------------------' diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk index 4423d422f6..6776062f6d 100644 --- a/keyboards/planck/rules.mk +++ b/keyboards/planck/rules.mk @@ -56,13 +56,13 @@ EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)  CONSOLE_ENABLE ?= no         # Console for debug(+400)  COMMAND_ENABLE ?= no        # Commands for debug and configuration  NKRO_ENABLE ?= no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no      # Enable keyboard backlight functionality +BACKLIGHT_ENABLE ?= yes      # Enable keyboard backlight functionality  MIDI_ENABLE ?= yes            # MIDI controls  AUDIO_ENABLE ?= yes           # 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. -API_SYSEX_ENABLE = yes +API_SYSEX_ENABLE = no  # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE  SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c index ba05d9ad53..a10deb7500 100644 --- a/keyboards/preonic/keymaps/smt/keymap.c +++ b/keyboards/preonic/keymaps/smt/keymap.c @@ -9,15 +9,17 @@  // The underscores don't mean anything - you can have a layer called STUFF or any other name.  // Layer names don't all need to be of the same length, obviously, and you can also skip them  // entirely and just use numbers. -#define _DVORAK 0 -#define _QWERTY 1 -#define _LOWER 2 -#define _RAISE 3 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4  #define _ADJUST 16  enum preonic_keycodes { -  DVORAK = SAFE_RANGE, -  QWERTY, +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK,    LOWER,    RAISE,    BACKLIT @@ -27,69 +29,96 @@ enum preonic_keycodes {  #define _______ KC_TRNS  #define XXXXXXX KC_NO +// Custom macros +#define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl +#define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift +#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV     MEH_T(KC_GRV)               // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) +  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Dvorak +/* Qwerty   * ,-----------------------------------------------------------------------------------.   * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | + * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | + * |   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |   * `-----------------------------------------------------------------------------------'   */ -[_DVORAK] = { -  {KC_GRV,        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,       KC_BSPC}, -  {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_MINS}, -  {SFT_T(KC_ESC), KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z, SFT_T(KC_ENT)}, -  {ALL_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,      KC_RGHT} +[_QWERTY] = { +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, +  {HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC}, +  {CTL_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, SFT_ENT}, +  {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}  }, -/* Qwerty +/* Colemak   * ,-----------------------------------------------------------------------------------.   * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp | + * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   | + * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter | + * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right | + * |   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |   * `-----------------------------------------------------------------------------------'   */ -[_QWERTY] = { -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, -  {_______, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    _______}, -  {_______, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT}, -  {_______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, _______}, -  {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +[_COLEMAK] = { +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, +  {HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC}, +  {CTL_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, SFT_ENT}, +  {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { +  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, +  {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC}, +  {CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS}, +  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT}, +  {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}  },  /* Lower   * ,-----------------------------------------------------------------------------------.   * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  | + * |   0  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  | Home |PageUp| + * |   $  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  |      |      |   * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  | End  |PageDn| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------|   * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |   * `-----------------------------------------------------------------------------------'   */  [_LOWER] = { -  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, -  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, -  {_______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_4,    KC_5,    KC_6,    KC_HOME, KC_PGUP}, -  {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_1,    KC_2,    KC_3,    KC_END,  KC_PGDN}, -  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +  {ALL_T(KC_GRV), KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, +  {ALL_T(KC_0),   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL}, +  {CTL_T(KC_DLR), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_4,    KC_5,    KC_6,    _______, _______}, +  {_______,       KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_1,    KC_2,    KC_3,    _______, _______}, +  {_______,       _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}  },  /* Raise @@ -102,24 +131,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |      |      |      |      |      |   -  |   /  |   =  |   [  |   ]  |  \   |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | + * |      |      |      |      |      |      |      |      | Home |PageDn|PageUp| End  |   * `-----------------------------------------------------------------------------------'   */  [_RAISE] = { -  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, -  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, -  {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, -  {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS}, -  {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +  {ALL_T(KC_TILD), KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, +  {ALL_T(KC_TILD), KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, +  {_______,        _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, +  {_______,        _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL,  KC_LBRC, KC_RBRC, SFT_T(KC_BSLS)}, +  {_______,        _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}  },  /* Adjust (Lower + Raise)   * ,-----------------------------------------------------------------------------------.   * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      | Reset|      |      |      |      |      |      |      |      |      |  Del | + * |      | Reset|      |      |      |      |      |      |      |      |      | Reset|   * |------+------+------+------+------+-------------+------+------+------+------+------| - * |      |      |      |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty|      |      |      | + * |      |      |      |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |   * |------+------+------+------+------+------|------+------+------+------+------+------|   * |      |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff|      |      |      |      |      |   * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -128,8 +157,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   */  [_ADJUST] = {    {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12}, -  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, -  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, DVORAK,  QWERTY,  _______, _______, _______}, +  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, +  {_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______},    {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},    {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}  } @@ -145,8 +174,9 @@ float tone_startup[][2] = {    {NOTE_B6, 8}  }; -float tone_dvorak[][2]     = SONG(DVORAK_SOUND);  float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); +float tone_dvorak[][2]     = SONG(DVORAK_SOUND);  float tone_goodbye[][2] = SONG(GOODBYE_SOUND); @@ -160,21 +190,30 @@ void persistant_default_layer_set(uint16_t default_layer) {  bool process_record_user(uint16_t keycode, keyrecord_t *record) {    switch (keycode) { -        case DVORAK: +        case QWERTY:            if (record->event.pressed) {              #ifdef AUDIO_ENABLE -              PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +              PLAY_NOTE_ARRAY(tone_qwerty, false, 0);              #endif -            persistant_default_layer_set(1UL<<_DVORAK); +            persistant_default_layer_set(1UL<<_QWERTY);            }            return false;            break; -        case QWERTY: +        case COLEMAK:            if (record->event.pressed) {              #ifdef AUDIO_ENABLE -              PLAY_NOTE_ARRAY(tone_qwerty, false, 0); +              PLAY_NOTE_ARRAY(tone_colemak, false, 0);              #endif -            persistant_default_layer_set(1UL<<_QWERTY); +            persistant_default_layer_set(1UL<<_COLEMAK); +          } +          return false; +          break; +        case DVORAK: +          if (record->event.pressed) { +            #ifdef AUDIO_ENABLE +              PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +            #endif +            persistant_default_layer_set(1UL<<_DVORAK);            }            return false;            break; diff --git a/keyboards/preonic/keymaps/smt/readme.md b/keyboards/preonic/keymaps/smt/readme.md index 016da7b01f..2ec2603f3e 100644 --- a/keyboards/preonic/keymaps/smt/readme.md +++ b/keyboards/preonic/keymaps/smt/readme.md @@ -4,53 +4,76 @@ This keymap is primarily based on the default Preonic keymap, which in turn is d  Notable differences from the default are: -1. **Dvorak by default** +- **[Mod-Tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys** -    I happen to type in Dvorak, and prefer that layer to be the default on my keyboard. This is easy enough to switch around with Qwerty, Colemak, or whatever. +    - `Esc/Ctrl` -2. **Right Shift** +        I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... -    I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. +    - `Enter/Shift` -    Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome! +        I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. -3. Escape +    - `Tab/Hyper` (Super+Ctrl+Shift+Alt) -    I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... +        It's great to be able to use Tab as a custom modifier key. I tend to use [Hyper](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) commands for various OS-specific operations depending on what machine I'm working on. -4. Backtick +    - `Backtick/Meh` (Ctrl+Shift+Alt) -    I don't currently have LEDs on any of my keyboards, and even if I did, I don't think I would want their controls on a base layer. +        Why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. The "Meh" mapping is just a less-cool "Hyper"; the same, just without Super. -    So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. +- **Swapped responsibilities of "lower" and "raise" layers** -## Dvorak (default) +    I prefer to use symbols via the "raise" layer, and numbers via the "lower" layer. + +- **Removed Plover layer** + +    I don't intend to use stenography anytime soon, so Plover just didn't have a place in my keymap. + + +## Qwerty  ```  ,-----------------------------------------------------------------------------------.  |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |  |------+------+------+------+------+------+------+------+------+------+------+------| -| Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | +| Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |  |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | +| Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |  |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | +| Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |  |------+------+------+------+------+------+------+------+------+------+------+------|  |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |  `-----------------------------------------------------------------------------------'  ``` -## Qwerty (same as default) +## Colemak  ```  ,-----------------------------------------------------------------------------------.  |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |  |------+------+------+------+------+------+------+------+------+------+------+------| -| Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp | +| Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |  |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   | +| Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |  |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter | +| Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +|   `  | Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right | +`-----------------------------------------------------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------------------------------------------------. +|   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  -   | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |  |------+------+------+------+------+------+------+------+------+------+------+------|  |   `  | Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |  `-----------------------------------------------------------------------------------' @@ -58,17 +81,17 @@ Notable differences from the default are:  ## Lower -This is where I put the number row, a numpad cluster, function keys, and some light navigation via Home/End/PageUp/PageDn. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. +This is where I put the number row, a numpad cluster, function keys, and media controls. Like the "Raise" layer, the top row is redundant to help with Planck compatibility.  ```  ,-----------------------------------------------------------------------------------.  |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |  |------+------+------+------+------+------+------+------+------+------+------+------| -|   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  | +|   0  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |  |------+------+------+------+------+-------------+------+------+------+------+------| -|      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  | Home |PageUp| +|   $  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  |      |      |  |------+------+------+------+------+------|------+------+------+------+------+------| -|      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  | End  |PageDn| +|      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  |      |      |  |------+------+------+------+------+------+------+------+------+------+------+------|  |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |  `-----------------------------------------------------------------------------------' @@ -76,7 +99,7 @@ This is where I put the number row, a numpad cluster, function keys, and some li  ## Raise -As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. +As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. I've also added cursorkeys to correspond to the arrows.  I haven't completely filled this layer, which leaves room for future mappings and macros. @@ -90,21 +113,21 @@ I haven't completely filled this layer, which leaves room for future mappings an  |------+------+------+------+------+------|------+------+------+------+------+------|  |      |      |      |      |      |      |   -  |   /  |   =  |   [  |   ]  |  \   |  |------+------+------+------+------+------+------+------+------+------+------+------| -|      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | +|      |      |      |      |      |      |      |      | Home |PageDn|PageUp| End  |  `-----------------------------------------------------------------------------------'  ```  ## Adjust (Lower + Raise) -Utility layer. This is where I'd switch to Qwerty, or ~~fool around with~~ adjust the audio/music settings. +Utility layer. This is where I'd switch between Qwerty and Dvorak, ~~fool around with~~ adjust the audio/music settings, or put the Preonic into bootloader mode.  ```  ,-----------------------------------------------------------------------------------.  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |  |------+------+------+------+------+------+------+------+------+------+------+------| -|      | Reset|      |      |      |      |      |      |      |      |      |  Del | +|      | Reset|      |      |      |      |      |      |      |      |      | Reset|  |------+------+------+------+------+-------------+------+------+------+------+------| -|      |      |      |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty|      |      |      | +|      |      |      |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |  |------+------+------+------+------+------|------+------+------+------+------+------|  |      |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff|      |      |      |      |      |  |------+------+------+------+------+------+------+------+------+------+------+------| diff --git a/keyboards/preonic/rules.mk b/keyboards/preonic/rules.mk index 62473e3564..6be5b55bcd 100644 --- a/keyboards/preonic/rules.mk +++ b/keyboards/preonic/rules.mk @@ -58,13 +58,13 @@ EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)  CONSOLE_ENABLE ?= no         # Console for debug(+400)  COMMAND_ENABLE ?= no        # Commands for debug and configuration  NKRO_ENABLE ?= no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no      # Enable keyboard backlight functionality +BACKLIGHT_ENABLE ?= yes      # Enable keyboard backlight functionality  MIDI_ENABLE ?= yes            # MIDI controls  AUDIO_ENABLE ?= yes           # 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. -API_SYSEX_ENABLE ?= yes +API_SYSEX_ENABLE ?= no  # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE  SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
\ No newline at end of file diff --git a/keyboards/tv44/keymaps/smt/keymap.c b/keyboards/tv44/keymaps/smt/keymap.c index de5ce03e25..532e74de08 100644 --- a/keyboards/tv44/keymaps/smt/keymap.c +++ b/keyboards/tv44/keymaps/smt/keymap.c @@ -32,8 +32,8 @@ enum planck_keycodes {  // Custom macros  #define CTL_ESC     CTL_T(KC_ESC)               // Tap for Esc, hold for Ctrl  #define SFT_ENT     SFT_T(KC_ENT)               // Tap for Enter, hold for Shift -#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper -#define ALT_GRV     ALT_T(KC_GRV)               // Tap for Backtick, hold for Alt +#define HPR_TAB     ALL_T(KC_TAB)               // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define ALT_GRV     ALT_T(KC_GRV)               // Tap for Backtick, hold for Alt (Ctrl+Alt+Shift)  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -117,13 +117,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   */  [_LOWER] = KEYMAP_TV45(  /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ -    KC_0   ,   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL       , +ALL_T(KC_0),   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL       ,  /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ -    KC_DLR  ,   KC_4,    KC_5,    KC_6,  KC_DOT, KC_PLUS, KC_ASTR,    KC_4,    KC_5,    KC_6,  KC_DOT,    KC_PGUP     , +CTL_T(KC_DLR),  KC_4,    KC_5,    KC_6,  KC_DOT, KC_PLUS, KC_ASTR,    KC_4,    KC_5,    KC_6,  KC_DOT,    KC_PGUP     ,  /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ -    KC_EQL   ,   KC_7,    KC_8,    KC_9,    KC_0, KC_MINS, KC_SLSH,    KC_1,    KC_2,    KC_3,   KC_UP,    KC_PGDN    , +SFT_T(KC_EQL),   KC_7,    KC_8,    KC_9,    KC_0, KC_MINS, KC_SLSH,    KC_1,    KC_2,    KC_3,   KC_UP, SFT_T(KC_PGDN),  /*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ -    BACKLIT ,   _______     , _______ ,     KC_HOME    ,      KC_END     , _______ ,  KC_LEFT, KC_DOWN,     KC_RGHT   ), +ALT_T(BACKLIT),   _______   , _______ ,     KC_HOME    ,      KC_END     , _______ ,  KC_LEFT, KC_DOWN,     KC_RGHT   ),  /*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/  /* Raise @@ -139,18 +139,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   */  [_RAISE] = KEYMAP_TV45(  /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ -    KC_TILD,KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,    KC_DEL       , +ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH,  KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,    KC_DEL       ,  /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ -    KC_F1,     KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR,    KC_PIPE     , +CTL_T(KC_F1),  KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR,    KC_PIPE     ,  /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ -    KC_F7,      KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, KC_MINS, KC_SLSH,  KC_EQL, KC_LBRC, KC_RBRC,    KC_BSLS    , + SFT_T(KC_F7),  KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, KC_MINS, KC_SLSH,  KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS),  /*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ -    BACKLIT ,   _______     , _______ ,     KC_MPLY    ,     KC_MNXT     , _______ ,  KC_MUTE, KC_VOLD,     KC_VOLU   ), +ALT_T(BACKLIT),   _______   , _______ ,     KC_MPLY    ,     KC_MNXT     , _______ ,  KC_MUTE, KC_VOLD,     KC_VOLU   ),  /*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/  /* Adjust (Lower + Raise)   * ,---------+------+------+------+------+------+------+------+------+------+------+---------. - * |         | Reset|      |      |      |      |      |      |      |      |      |   Del   | + * |         | Reset|      |      |      |      |      |      |      |      |      |  Reset  |   * |---------`------`------`------`------`------`------`------`------`------`------`---------|   * |          |      |      |      |      |AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |        |   * |----------`------`------`------`------`------`------`------`------`------`------`--------| @@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   */  [_ADJUST] = KEYMAP_TV45(  /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ -    _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______,     KC_DEL      , +    _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______,      RESET      ,  /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/      _______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP,  QWERTY, COLEMAK,  DVORAK, _______,    _______     ,  /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ diff --git a/quantum/quantum.c b/quantum/quantum.c index 4a6d0355fa..582f8920b1 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -7,6 +7,9 @@  #define TAPPING_TERM 200  #endif +#include "backlight.h" +extern backlight_config_t backlight_config; +  #ifdef FAUXCLICKY_ENABLE  #include "fauxclicky.h"  #endif @@ -601,6 +604,10 @@ void matrix_scan_quantum() {      matrix_scan_combo();    #endif +  #if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_PIN) +    backlight_task(); +  #endif +    matrix_scan_kb();  } @@ -668,13 +675,13 @@ __attribute__ ((weak))  void backlight_set(uint8_t level)  {    // Prevent backlight blink on lowest level -  #if BACKLIGHT_ON_STATE == 0 -    // PORTx &= ~n -    _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); -  #else -    // PORTx |= n -    _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); -  #endif +  // #if BACKLIGHT_ON_STATE == 0 +  //   // PORTx &= ~n +  //   _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +  // #else +  //   // PORTx |= n +  //   _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +  // #endif    if ( level == 0 ) {      #ifndef NO_BACKLIGHT_CLOCK @@ -682,13 +689,13 @@ void backlight_set(uint8_t level)        TCCR1A &= ~(_BV(COM1x1));        OCR1x = 0x0;      #else -      #if BACKLIGHT_ON_STATE == 0 -        // PORTx |= n -        _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); -      #else -        // PORTx &= ~n -        _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); -      #endif +      // #if BACKLIGHT_ON_STATE == 0 +      //   // PORTx |= n +      //   _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +      // #else +      //   // PORTx &= ~n +      //   _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +      // #endif      #endif    }     #ifndef NO_BACKLIGHT_CLOCK @@ -711,6 +718,30 @@ void backlight_set(uint8_t level)    #endif  } +uint8_t backlight_tick = 0; + +void backlight_task(void) { +  #ifdef NO_BACKLIGHT_CLOCK +  if ((0xFFFF >> ((BACKLIGHT_LEVELS - backlight_config.level) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) {  +    #if BACKLIGHT_ON_STATE == 0 +      // PORTx &= ~n +      _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +    #else +      // PORTx |= n +      _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +    #endif +  } else { +    #if BACKLIGHT_ON_STATE == 0 +      // PORTx |= n +      _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); +    #else +      // PORTx &= ~n +      _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); +    #endif +  } +  backlight_tick = (backlight_tick + 1) % 16; +  #endif +}  #ifdef BACKLIGHT_BREATHING diff --git a/quantum/quantum.h b/quantum/quantum.h index 580d51202a..259bac3697 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -103,6 +103,7 @@ void unregister_code16 (uint16_t code);  #ifdef BACKLIGHT_ENABLE  void backlight_init_ports(void); +void backlight_task(void);  #ifdef BACKLIGHT_BREATHING  void breathing_enable(void); @@ -1,6 +1,6 @@  # Quantum Mechanical Keyboard Firmware -[](https://travis-ci.org/jackhumbert/qmk_firmware) [](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[](https://travis-ci.org/qmk/qmk_firmware) [](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)  This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). | 
