Skip to content

Commit

Permalink
[Keymap] Add Endemoniada keymaps (qmk#6875)
Browse files Browse the repository at this point in the history
* Add dz60 keymap

* Add my TADA68 layout

* Fix descriptions and formatting

* Formatting fixes

* Add readme file

* Formatting

* move caps lock to correct key, add F-keys to both layers

* Add readme for dz60

* First draft of custom Let's Split layout

* Some more keys

* Finalized keymap

* Added a bunch of custom shortcuts to make layout easier to read

* Add PERMISSIVE_HOLD option to modtap behavior

* Add lock and sleep shortcuts, formatting

* Minor fixes and adjustments

* Add PERMISSIVE_HOLD option, add sleep/lock shortcuts, minor fixes

* Add sleep/lock shortcuts, minor fixes

* fixups

* Major simplification of lets_split layout into more standard raise/lower/special layers

* Remove layer songs, add to readme

* Formatting

* Switch a few keys around for reachability

* Add windows/mac specific layers

* simplify layers

* Update README

* Fix legends

* Invert numpad and put Del in upper right corner

* Disable arrow keys on Raise, add build instructions

* Move dz60 keymap to its own branch

* Remove redundant configuration

* Change volume and sleep keycodes to standard

* Removing empty rules.mk

* Changing layer defines to enum

* Adding comment to explain reason for swapping KC_TRNS and KC_NO fillers
  • Loading branch information
Endemoniada authored and Philip Karlsson committed Dec 3, 2019
1 parent f26b4d5 commit 6ddf42d
Show file tree
Hide file tree
Showing 7 changed files with 495 additions and 0 deletions.
65 changes: 65 additions & 0 deletions keyboards/lets_split/keymaps/mekberg/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Let's Mekberg!

This is my take on a Swedish 40% layout in a split format. The priority is to have the most highly used keys opposite the modifier to make chording simpler. In other words, if the layer modifier is on the left half, the most used keys should be bound on the right half.

## Layers

### Default

The default layer has normal alpha layout with the addition of Swedish letters, causing Enter to move down one key and backspace to take the place of the right space. The enter key also doubles as Shift when held.

2nd row left modifier has been bound to both Ctrl and Tab with modtap (hold for Ctrl, tap for Tab).

Delete is available on all non-default layers, positioned on the upper right corner key.

### Raise

The raised layer has all the symbols and special characters predefined. As much as possible, there should be no need to use additional modifiers.

Arrow keys have been disabled on this layer to avoid accidental misclicks when pressing the Raise key.

#### macOS / Windows variants

Because macOS and Windows expect quite different keycodes to produce the same special characters (for example '{' or '|'), there are two different layers, one for each OS. To toggle either macOS (default) and Windows layouts within the RAISE layer, press SPECIAL + W for Windows or SPECIAL + M for macOS.

### Lower

The lower layer focuses on numbers, with a numpad-like layout on the right and F-keys in a homerow-centric layout on the left.

### Special

The special layer has Reset and EEP Reset keys on the left half, along with media and volume controls. On the right half it has movement keys starting in the IJKL cluster. Additionally, custom macOS Sleep and Lock Screen keys can be found on the right half on this layer.

## Configuration

### PERMISSIVE_HOLD

This option is used because otherwise modtap functions would fail to trigger. This increases reliability for me.

### USE_SERIAL

N/A

### EE_HANDS

Prepared for EEPROM settings and different keymaps depending on USB port connected, but default master side remains left regardless.

## Building

Clean the build environment:

```shell
make clean
```

Build and flash left side:

```shell
make lets_split/rev2:mekberg:avrdude-split-left
```

Then do the same for the right side:

```shell
make lets_split/rev2:mekberg:avrdude-split-right
```
34 changes: 34 additions & 0 deletions keyboards/lets_split/keymaps/mekberg/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
This is the c configuration file for the keymap
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
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 some configuration for modtap behavior
// #define TAPPING_TERM 150
#define PERMISSIVE_HOLD

/* Use I2C or Serial, not both */
#define USE_SERIAL
// #define USE_I2C

/* Select hand configuration */
//#define MASTER_LEFT
// #define MASTER_RIGHT
#define EE_HANDS
228 changes: 228 additions & 0 deletions keyboards/lets_split/keymaps/mekberg/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
#include QMK_KEYBOARD_H

/*
Let's Split physical layout
1u == 8chars
* == Homing keys
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| | | | | | | | | | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | * | | | | * | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | | | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | | | | | | |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/

// Layers
enum layer_names {
_DEFAULT,
_DEFAULT_MAC,
_DEFAULT_WIN,
_RAISE_MAC,
_RAISE_WIN,
_LOWER,
_SPECIAL,
};

#define TO_MAC TO(_DEFAULT)
#define TO_WIN TO(_DEFAULT_WIN)

#define RAISE_M MO(_RAISE_MAC)
#define RAISE_W MO(_RAISE_WIN)
#define LOWER MO(_LOWER)
#define SPECIAL MO(_SPECIAL)

// Modifiers
#define SFTENT KC_SFTENT // Enter => Shift when held
#define CTLTAB LCTL_T(KC_TAB) // Tab => Ctrl when held

// ISO keycodes with Swedish layout names
#define SE_PLUS KC_MINS // +
#define SE_QSTM S(SE_PLUS) // Question mark
#define SE_TCK KC_EQL // Fronttick (´)
#define SE_BTCK S(SE_TCK) // Backtick (`)
#define SE_UML KC_RBRC // Umlaut (¨)
#define SE_TAK S(SE_UML) // Caret (^)
#define SE_TILD RALT(SE_UML) // Tilde (~)
#define SE_QUT KC_NUHS // Singlequote (')
#define SE_DQUT S(KC_2) // Doublequote (")
#define SE_AST S(SE_QUT) // Asterisk
#define SE_AUML KC_QUOT // Ä
#define SE_ARNG KC_LBRC // Å
#define SE_OUML KC_SCLN // Ö
#define SE_LT KC_NUBS // <
#define SE_GT S(SE_LT) // >
#define SE_DASH KC_SLSH // -
#define SE_USCR S(SE_DASH) // _
#define SE_AT RALT(KC_2) // @
#define SE_EXCL S(KC_1) // !
#define SE_HASH S(KC_3) // #
#define SE_USD RALT(KC_4) // $
#define SE_PCNT S(KC_5) // %
#define SE_AMP S(KC_6) // &
#define SE_EQLS S(KC_0) // =

// Apple-specific layout keys
#define AP_SLS S(KC_7) // /
#define AP_PIPE LALT(KC_7) // |
#define AP_BSLS A(AP_SLS) // Backslash
#define AP_LCBR A(AP_LPAR) // {
#define AP_RCBR A(AP_RPAR) // }
#define AP_LBR A(KC_8) // [
#define AP_RBR A(KC_9) // ]
#define AP_LPAR S(KC_8) // (
#define AP_RPAR S(KC_9) // )

// Windows-specific layout keys
#define MS_SLS S(KC_7) // /
#define MS_PIPE RALT(SE_LT) // |
#define MS_BSLS RALT(SE_PLUS) // Backslash
#define MS_LCBR RALT(KC_7) // {
#define MS_RCBR RALT(KC_0) // }
#define MS_LBR RALT(KC_8) // [
#define MS_RBR RALT(KC_9) // ]
#define MS_LPAR S(KC_8) // (
#define MS_RPAR S(KC_9) // )

// My common shortcuts
#define MY_PREV KC_MRWD // Media: Previous
#define MY_NEXT KC_MFFD // Media: Next
#define MY_PLAY KC_MPLY // Media: Play/Pause
#define MY_LOCK C(A(KC_L)) // Mac: Lock


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
DEFAULT
Main layout for alphas and modifiers
Tab => Ctrl when held
Esc => MOVEMENT layer when held
Enter => Shift when held
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| Esc | Q | W | E | R | T | | Y | U | I | O | P | Å |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|Ctrl/Tab| A | S | D | F *| G | | H |* J | K | L | Ö | Ä |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| Shift | Z | X | C | V | B | | N | M | , | . | - | Enter |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| SPECIAL| Ctrl | Alt | Cmd | LOWER | Space | | Backspc| RAISE | Left | Down | Up | Right |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_DEFAULT] = LAYOUT_ortho_4x12(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG,
CTLTAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OUML, SE_AUML,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SE_DASH, SFTENT,
SPECIAL, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE_M, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),

/*
DEFAULT - Windows
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| | | | | | | | | | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | * | | | | * | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | | | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | | RAISE | | | | |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_DEFAULT_WIN] = LAYOUT_ortho_4x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, RAISE_W, _______, _______, _______, _______
),

/*
RAISE - Mac
This layer focuses on symbols and special characters.
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| | ! | ? | { | } | & | | ^ | | | ` | ´ | | Del |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | # | $ | ( | ) *| " | | ~ |* / | \ | ¨ | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | @ | % | [ | ] | ' | | | < | > | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | |XXXXXXXX| | | | |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_RAISE_MAC] = LAYOUT_ortho_4x12(
_______, SE_EXCL, SE_QSTM, AP_LCBR, AP_RCBR, SE_AMP, SE_TAK, AP_PIPE, SE_BTCK, SE_TCK, _______, KC_DEL,
_______, SE_HASH, SE_USD, AP_LPAR, AP_RPAR, SE_DQUT, SE_TILD, AP_SLS, AP_BSLS, SE_UML, _______, _______,
_______, SE_AT, SE_PCNT, AP_LBR, AP_RBR, SE_QUT, _______, SE_LT, SE_GT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),

/*
RAISE - Windows
This layer focuses on symbols and special characters.
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| | ! | ? | { | } | & | | ^ | | | ` | ´ | | Del |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | # | $ | ( | ) *| " | | ~ |* / | \ | ¨ | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | @ | % | [ | ] | ' | | | < | > | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | |XXXXXXXX| | | | |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_RAISE_WIN] = LAYOUT_ortho_4x12(
_______, SE_EXCL, SE_QSTM, MS_LCBR, MS_RCBR, SE_AMP, SE_TAK, MS_PIPE, SE_BTCK, SE_TCK, _______, KC_DEL,
_______, SE_HASH, SE_USD, MS_LPAR, MS_RPAR, SE_DQUT, SE_TILD, MS_SLS, MS_BSLS, SE_UML, _______, _______,
_______, SE_AT, SE_PCNT, MS_LBR, MS_RBR, SE_QUT, _______, SE_LT, SE_GT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),

/*
LOWER
This layer focuses on numbers and math.
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| | F1 | F2 | F3 | F4 | | | * | 7 | 8 | 9 | - | Del |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | F5 | F6 | F7 | F8 *| | | / |* 4 | 5 | 6 | + | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | F9 | F10 | F11 | F12 | | | / | 1 | 2 | 3 | = | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | |XXXXXXXX| | | | | 0 | . | | |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_LOWER] = LAYOUT_ortho_4x12(
_______, KC_F1, KC_F2, KC_F3, KC_F4, _______, SE_AST, KC_7, KC_8, KC_9, SE_DASH, KC_DEL,
_______, KC_F5, KC_F6, KC_F7, KC_F8, _______, AP_SLS, KC_4, KC_5, KC_6, SE_PLUS, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, MS_SLS, KC_1, KC_2, KC_3, SE_EQLS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, _______, _______
),

/*
SPECIAL
This layer focuses on special functions, media controls and movement keys.
LEFT RIGHT
,-----------------------------------------------------. ,-----------------------------------------------------.
| Reset | | WIN | VolUp | | | | Ins | Home | Up | End | PgUp | Del |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|EEPReset| | Prev | VolDn | Next *| | | |* Left | Down | Right | PgDn | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | Mute | | | | Lock | MAC | | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|XXXXXXXX| | | | | Play | | | | | | | Sleep |
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_SPECIAL] = LAYOUT_ortho_4x12(
RESET, _______, TO_WIN, KC_VOLU, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL,
EEP_RST, _______, MY_PREV, KC_VOLD, MY_NEXT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
_______, _______, _______, KC_MUTE, _______, _______, MY_LOCK, TO_MAC, _______, _______, _______, _______,
_______, _______, _______, _______, _______, MY_PLAY, _______, _______, _______, _______, _______, KC_SLEP
)

};
5 changes: 5 additions & 0 deletions keyboards/tada68/keymaps/mekberg/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#pragma once

// Define some configuration for modtap behavior
// #define TAPPING_TERM 150
#define PERMISSIVE_HOLD
Loading

0 comments on commit 6ddf42d

Please sign in to comment.