From 08963796d8ec370e1ee14d157d39cc6cfb78222f Mon Sep 17 00:00:00 2001 From: Logan Bussell <36081148+lbussell@users.noreply.github.com> Date: Mon, 13 Aug 2018 15:37:11 -0400 Subject: [PATCH] Keymap: Added buswerks ortho_4x12 keymap (#3623) * Added buswerks keymap * cleaned up comments on buswerks keymap * Added buswerks keymap readme.md * Fixed spelling in buswerks readme.md * Removed unnecessary includes, changed process_record_user to now use set_single_persistent_default_layer(), removed deprecated functions, and moved the audio ifdef block to config.h --- .../community/ortho_4x12/buswerks/config.h | 22 +++ .../community/ortho_4x12/buswerks/keymap.c | 154 ++++++++++++++++++ .../community/ortho_4x12/buswerks/readme.md | 28 ++++ 3 files changed, 204 insertions(+) create mode 100644 layouts/community/ortho_4x12/buswerks/config.h create mode 100644 layouts/community/ortho_4x12/buswerks/keymap.c create mode 100644 layouts/community/ortho_4x12/buswerks/readme.md diff --git a/layouts/community/ortho_4x12/buswerks/config.h b/layouts/community/ortho_4x12/buswerks/config.h new file mode 100644 index 000000000..1498cae74 --- /dev/null +++ b/layouts/community/ortho_4x12/buswerks/config.h @@ -0,0 +1,22 @@ +#pragma once + +/* Use I2C or Serial, not both */ + +#define USE_SERIAL +// #define USE_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define _MASTER_RIGHT +// #define EE_HANDS + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif \ No newline at end of file diff --git a/layouts/community/ortho_4x12/buswerks/keymap.c b/layouts/community/ortho_4x12/buswerks/keymap.c new file mode 100644 index 000000000..776ea461b --- /dev/null +++ b/layouts/community/ortho_4x12/buswerks/keymap.c @@ -0,0 +1,154 @@ +#include QMK_KEYBOARD_H + +extern keymap_config_t keymap_config; + +#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 KC_ KC_TRNS +#define XXXXXXX KC_NO + +#define ESC_CMD MT(MOD_LGUI, KC_ESC) +#define RSE_ENT LT(_RAISE, KC_ENT) +#define KC_LOWR LOWER +#define KC_RASE RAISE +#define KC_ADJ ADJUST + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT_ortho_4x12( \ + // .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I, KC_O , KC_P , KC_BSPC, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K, KC_L , KC_SCLN, KC_QUOT, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_LSFT, RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \ + // '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------' +), + +[_COLEMAK] = LAYOUT_ortho_4x12( \ + // .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSPC, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + ESC_CMD, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_LSFT, RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \ + // '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------' +), + +[_DVORAK] = LAYOUT_ortho_4x12( \ + // .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_LSFT, RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \ + // '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------' +), + +[_LOWER] = LAYOUT_ortho_4x12( \ + // .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. + KC_TILD, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_MINS, KC_DEL, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_4, KC_5, KC_6, KC_PLUS, KC_PIPE, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, KC_CIRC, KC_ASTR, KC_UNDS, KC_EQL, KC_AMPR, _______, KC_1, KC_2, KC_3, KC_SLSH, _______, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______ \ + // '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------' +), + +[_RAISE] = LAYOUT_ortho_4x12( \ + // .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. + KC_GRV, _______, _______, KC_LPRN, KC_RPRN, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, KC_DEL, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, KC_LCBR, KC_RCBR, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, KC_BSLS, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, \ + // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + // '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------' +), + +[_ADJUST] = LAYOUT_ortho_4x12( \ + KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \ + _______, _______, RESET, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_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; +} \ No newline at end of file diff --git a/layouts/community/ortho_4x12/buswerks/readme.md b/layouts/community/ortho_4x12/buswerks/readme.md new file mode 100644 index 000000000..452116423 --- /dev/null +++ b/layouts/community/ortho_4x12/buswerks/readme.md @@ -0,0 +1,28 @@ +Buswerks' 4x12 Ortholinear Layout +============================ +For use on Planck, Let's Split, and similar keyboards + +### Layout Overview + +- Main Layer + - An additional shift key is located on the right space key (only works for grid layouts) + - Enter is located on the Raise key (layer-tap) + - The left and right shift keys function as Space Cadet shift keys + - The bottom left key is the Adjust modifier + - Escape is in the traditional Caps Lock position + - Holding down the escape key acts as LGUI (intended for macOS use) +- Lower + - There is a numpad on the right hand (4, 5, and 6 are located under JKL/NEI/HTN) + - Plus and minus keys are located to the right of the numpad + - All other symbols are located on the other side of the keyboard, in a somewhat logical order + - Symbols from the number row are in order, starting on the left pinky. + - Equals and underscore are in easily accessible spots, because they are more commonly used in programming + - The ampersand is less common, so it is moved to the right of the equals symbol +- Raise + - Vim-style arrow keys + - Above the arrow keys are media controls + - Below are home, end, pgup, and pgdn + - The left hand has all three types of braces + - Curly braces are under the index and middle fingers for easy access during programming, and because parentheses are already available through Space Cadet shift +- Adjust + - Function keys are located along the top row (reset is moved to accommodate this) \ No newline at end of file