[Keymap] Neo2 for ErgoDox on MacOS US QWERTY / ABC Extended keymap (#5862)
This is a Neo2 inspired layout that is meant to be fully usable on MacOS when used with the default US QWERTY/ABC Extended keymap. Neo2 layers 1-4 have been almost fully implemented in hardware. Layers 5 and 6 (greek and mathematical symbols) have been left out for now as most of them aren't available on the default keymaps. Layer toggling for layer 3 on the right hand side utilizes a tap-toggle approach that is a combination of MO & LT macros. This is required to allow sending Y when tapped, @ when tapped while the SHIFT modifier is active and support momentarily toggling the layer while the key is held.
This commit is contained in:

committed by
Drashna Jaelre

parent
93a97ec6e5
commit
7c0f2ae6d1
694
layouts/community/ergodox/osx_neo2/keymap.c
Normal file
694
layouts/community/ergodox/osx_neo2/keymap.c
Normal file
File diff suppressed because it is too large
Load Diff
9
layouts/community/ergodox/osx_neo2/layers.h
Normal file
9
layouts/community/ergodox/osx_neo2/layers.h
Normal file
@ -0,0 +1,9 @@
|
||||
enum layers {
|
||||
NEO_1, // layer_0
|
||||
NEO_3, // layer_1
|
||||
NEO_4, // layer_2
|
||||
NEO_5, // layer_3
|
||||
NEO_6, // layer_4
|
||||
US_1, // layer_5
|
||||
FKEYS // layer_6
|
||||
};
|
219
layouts/community/ergodox/osx_neo2/readme.md
Normal file
219
layouts/community/ergodox/osx_neo2/readme.md
Normal file
@ -0,0 +1,219 @@
|
||||
# Neo 2 for ErgoDox on QWERTY
|
||||
|
||||
# Description
|
||||
|
||||
The Neo layout is an optimized German keyboard layout developed by the
|
||||
Neo Users Group, supporting many Latin-based alphabets. The positions
|
||||
of the letters are not only optimized for German letter frequency,
|
||||
but also for typical groups of two or three letters. English is
|
||||
considered a primary target as well.
|
||||
|
||||
The design tries to enforce the alternating usage of both hands to
|
||||
increase typing speed and incorporates ideas from de-ergo and other
|
||||
ergonomic layouts. High frequency keys are placed in the home row.
|
||||
The current layout Neo 2.0 has unique features making it suited for
|
||||
many target groups such as programmers, mathematicians, scientists or
|
||||
LaTeX authors.
|
||||
|
||||
Neo is grouped into six layers, each dedicated to a special purpose.
|
||||
|
||||
# Layers
|
||||
|
||||
At the core this is a Neo 2.0 layout adjusted for the Ergodox Infinity.
|
||||
The keymap is laid out expecting a macOs using the US QWERTY or ABC
|
||||
Extended layout.
|
||||
|
||||
[Layer 1](#layer-1) Lowercase, upppercase and typographical characters
|
||||
|
||||
[Layer 2](#layer-2) Special characters for programming
|
||||
|
||||
[Layer 3](#layer-3) WASD-like movement keys and number block
|
||||
|
||||
[Layer 4](#layer-4) Greek characters
|
||||
|
||||
[Layer 5](#layer-5) Mathematical symbols and Greek uppercase characters
|
||||
|
||||
[Layer 6](#layer-6) Ergodox Infinity US QWERTY layout
|
||||
|
||||
[Layer 7](#layer-7) Function keys
|
||||
|
||||
## Legend
|
||||
|
||||
* Keys marked with `----` are dead keys.
|
||||
* Blank keys are transparent and fall through to lower levels.
|
||||
|
||||
## Layer 1
|
||||
|
||||
This layer implements NEO layers 1 and 2.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | 1/° | 2/§ | 3/ | 4/» | 5/« | ESC | | US_1 | 6/$ | 7/€ | 8/„ | 9/“ | 0/” | -/— |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| TAB | X | V | L | C | W | LCTL | | RCTL | K | H | G | F | Q | ß |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| NEO_3 | U | I | A | E | O |------| |------| S | N | R | T | D | Y |
|
||||
|--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------|
|
||||
| LSHIFT | Ü | Ö | Ä | P | Z | | | | B | M | ,/– | ./• | J | RSHIFT |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| ---- | ---- | LCTL | LALT | LGUI | | RGUI | Left | Down | Up | Right|
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| FKEYS| Home | | PgUp | FKEYS|
|
||||
,------|------|------| |------+------+------.
|
||||
| Back-| | End | | PgDn | | |
|
||||
| space|Delete|------| |------| Enter|Space |
|
||||
| | | NEO_4| | NEO_4| | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 2
|
||||
|
||||
This layer implements NEO layer 3.
|
||||
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ---- | ---- | ---- | › | ‹ | | | | ¢ | ¥ | ‚ | ‘ | ’ | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | … | _ | [ | ] | ^ | | | | ! | < | > | = | & | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | \ | / | { | } | * |------| |------| ? | ( | ) | - | : | @ |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | # | $ | | | ~ | ` | | | | + | % | " | ' | ; | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 3
|
||||
|
||||
This layer implements NEO layer 4.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ª | º | ---- | · | £ | | | | ---- | Tab | / | * | - | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | PgUp | ⌫ | Up | ⌦ | PgDn | | | | ¡ | 7 | 8 | 9 | + | – |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | Home | Left | Down | Right| End |------| |------| ¿ | 4 | 5 | 6 | , | . |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | Esc | Tab | Ins |Return| ---- | | | | : | 1 | 2 | 3 | ; | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | 0 | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 4
|
||||
|
||||
This layer is currently empty/reserved for NEO layer 5.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 5
|
||||
|
||||
This layer is currently empty/reserved for NEO layer 6.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- |------| |------| ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | ---- | ----| ---- | ---- | ---- | | | | ---- | ---- | ---- | ---- | ---- | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 6
|
||||
|
||||
A bare bones implementation of the default Ergodox Infinity layout.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| = | 1 | 2 | 3 | 4 | 5 | ESC | | NEO_1| 6 | 7 | 8 | 9 | 0 | - |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| \ | Q | W | E | R | T | ---- | | [ | Y | U | I | O | P | ] |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| TAB | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||
|--------+------+------+------+------+------| ---- | | ---- |------+------+------+------+------+--------|
|
||||
| LSHIFT | Z | X | V | B | M | | | | N | M | , | . | / | RSHIFT |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| LGUI | ` | ---- | ---- | FKEYS| | Left | Down | Up | Right| RGUI |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| LCTRL| LALT | | RALT | RCTRL|
|
||||
,------|------|------| |------+------+------.
|
||||
| | | HOME | | PGUP | | |
|
||||
| BKSP | DEL |------| |------| ENTR | SPCE |
|
||||
| | | END | | PGDN | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Layer 7
|
||||
|
||||
This layer implements function and multimedia keys.
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| Prev | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | VolUp |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| Play | | | | | | | | | | | | | | VolDn |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| Next | | | | | |------| |------| | | | | | Mute |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | | | | | | | | | | | | | | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
47
layouts/community/ergodox/osx_neo2/visualizer.c
Normal file
47
layouts/community/ergodox/osx_neo2/visualizer.c
Normal file
@ -0,0 +1,47 @@
|
||||
#include "layers.h"
|
||||
#include "simple_visualizer.h"
|
||||
#include "util.h"
|
||||
|
||||
static void get_visualizer_layer_and_color(visualizer_state_t *state) {
|
||||
uint8_t layer = biton32(state->status.layer);
|
||||
|
||||
// Go from highest to lowest layer to get the right text/color combination.
|
||||
switch (layer) {
|
||||
// #AEB2F4 / hsv(65.71%, 28.69%, 95.69%)
|
||||
case FKEYS:
|
||||
// #F4AEDC / hsv(89.05%, 28.69%, 95.69%)
|
||||
state->layer_text = "FUNCTION KEYS";
|
||||
state->target_lcd_color = LCD_COLOR(228, 73, 245);
|
||||
break;
|
||||
case US_1:
|
||||
// #F4B993 / hsv(6.53%, 39.75%, 95.69%)
|
||||
state->layer_text = "QWERTY";
|
||||
state->target_lcd_color = LCD_COLOR(17, 102, 245);
|
||||
break;
|
||||
case NEO_6:
|
||||
// #F4E393 / hsv(13.75%, 39.75%, 95.69%)
|
||||
state->layer_text = "NEO: 6";
|
||||
state->target_lcd_color = LCD_COLOR(35, 102, 245);
|
||||
break;
|
||||
case NEO_5:
|
||||
// #C6F493 / hsv(24.57%, 39.75%, 95.69%)
|
||||
state->layer_text = "NEO: 5";
|
||||
state->target_lcd_color = LCD_COLOR(63, 102, 245);
|
||||
break;
|
||||
case NEO_4:
|
||||
// #8EEBC9 / hsv(43.91%, 39.57%, 92.16%)
|
||||
state->layer_text = "NEO: 4";
|
||||
state->target_lcd_color = LCD_COLOR(112, 101, 189);
|
||||
break;
|
||||
case NEO_3:
|
||||
// #93D2F4 / hsv(55.84%, 39.75%, 95.69%)
|
||||
state->layer_text = "NEO: 3";
|
||||
state->target_lcd_color = LCD_COLOR(143, 102, 245);
|
||||
break;
|
||||
default:
|
||||
// #EEEEEE / hsv(0%, 0%, 93%)
|
||||
state->layer_text = "NEO: 1";
|
||||
state->target_lcd_color = LCD_COLOR(0, 0, 255);
|
||||
break;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user