aboutsummaryrefslogtreecommitdiff
path: root/keyboards/minidox
diff options
context:
space:
mode:
authorTorben Hoffmann <torben.lehoff@gmail.com>2019-05-10 07:12:11 +0200
committerDrashna Jaelre <drashna@live.com>2019-05-09 22:12:11 -0700
commitd3f3da5112c241e1203bd91ae16cc7b0aa075c0c (patch)
tree824896276bb272ef949cb88dc0b66487675950d0 /keyboards/minidox
parent7dcf9237d5cdf83e6f357755c19c14e92e6593c0 (diff)
downloadqmk_firmware-d3f3da5112c241e1203bd91ae16cc7b0aa075c0c.tar.gz
qmk_firmware-d3f3da5112c241e1203bd91ae16cc7b0aa075c0c.zip
Norman layout for the minidox keyboard (#5747)
* Norman layout with Lower and Raise layers working * Add keymap_extra def for Norman layout * Re-org'ed the modifiers as explained in the Readme * Corrected colour legend for KLE that the Readme links to * Use #pragma once in header file * Use pragma once and move user config to config.h * Move definitions to the right file and correct link in Readme * Move def of NM_COLN to the logical place in header file * Add sendstring_norman.h for when the laptop layout is not QWERTY * Update quantum/keymap_extras/sendstring_norman.h Co-Authored-By: lehoff <torben.lehoff@gmail.com>
Diffstat (limited to 'keyboards/minidox')
-rw-r--r--keyboards/minidox/keymaps/norman/config.h5
-rw-r--r--keyboards/minidox/keymaps/norman/keymap.c69
-rw-r--r--keyboards/minidox/keymaps/norman/readme.md56
3 files changed, 130 insertions, 0 deletions
diff --git a/keyboards/minidox/keymaps/norman/config.h b/keyboards/minidox/keymaps/norman/config.h
new file mode 100644
index 000000000..0d3542a03
--- /dev/null
+++ b/keyboards/minidox/keymaps/norman/config.h
@@ -0,0 +1,5 @@
1#pragma once
2
3#define PERMISSIVE_HOLD
4#define QMK_KEYS_PER_SCAN 4
5#define TAPPING_TERM 160
diff --git a/keyboards/minidox/keymaps/norman/keymap.c b/keyboards/minidox/keymaps/norman/keymap.c
new file mode 100644
index 000000000..2786b7dd9
--- /dev/null
+++ b/keyboards/minidox/keymaps/norman/keymap.c
@@ -0,0 +1,69 @@
1#include QMK_KEYBOARD_H
2
3#include <sendstring_norman.h>
4
5
6extern keymap_config_t keymap_config;
7
8// Each layer gets a name for readability, which is then used in the keymap matrix below.
9// The underscores don't mean anything - you can have a layer called STUFF or any other name.
10// Layer names don't all need to be of the same length, obviously, and you can also skip them
11// entirely and just use numbers.
12enum layers {
13 _NORMAN,
14 _LOWER,
15 _RAISE,
16 _ADJUST
17};
18
19enum custom_keycodes {
20 QWERTY = SAFE_RANGE,
21 LOWER,
22 RAISE,
23 ADJUST
24};
25
26// Defines for task manager and such
27#define CALTDEL LCTL(LALT(KC_DEL))
28#define TSKMGR LCTL(LSFT(KC_ESC))
29#define DSK_LFT LGUI(LCTL(KC_LEFT))
30#define DSK_RT LGUI(LCTL(KC_RIGHT))
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33
34
35[_NORMAN] = LAYOUT( \
36 NM_Q, NM_W, NM_D, NM_F, NM_K, NM_J, NM_U, NM_R, NM_L, NM_SCLN, \
37 NM_A, NM_S, NM_E, NM_T, NM_G, NM_Y, NM_N, NM_I, NM_O, NM_H, \
38 NM_Z, NM_X, NM_C, NM_V, NM_B, NM_P, NM_M, NM_COMM, NM_DOT, NM_SLSH, \
39 LGUI_T(KC_ENT), LT(_RAISE, KC_ESC), SFT_T(KC_BSPC), CTL_T(KC_SPC), LT(_LOWER, KC_TAB), ALT_T(KC_ENT) \
40),
41
42[_RAISE] = LAYOUT( \
43 KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_7, KC_8, KC_9, KC_0, \
44 KC_CIRC, KC_AMPR, KC_TILD, KC_PIPE, KC_BSLS, KC_MINUS, KC_4, KC_5, KC_6, KC_EQL, \
45 KC_DQT, KC_QUOT, KC_UNDS, KC_GRV, _______, KC_ASTR, KC_1, KC_2, KC_3, _______, \
46 _______, _______, _______, _______, MO(_ADJUST), _______ \
47),
48
49
50[_LOWER] = LAYOUT( \
51 KC_ESC, KC_HOME, KC_UP, KC_END, _______, _______, KC_LPRN, KC_RPRN, _______, _______,
52 KC_VOLU, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGUP, _______, KC_LBRC, KC_RBRC, _______, _______, \
53 KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_PGDN, _______, KC_LCBR, KC_RCBR, _______, _______, \
54 _______, MO(_ADJUST), _______, _______, _______, _______ \
55),
56
57[_ADJUST] = LAYOUT( \
58 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \
59 _______, DSK_LFT, _______, DSK_RT, _______, TSKMGR, CALTDEL, _______, KC_F11, KC_F12, \
60 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
61 _______, _______, _______, _______, _______, _______ \
62)
63
64};
65
66void persistant_default_layer_set(uint16_t default_layer) {
67 eeconfig_update_default_layer(default_layer);
68 default_layer_set(default_layer);
69}
diff --git a/keyboards/minidox/keymaps/norman/readme.md b/keyboards/minidox/keymaps/norman/readme.md
new file mode 100644
index 000000000..018e43632
--- /dev/null
+++ b/keyboards/minidox/keymaps/norman/readme.md
@@ -0,0 +1,56 @@
1# Minidox Norman Layout by LeHoff
2Based on the QWERTY layout created by Khitsule.
3![lehoff](https://i.imgur.com/rKTdymp.png)
4
5[KLE link](http://www.keyboard-layout-editor.com/#/gists/86ec49f9f820a8b9b36f6e0d2ef8fff7)
6
7## Layers
8| Layer | Legend |
9| ----- | ------ |
10| Base | Top left (black) |
11| Lower | Bottom right (red) |
12| Raise | Top right (orange) |
13| Adjust | Front print |
14
15## Features
16* Raise/lower layers focus first on one-handed use
17* Numpad on right hand with raise layer
18* Navigation on left hand with lower layer (ESDF)
19 * D refers to desktop left/right on Win 10 (win+ctrl+left/right)
20* Heavy use of hold/tap dual function keys - from left to right:
21 * Cmd/Enter
22 * Raise/Esc
23 * Shift/Backspace
24 * Ctrl/Space
25 * Lower/Tab
26 * Alt/Enter
27
28
29## Modifier Placement Rationale
30
31There are several major driving forces at play:
32
33* I use MacOS.
34* I'm Danish so the Alt and Shift-Alt layers in MacOS simply have to work.
35* I use Vim for coding.
36* I use org-mode in Emacs to keep track of my time.
37
38* Space is on the right hand side because I almost exclusively use my right hand thumb for
39 space.
40* Cmd is on the left since I often use Cmd+click to open a link in a new tab in Safari.
41* Due to my usage of Vim Esc got a spot on the modifier row.
42* Tab is on the right to enable easy navigation between winows with Cmd+Tab.
43* Shift is on the left since org-mode uses Ctrl+arrows to manipulate task state quickly,
44 and since the arrow keys are activated using Lower (which has been moved to the right) and S, E, T,
45 and D, it works well that way.
46* Ctrl is on the right since Ctrl+<0-9> is used in MacOS to switch between spaces.
47* Enter is on both sides since Enter is often used together with all of the modifiers. E.g.,
48 Cmd+Enter to send mails in most situations, but Ctrl+Enter is used in Emacs to create a
49 new task in org-mode.
50
51This means that arrows and digits are being modified from the other hand, which could be
52bad for gaming, so if you're into that you might want to re-think a few things, but in
53that case you are probably using a Windows machine and then there are other constraints
54you have to deal with.
55
56