forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Keymap] DCompact Layout Updates pt. 3 (qmk#5209)
* Fix whitespace and Markdown errors * Add DCompact layout implementation for Levinson keyboard * Rename README.md to readme.md * Rename README.md to readme.md * Rename README.md to readme.md * Update keyboards/keebio/levinson/keymaps/dcompact/keymap.c Co-Authored-By: loksonarius <[email protected]> * Update keyboards/keebio/levinson/keymaps/dcompact/keymap.c Co-Authored-By: loksonarius <[email protected]>
- Loading branch information
1 parent
1441ac7
commit 4e6e4fc
Showing
7 changed files
with
333 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* | ||
This is the c configuration file for the keymap | ||
Copyright 2012 Jun Wako <[email protected]> | ||
Copyright 2015 Jack Humbert | ||
Copyright 2018 Danny Nguyen <[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/>. | ||
*/ | ||
|
||
#pragma once | ||
|
||
// #define USE_I2C | ||
|
||
/* Select hand configuration */ | ||
// #define MASTER_RIGHT | ||
// #define EE_HANDS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,238 @@ | ||
#include QMK_KEYBOARD_H | ||
|
||
#include "keymap_steno.h" | ||
|
||
// Custom Keycodes and Combinations Used | ||
#define DEL_SHF SFT_T(KC_DEL) | ||
#define QUAKE LCTL(KC_GRV) | ||
|
||
#define WKSP_L LALT(LCTL(KC_LEFT)) | ||
#define WKSP_D LALT(LCTL(KC_DOWN)) | ||
#define WKSP_U LALT(LCTL(KC_UP)) | ||
#define WKSP_R LALT(LCTL(KC_RGHT)) | ||
|
||
|
||
extern keymap_config_t keymap_config; | ||
|
||
enum planck_layers { | ||
_BASE, | ||
_LOWER, | ||
_RAISE, | ||
_FUNC, | ||
_PLOVER, | ||
_ADJUST, | ||
_MOUSE | ||
}; | ||
|
||
enum planck_keycodes { | ||
BASE = SAFE_RANGE, | ||
PLOVER, | ||
LOWER, | ||
RAISE, | ||
FUNC, | ||
MOUSE, | ||
ADJUST, | ||
EXT_PLV | ||
}; | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
|
||
/* Base | ||
* ,-----------------------------------------------------------------------------------. | ||
* | Tab | " ' | < , | > . | P | Y | F | G | C | R | L | ? / | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | Esc | A | O | E | U | I | D | H | T | N | S | _ - | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* |Del/Sf| : ; | Q | J | K | X | B | M | W | V | Z | Bspc | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | Ctrl |Plover| GUI | Alt |Lower |Shift |Space |Raise | Alt | GUI | Fn |Enter | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
[_BASE] = 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_SLSH, \ | ||
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \ | ||
DEL_SHF, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSPC, \ | ||
KC_LCTL, PLOVER, KC_LGUI, KC_LALT, LOWER, KC_LSFT, KC_SPC, RAISE, KC_RALT, KC_RGUI, FUNC, KC_ENT \ | ||
), | ||
|
||
/* Lower | ||
* ,-----------------------------------------------------------------------------------. | ||
* | | | | | | | | Home |PgDwn | PgUp | End | | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | |PrScr | Menu | | | | | Left | Down | Up |Right | | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* | |CapsLk|NumLck| Ins | | | |WkLeft|WkDown| WkUp |WkRigh| | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | | | | | | | |Raise | | | | | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
[_LOWER] = LAYOUT_ortho_4x12( \ | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, \ | ||
XXXXXXX, KC_PSCR, KC_MENU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, \ | ||
XXXXXXX, KC_CAPS, KC_LNUM, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, WKSP_L, WKSP_D, WKSP_U, WKSP_R, XXXXXXX, \ | ||
_______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ | ||
), | ||
|
||
/* Raise | ||
* ,-----------------------------------------------------------------------------------. | ||
* |Quake | ` | ~ | \ | | | ( | ) | 7 | 8 | 9 | / | = | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | | ! | @ | # | $ | { | } | 4 | 5 | 6 | * | + | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* | | % | ^ | & | * | [ | ] | 1 | 2 | 3 | - |Bkspc | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | | | | |Lower | < | > | | 0 | . | , | | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
[_RAISE] = LAYOUT_ortho_4x12( \ | ||
QUAKE, KC_GRV, KC_TILD, KC_BSLS, KC_PIPE, KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_SLSH, KC_EQL, \ | ||
XXXXXXX, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_4, KC_5, KC_6, KC_ASTR, KC_PLUS, \ | ||
XXXXXXX, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_MINS, KC_BSPC, \ | ||
_______, XXXXXXX, _______, _______, _______, KC_LABK, KC_RABK, _______, KC_0, KC_DOT, KC_COMM, XXXXXXX \ | ||
), | ||
|
||
/* Func | ||
* ,-----------------------------------------------------------------------------------. | ||
* | |Sleep |Prev-W|Ply/Ps|Next-W| | | F9 | F10 | F11 | F12 | | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | | Wake | Mute | Vol- | Vol+ | | | F5 | F6 | F7 | F8 | | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* | |Power |Prev-M|Ply/Ps|Next-M| | | F1 | F2 | F3 | F4 | | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | | | | | | | | | | | | | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
[_FUNC] = LAYOUT_ortho_4x12( \ | ||
XXXXXXX, KC_SLEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, \ | ||
XXXXXXX, KC_WAKE, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, \ | ||
XXXXXXX, KC_PWR, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, \ | ||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX \ | ||
), | ||
|
||
/* Mouse (Not Reachable on Planck) | ||
* ,-----------------------------------------------------------------------------------. | ||
* | | | | | | | | | | | | | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | | |Click1|Click3|Click2| | |MouseL|MouseD|MouseU|MouseR| | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* | | |Accel0|Accel1|Accel2| | |ScrllL|ScrllD|ScrllU|ScrllR| | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | | | | | | | | | | | | | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
[_MOUSE] = LAYOUT_ortho_4x12( \ | ||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | ||
XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, \ | ||
XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, XXXXXXX, \ | ||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX \ | ||
), | ||
|
||
/* Plover layer (http://opensteno.org) | ||
* ,-----------------------------------------------------------------------------------. | ||
* | # | # | # | # | # | # | # | # | # | # | # | # | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | FN | S | T | P | H | * | * | F | P | L | T | D | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* | | S | K | W | R | * | * | R | B | G | S | Z | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | Exit | | | A | O | | | E | U | PWR | RES1 | RES2 | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
|
||
[_PLOVER] = LAYOUT_ortho_4x12( \ | ||
STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , \ | ||
STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , \ | ||
XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , \ | ||
EXT_PLV, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2 \ | ||
), | ||
|
||
/* Adjust (Lower + Raise) | ||
* ,-----------------------------------------------------------------------------------. | ||
* | | Reset| | | | | | | | | | Del | | ||
* |------+------+------+------+------+-------------+------+------+------+------+------| | ||
* | | | |Aud on|Audoff|AGnorm|AGswap|RGBTog|RGBMod| | | | | ||
* |------+------+------+------+------+------|------+------+------+------+------+------| | ||
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|Light-|Light+| | | | | ||
* |------+------+------+------+------+------+------+------+------+------+------+------| | ||
* | | | | | | | | | | | | | | ||
* `-----------------------------------------------------------------------------------' | ||
*/ | ||
[_ADJUST] = LAYOUT_ortho_4x12( \ | ||
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \ | ||
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, RGB_TOG, RGB_MOD, _______, _______, _______, \ | ||
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_VAD, RGB_VAI, _______, _______, _______, \ | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | ||
) | ||
|
||
|
||
}; | ||
|
||
#ifdef AUDIO_ENABLE | ||
float plover_song[][2] = SONG(PLOVER_SOUND); | ||
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); | ||
#endif | ||
|
||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
switch (keycode) { | ||
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 FUNC: | ||
if (record->event.pressed) { | ||
layer_on(_FUNC); | ||
} else { | ||
layer_off(_FUNC); | ||
} | ||
return false; | ||
break; | ||
case PLOVER: | ||
if (!record->event.pressed) { | ||
#ifdef AUDIO_ENABLE | ||
stop_all_notes(); | ||
PLAY_SONG(plover_song); | ||
#endif | ||
layer_on(_PLOVER); | ||
} | ||
return false; | ||
break; | ||
case EXT_PLV: | ||
if (record->event.pressed) { | ||
#ifdef AUDIO_ENABLE | ||
PLAY_SONG(plover_gb_song); | ||
#endif | ||
layer_off(_PLOVER); | ||
} | ||
return false; | ||
break; | ||
case MOUSE: | ||
if (record->event.pressed) { | ||
layer_on(_MOUSE); | ||
} else { | ||
layer_off(_MOUSE); | ||
} | ||
return false; | ||
break; | ||
} | ||
return true; | ||
} | ||
|
||
void keyboard_post_init_user(void) { | ||
steno_set_mode(STENO_MODE_GEMINI); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# https://beta.docs.qmk.fm/reference/config-options#feature-options | ||
# Features Specifically Wanted | ||
EXTRAKEY_ENABLE = yes | ||
STENO_ENABLE = yes | ||
NKRO_ENABLE = yes | ||
AUDIO_ENABLE = yes | ||
|
||
# Features taking up space | ||
MOUSEKEY_ENABLE = no | ||
MIDI_ENABLE = no | ||
CONSOLE_ENABLE = no | ||
RGBLIGHT_ENABLE = no | ||
BACKLIGHT_ENABLE = no |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# DCompact Layout | ||
|
||
**Dvorak, Layered, Mouse-Enabled, Compact -- now with Plover~** | ||
|
||
_See [the layout source](keymap.c) for the actual layout_ | ||
|
||
## Goals | ||
|
||
The following are the goals kept in mind when designing the DCompact | ||
layout: | ||
|
||
- Provide minimal travel distance when typing English or coding | ||
- Consistent muscle memory translation from standard QWERTY | ||
- Stateless typing experience | ||
- OS-agnostic features, macros, and key placement | ||
- Minimize dependence on mouse usage | ||
|
||
These are generally all met or balanced within reason. This layout is | ||
not intended at all to be a familiar layout for much of anyone (except | ||
maybe those who already type in Dvorak) -- this is meant to amplify the | ||
best parts of having limited, ortholinear keys with layering. | ||
|
||
## As Reference Material | ||
|
||
If you're reading this hoping to find reference material to implement | ||
your own layout, then please feel free to copy over this layout and | ||
make edits where you see fit. I removed a lot of the features I felt | ||
extraneous to my usage and simplified style where I felt needed. This | ||
would hopefully mean that my code should feel like a good base to | ||
develop from for those new to QMK. | ||
|
||
_Remember that settings defined in the layout directory override and | ||
merge with those in the keyboard folder_ | ||
|
||
## Relevant Links | ||
|
||
- [Online Dvorak Layout Trainer](https://learn.dvorak.nl/) | ||
- [Dvorak Wikipedia Page](https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard) | ||
- [QMK Docs](https://docs.qmk.fm/#/) | ||
- [QMK KeyCode Reference](https://docs.qmk.fm/#/keycodes) | ||
|
||
## Contact | ||
|
||
Maintainer: [Dan](https://github.com/loksonarius) | ||
|