Merge remote-tracking branch 'upstream/master'
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 73 KiB |
|
@ -10,7 +10,7 @@ I won't claim that this layout is perfect for everyone. It does make several sig
|
|||
|
||||
## Base Layer ##
|
||||
|
||||

|
||||

|
||||
|
||||
The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/).
|
||||
|
||||
|
@ -22,7 +22,7 @@ In addition to the Shift keys, there are three dual-purpose keys: Ctrl (Delete),
|
|||
|
||||
## Extend Layer ##
|
||||
|
||||

|
||||

|
||||
|
||||
This layout is designed primarily for keyboard navigation. Arrow keys are easily accessible under the right hand (a welcome change from the original Atreus layout, which places them under the left hand), along with Home/End and PgUp/PgDn.
|
||||
|
||||
|
@ -34,7 +34,7 @@ The Space key exists to prevent going from this layer directly into the Number l
|
|||
|
||||
## Number and Symbol Layer ##
|
||||
|
||||

|
||||

|
||||
|
||||
This layer provides the only way of accessing number keys on this keyboard, since it's too small for its own number row. Note that even though they are laid out in the number pad fashion, they send the "regular" number keystrokes. Games and programs that specifically use NumPad keys are not supported in this layout at the moment.
|
||||
|
||||
|
@ -42,7 +42,7 @@ This layer also provides plenty of symbol shortcuts. Most of these can be access
|
|||
|
||||
## Function Layer ##
|
||||
|
||||

|
||||

|
||||
|
||||
Function keys (F1-F12) are on this layer. Their layout in groups of four comes from Jeremy's Atreus layout in this repository. I'd been using 1-9 in a numpad layout, then adding 10-12 on the side...I suppose it took seeing someone else do it this way for me to realize how much more sense it makes.
|
||||
|
||||
|
@ -52,7 +52,7 @@ Finally, the reset key is on this layer, as well as toggles from Colemak to QWER
|
|||
|
||||
## Gaming Layer ##
|
||||
|
||||

|
||||

|
||||
|
||||
This is a small layer developed to allow some simple gameplay without a mouse. This layer is a toggle (from the Number layer), so it is designed to stay on while in use.
|
||||
|
||||
|
|
|
@ -35,8 +35,8 @@ void promicro_bootloader_jmp(bool program);
|
|||
{ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
|
||||
{ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
|
||||
{ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
|
||||
{ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k46, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \
|
||||
{ KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \
|
||||
{ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k47, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \
|
||||
{ KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k46, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
4
keyboards/atreus62/keymaps/atreus52/Makefile
Normal file
|
@ -0,0 +1,4 @@
|
|||
NKRO_ENABLE = true
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
10
keyboards/atreus62/keymaps/atreus52/README.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
||||
|
||||
Atreus52 Modification
|
||||
=======================
|
||||
|
||||
Firmware for my custom keyboard based on the Atreus layout, but with 5 rows and only 5 columns per hand.
|
||||
More documentation coming soon.
|
||||
|
||||
# License
|
||||
GPL-3+
|
18
keyboards/atreus62/keymaps/atreus52/config.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#include "../../config.h"
|
||||
|
||||
#undef MANUFACTURER
|
||||
#undef PRODUCT
|
||||
#undef DESCRIPTION
|
||||
#undef MATRIX_ROW_PINS
|
||||
#undef MATRIX_COL_PINS
|
||||
#undef DIODE_DIRECTION
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define MANUFACTURER Mesh Industries
|
||||
#define PRODUCT Atreus52 Treeboard
|
||||
#define DESCRIPTION q.m.k. keyboard firmware for Atreus52
|
||||
|
||||
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
|
||||
#define MATRIX_COL_PINS { B2, B1, F7, F6, F5, F4, B6, D3, D2, D1, D0, D4, B3 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
99
keyboards/atreus62/keymaps/atreus52/keymap.c
Normal file
|
@ -0,0 +1,99 @@
|
|||
#include "atreus62.h"
|
||||
|
||||
// Layers
|
||||
#define DVORAK 0
|
||||
#define QWERTY 1
|
||||
#define RAISE 2
|
||||
#define LOWER 3
|
||||
#define BDO 4
|
||||
#define RESETL 5
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[DVORAK] = KC_KEYMAP(
|
||||
NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \
|
||||
NO, QUOT, COMM, DOT, P, Y, F, G, C, R, L, NO, \
|
||||
NO, A, O, E, U, I, D, H, T, N, S, NO, \
|
||||
NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, \
|
||||
NO, FN2, LALT, LCTL, FN1, LSFT, BSPC, ENT, SPC, FN0, LGUI, LEFT, RGHT, NO ),
|
||||
|
||||
[QWERTY] = KC_KEYMAP(
|
||||
NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \
|
||||
NO, Q, W, E, R, T, Y, U, I, O, P, NO, \
|
||||
NO, A, S, D, F, G, H, J, K, L, SCLN, NO, \
|
||||
NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, \
|
||||
NO, FN2, LALT, LCTL, FN1, LSFT, BSPC, ENT, SPC, FN0, LGUI, LEFT, RGHT, NO ),
|
||||
|
||||
[RAISE] = KC_KEYMAP(
|
||||
NO, MRWD, MPRV, MPLY, MNXT, MFFD, TRNS, MUTE, VOLD, VOLU, DEL, NO, \
|
||||
NO, TILD, GRV, LCBR, RCBR, DQUO, QUOT, EQL, PLUS, MINS, QUES, NO, \
|
||||
NO, ESC, TAB, LPRN, RPRN, BSLS, SLSH, LEFT, DOWN, UP, RGHT, NO, \
|
||||
NO, TRNS, TRNS, LBRC, RBRC, TRNS, INS, PIPE, UNDS, TRNS, TRNS, NO, \
|
||||
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN3, NO ),
|
||||
|
||||
[LOWER] = KC_KEYMAP(
|
||||
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO, \
|
||||
NO, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, NO, \
|
||||
NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \
|
||||
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, DOT, TRNS, TRNS, TRNS, NO, \
|
||||
NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO ),
|
||||
|
||||
[BDO] = KC_KEYMAP(
|
||||
NO, ESC, 1, 2, 3, 4, 5, 0, SLSH, U, C, NO, \
|
||||
NO, TAB, Q, W, E, R, 6, Y, I, O, P, NO, \
|
||||
NO, LSFT, A, S, D, F, 7, G, H, J, K, NO, \
|
||||
NO, T, Z, X, C, V, 8, B, N, M, L, NO, \
|
||||
NO, LCTL, SPC, SPC, SPC, SPC, COMM, ENT, 9, NO, NO, NO, FN2, NO ),
|
||||
|
||||
[RESETL] = KEYMAP(
|
||||
KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_FN3,KC_NO )
|
||||
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_LAYER_MOMENTARY(RAISE), // Raise layer
|
||||
[1] = ACTION_LAYER_MOMENTARY(LOWER), // Lower layer
|
||||
[2] = ACTION_LAYER_TOGGLE(BDO), // BDO layer
|
||||
[3] = ACTION_LAYER_TOGGLE(RESETL) // RESET layer
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch (id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
}
|
||||
else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
static uint8_t qw_dv_swap_state = 0;
|
||||
|
||||
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
|
||||
if (keycode == KC_LGUI) {
|
||||
if (record->event.pressed)
|
||||
qw_dv_swap_state |= 0b00000001;
|
||||
else
|
||||
qw_dv_swap_state &= ~(0b00000001);
|
||||
}
|
||||
if (keycode == KC_LCTL) {
|
||||
if (record->event.pressed)
|
||||
qw_dv_swap_state |= 0b00000010;
|
||||
else
|
||||
qw_dv_swap_state &= ~(0b00000010);
|
||||
}
|
||||
|
||||
if (qw_dv_swap_state == 0b00000011) {
|
||||
layer_invert(DVORAK);
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -21,7 +21,7 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
|
|||
|
||||
## Base layer
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
* The number row doubles as a function row. Short presses produces numbers, long presses produces Fxx
|
||||
|
@ -40,14 +40,14 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
|
|||
|
||||
## Nav layer
|
||||
|
||||

|
||||

|
||||
|
||||
Basic navigation on the right hand and modifiers close
|
||||
by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
|
||||
|
||||
## Sym layer
|
||||
|
||||

|
||||

|
||||
|
||||
* Easy access to most symbols I use on a daily basis. Most common are on the home row, the rest are grouped as best as I could.
|
||||
|
||||
|
|
Before Width: | Height: | Size: 446 KiB |
Before Width: | Height: | Size: 415 KiB |
Before Width: | Height: | Size: 423 KiB |
Before Width: | Height: | Size: 110 KiB |
|
@ -1,13 +1,4 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# Caps Fn Layout
|
||||
|
||||
|
|
Before Width: | Height: | Size: 110 KiB |
|
@ -1,13 +1,4 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# Default Clueboard Layout
|
||||
|
||||
|
|
|
@ -1,11 +1,2 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||
# Jokrik's Clueboard Layout
|
||||
|
||||
|
|
Before Width: | Height: | Size: 105 KiB |
|
@ -1,13 +1,4 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# Default Clueboard Layout for Mac
|
||||
|
||||
|
|
|
@ -1,2 +1,9 @@
|
|||
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
|
||||
MIDI_ENABLE = yes
|
||||
|
||||
# if MIDI_ENABLE is set to yes, then CONSOLE_ENABLE has to be disabled, because of the firmware size
|
||||
CONSOLE_ENABLE = false
|
||||
COMMAND_ENABLE = no
|
||||
|
|
44
keyboards/clueboard/keymaps/magicmonty/config.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
#define MIDI_BASIC
|
||||
*/
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||
|
||||
/* Disabling rollover allows you to use the opposite shift key to cancel the space cadet state in the event
|
||||
of an erroneous press instead of emitting a pair of parentheses when the keys are released.
|
||||
*/
|
||||
#define DISABLE_SPACE_CADET_ROLLOVER
|
||||
|
||||
/*
|
||||
Setting the Space Cadet Parens for German layout
|
||||
|
||||
Default is
|
||||
#define LSPO_KEY KC_9
|
||||
#define RSPC_KEY KC_0
|
||||
*/
|
||||
#define LSPO_KEY KC_8
|
||||
#define RSPC_KEY KC_9
|
||||
|
||||
#endif
|
|
@ -3,62 +3,94 @@
|
|||
// Helpful defines
|
||||
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||
#define _______ KC_TRNS
|
||||
#define xxxxxxx KC_NO
|
||||
#define HPR_TAB ALL_T(KC_TAB)
|
||||
#define CTL_ESC CTL_T(KC_ESC)
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _BL 0
|
||||
#define _FL 1
|
||||
#define _ME 2
|
||||
#define _CL 3
|
||||
#define _ML 4
|
||||
#define _BL 0 // BASE Layer
|
||||
#define _FL 1 // Function Layer
|
||||
#define _ME 2 // Media Layer
|
||||
#define _CL 3 // Control Layer
|
||||
#define _ML 4 // Mouse Layer
|
||||
#if defined(MIDI_ENABLE)
|
||||
#define _MI 5 // MIDI Layer
|
||||
#define TO_MIDI TO(_MI)
|
||||
#else
|
||||
#define TO_MIDI _______
|
||||
#endif
|
||||
|
||||
#define TO_BASE TO(_BL)
|
||||
#define MO_FUNC MO(_FL)
|
||||
#define MEDIA MO(_ME)
|
||||
#define MO_CTL MO(_CL)
|
||||
#define L_MOUSE LT(_ML, KC_SPC)
|
||||
#define ESC_FUN LT(_FL, KC_ESC)
|
||||
|
||||
#define ESC_GRV F(0)
|
||||
#define RGB_RST F(1)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: Base Layer (Default Layer)
|
||||
*/
|
||||
/* Keymap _BL: Base Layer (Default Layer) */
|
||||
[_BL] = KEYMAP(
|
||||
F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
|
||||
MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, _______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_RALT, MO(_ME), MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
ESC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, \
|
||||
HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
|
||||
ESC_FUN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
|
||||
KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSPC, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT,_______, L_MOUSE, L_MOUSE, _______, KC_RALT, KC_RCTL, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
/* Keymap _FL: Function Layer
|
||||
*/
|
||||
/* Keymap _FL: Function Layer */
|
||||
[_FL] = KEYMAP(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP, \
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,_______, _______, _______, _______, _______, _______, \
|
||||
MO(_FL), _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, _______, KC_PGUP, \
|
||||
_______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, KC_PAUS, _______, _______, _______, _______, \
|
||||
_______, _______, MO_CTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, TO_MIDI, _______, _______, KC_PGUP, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, MO_FUNC, KC_HOME, KC_PGDN, KC_END),
|
||||
|
||||
/* Keymap _ME: Media layer
|
||||
*/
|
||||
/* Keymap _ME: Media layer */
|
||||
[_ME] = KEYMAP(
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_VOLD, \
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,MO(_ME),_______, _______, _______, _______, MO(_FL), _______, \
|
||||
_______, _______, _______,_______, _______,_______, _______, _______, _______, _______, KC_MPRV, KC_MPLY,KC_MNXT),
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT),
|
||||
|
||||
/* Keymap _CL: Control layer
|
||||
*/
|
||||
/* Keymap _CL: Control layer */
|
||||
[_CL] = KEYMAP(
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
||||
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
||||
_______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||
_______, RGB_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
|
||||
_______, _______, MO_CTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, \
|
||||
_______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||
|
||||
/* Keymap _ML: Mouse layer
|
||||
*/
|
||||
/* Keymap _ML: Mouse layer */
|
||||
[_ML] = KEYMAP(
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, KC_BTN3,KC_BTN2,KC_BTN1,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R, _______, _______, _______, _______, \
|
||||
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MS_U, \
|
||||
_______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D,KC_MS_R),
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, \
|
||||
_______, _______, _______, _______, L_MOUSE, L_MOUSE, _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R),
|
||||
|
||||
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
|
||||
/* Keymap _MI: MIDI layer (Advanced)*/
|
||||
[_MI] = KEYMAP(
|
||||
TO_BASE,MI_VEL_1,MI_VEL_2,MI_VEL_3,MI_VEL_4,MI_VEL_5,MI_VEL_6,MI_VEL_7,MI_VEL_8,MI_VEL_9,MI_VEL_10, MI_CHD, MI_CHU, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||
xxxxxxx, xxxxxxx, MI_Cs, MI_Ds, xxxxxxx, MI_Fs, MI_Gs, MI_As, xxxxxxx, MI_Cs_1, MI_Ds_1, xxxxxxx, MI_Fs_1, xxxxxxx, xxxxxxx, \
|
||||
MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, MI_G_1, xxxxxxx, \
|
||||
MI_SUS, xxxxxxx, MI_OCTD, MI_OCTU,MI_MODSD,MI_MODSU, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, MI_TRNSD,MI_TRNSU,MI_TRNS_0, MI_SUS, xxxxxxx, \
|
||||
xxxxxxx, xxxxxxx, xxxxxxx,xxxxxxx, MI_ALLOFF, MI_ALLOFF, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx),
|
||||
#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
|
||||
/* Keymap _MI: MIDI layer (Basic)*/
|
||||
[_MI] = KEYMAP(
|
||||
TO_BASE, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||
xxxxxxx, xxxxxxx, MI_ON, MI_OFF, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, \
|
||||
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx),
|
||||
#endif
|
||||
};
|
||||
|
||||
/* This is a list of user defined functions. F(N) corresponds to item N
|
||||
|
@ -66,6 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
*/
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
||||
[1] = ACTION_FUNCTION(1), // Calls action_function()
|
||||
};
|
||||
|
||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||
|
@ -102,6 +135,11 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(1);
|
||||
rgblight_sethsv(206, 255, 255);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -110,43 +148,61 @@ enum layer_id {
|
|||
LAYER_FUNCTION,
|
||||
LAYER_MEDIA,
|
||||
LAYER_CONTROL,
|
||||
LAYER_MOUSE
|
||||
LAYER_MOUSE,
|
||||
#if defined(MIDI_ENABLE)
|
||||
LAYER_MIDI
|
||||
#endif
|
||||
};
|
||||
|
||||
void clueboard_set_led(uint8_t id) {
|
||||
void clueboard_set_led(uint8_t id, uint8_t val) {
|
||||
switch (id) {
|
||||
case LAYER_BASE:
|
||||
rgblight_sethsv(346, 0, 255);
|
||||
rgblight_sethsv_noeeprom(0, 0, val);
|
||||
break;
|
||||
case LAYER_FUNCTION:
|
||||
rgblight_sethsv(46, 255, 255);
|
||||
rgblight_sethsv_noeeprom(46, 255, val);
|
||||
break;
|
||||
case LAYER_MEDIA:
|
||||
rgblight_sethsv(86, 255, 255);
|
||||
rgblight_sethsv_noeeprom(86, 255, val);
|
||||
break;
|
||||
case LAYER_CONTROL:
|
||||
rgblight_sethsv(346, 255, 255);
|
||||
rgblight_sethsv_noeeprom(346, 255, val);
|
||||
break;
|
||||
case LAYER_MOUSE:
|
||||
rgblight_sethsv(206, 255, 255);
|
||||
rgblight_sethsv_noeeprom(206, 255, val);
|
||||
break;
|
||||
#if defined(MIDI_ENABLE)
|
||||
case LAYER_MIDI:
|
||||
rgblight_sethsv_noeeprom(316, 255, val);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
rgblight_config_t rgblight_config;
|
||||
rgblight_config.raw = eeconfig_read_rgblight();
|
||||
|
||||
if (!rgblight_config.enable || rgblight_config.mode != 1) { return; }
|
||||
|
||||
uint32_t layer = layer_state;
|
||||
uint8_t val = rgblight_config.val;
|
||||
|
||||
if (layer & (1<<_FL)) {
|
||||
if (layer & (1<<_ME)) {
|
||||
clueboard_set_led(LAYER_MEDIA);
|
||||
clueboard_set_led(LAYER_MEDIA, val);
|
||||
} else if (layer & (1<<_CL)) {
|
||||
clueboard_set_led(LAYER_CONTROL);
|
||||
clueboard_set_led(LAYER_CONTROL, val);
|
||||
} else {
|
||||
clueboard_set_led(LAYER_FUNCTION);
|
||||
clueboard_set_led(LAYER_FUNCTION, val);
|
||||
}
|
||||
} else if (layer & (1<<_ML)) {
|
||||
clueboard_set_led(LAYER_MOUSE);
|
||||
clueboard_set_led(LAYER_MOUSE, val);
|
||||
#if defined(MIDI_ENABLE)
|
||||
} else if (layer & (1<<_MI)) {
|
||||
clueboard_set_led(LAYER_MIDI, val);
|
||||
#endif
|
||||
} else {
|
||||
clueboard_set_led(LAYER_BASE);
|
||||
clueboard_set_led(LAYER_BASE, val);
|
||||
}
|
||||
};
|
||||
|
|
Before Width: | Height: | Size: 162 KiB |
|
@ -1,15 +1,8 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
# Layout of @magicmonty
|
||||
|
||||

|
||||
[Keyboard Layout Editor File]
|
||||
|
||||
# MouseKeys Layout
|
||||

|
||||
|
||||
This layout is a combination of the `mouse_keys` and the `win_optimized` layouts.
|
||||
This layout is optimized for an ISO layout.
|
||||
|
@ -19,7 +12,11 @@ will move your mouse cursor. You can click using the 3 mods to the left of the
|
|||
arrow keys, or the 3 keys under your primary fingers on the home row.
|
||||
The Left, Down, Up and Right for the mouse movement are also VIM-Like on the HJKL keys
|
||||
|
||||
The CapsLock is disabled and works as Function key.
|
||||
There is also a MIDI layer included.
|
||||
|
||||
The CapsLock is disabled and works as Escape when tapped and Fn when Hold.
|
||||
The Tab key works as Tab when tapped, and [Hyper] (Ctrl + Alt + Shift + Cmd) when hold
|
||||
The Shift-Keys are configured as [Space Cadet Shift Parentheses]
|
||||
|
||||
There is also a separate media layer with Volume/Play controls
|
||||
|
||||
|
@ -30,3 +27,8 @@ The different layers are signalled throug setting of the underlight:
|
|||
- Media layer: Green
|
||||
- Mouse layer: Blue
|
||||
- Control layer: Red
|
||||
- Midi layer: Purple
|
||||
|
||||
[Hyper]: http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
|
||||
[Space Cadet Shift Parentheses]: http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
|
||||
[Keyboard Layout Editor File]: http://www.keyboard-layout-editor.com/#/gists/f869b8789242a712e0f46eabbd550056
|
||||
|
|
Before Width: | Height: | Size: 109 KiB |
|
@ -1,13 +1,4 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# Maximised Clueboard Layout
|
||||
|
||||
|
|
Before Width: | Height: | Size: 140 KiB |
|
@ -1,12 +1,3 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||
|
||||
# MouseKeys Layout
|
||||
|
|
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 28 KiB |
|
@ -1,23 +1,14 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||
# Serubin's Clueboard Layout
|
||||
|
||||
This is the layout based on the clueboard default, modified for development on Mac, PC, and Windows. This layout also handles media and volume keys on all the previously listed platforms. Most importantly, Capslock has been replaced by a dual function Esc/Ctrl key. This is particularly handy for use in Vim.
|
||||
|
||||
#### Base Layer
|
||||

|
||||

|
||||
|
||||
#### Fn Layer
|
||||

|
||||

|
||||
|
||||
#### Media Layer
|
||||

|
||||

|
||||
|
||||
|
||||
|
|
Before Width: | Height: | Size: 105 KiB |
|
@ -1,14 +1,3 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||
|
||||
# Shift Fn Clueboard Layout
|
||||
|
||||
This is an experimental layout. It makes the left shift key a dual roll key.
|
||||
|
|
Before Width: | Height: | Size: 109 KiB |
|
@ -1,16 +1,11 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# skullY's Clueboard Layout
|
||||
|
||||
This layout is what I (@skullydazed) use on my personal Clueboards. I mostly use it for programming, CAD, and general typing.
|
||||
|
||||
The most notable change from the default layout is putting Ctrl on the Capslock key. I also swap Alt and Cmd because I mostly use a Mac day to day.
|
||||
I've made the following changes from the default layout:
|
||||
|
||||
* shift_fn on left shift
|
||||
* Change capslock to control
|
||||
* Swap Alt and Cmd
|
||||
|
|
Before Width: | Height: | Size: 128 KiB |
|
@ -1,15 +1,6 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||
# smt Clueboard Layout (HHKB variant)
|
||||
|
||||

|
||||

|
||||
|
||||
This is smt's HHKB variant layout, based on the default layout that comes
|
||||
flashed on every Clueboard. The primary differences from the default are:
|
||||
|
|
Before Width: | Height: | Size: 109 KiB |
|
@ -1,13 +1,4 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# Default Clueboard Layout
|
||||
|
||||
|
|
Before Width: | Height: | Size: 108 KiB |
|
@ -1,13 +1,4 @@
|
|||
```
|
||||
___ _____ _ _ _ __ __ _ __
|
||||
|__ \ / ____| | | | | | / / / /(_) / /
|
||||
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
# Default Clueboard Layout
|
||||
|
||||
|
|
|
@ -1,6 +1,30 @@
|
|||
#include "ez.h"
|
||||
#include "i2cmaster.h"
|
||||
|
||||
|
||||
extern inline void ergodox_board_led_on(void);
|
||||
extern inline void ergodox_right_led_1_on(void);
|
||||
extern inline void ergodox_right_led_2_on(void);
|
||||
extern inline void ergodox_right_led_3_on(void);
|
||||
extern inline void ergodox_right_led_on(uint8_t led);
|
||||
|
||||
extern inline void ergodox_board_led_off(void);
|
||||
extern inline void ergodox_right_led_1_off(void);
|
||||
extern inline void ergodox_right_led_2_off(void);
|
||||
extern inline void ergodox_right_led_3_off(void);
|
||||
extern inline void ergodox_right_led_off(uint8_t led);
|
||||
|
||||
extern inline void ergodox_led_all_on(void);
|
||||
extern inline void ergodox_led_all_off(void);
|
||||
|
||||
extern inline void ergodox_right_led_1_set(uint8_t n);
|
||||
extern inline void ergodox_right_led_2_set(uint8_t n);
|
||||
extern inline void ergodox_right_led_3_set(uint8_t n);
|
||||
extern inline void ergodox_right_led_set(uint8_t led, uint8_t n);
|
||||
|
||||
extern inline void ergodox_led_all_set(uint8_t n);
|
||||
|
||||
|
||||
bool i2c_initialized = 0;
|
||||
uint8_t mcp23018_status = 0x20;
|
||||
|
||||
|
@ -57,7 +81,7 @@ uint8_t init_mcp23018(void) {
|
|||
// cli();
|
||||
if (i2c_initialized == 0) {
|
||||
i2c_init(); // on pins D(1,0)
|
||||
i2c_initialized++;
|
||||
i2c_initialized = true;
|
||||
_delay_ms(1000);
|
||||
}
|
||||
|
||||
|
|
Before Width: | Height: | Size: 20 KiB |
|
@ -7,4 +7,4 @@ If you own an 80 key Ergodox, use this as an example to get your desired keymap.
|
|||
**NOTE:** This layout is not physically supported by the Ergodox EZ.
|
||||
|
||||
|
||||

|
||||

|
||||
|
|
|
@ -25,43 +25,90 @@
|
|||
#include "lcd_backlight_keyframes.h"
|
||||
#endif
|
||||
|
||||
#ifdef LED_ENABLE
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
#include "led_keyframes.h"
|
||||
#endif
|
||||
|
||||
#include "visualizer_keyframes.h"
|
||||
|
||||
|
||||
#if defined(LCD_ENABLE) && defined(LCD_BACKLIGHT_ENABLE)
|
||||
#if defined(LCD_ENABLE) || defined(LCD_BACKLIGHT_ENABLE) || defined(BACKLIGHT_ENABLE)
|
||||
|
||||
static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||
#ifdef LCD_ENABLE
|
||||
lcd_keyframe_enable(animation, state);
|
||||
#endif
|
||||
#ifdef LCD_BACKLIGHT_ENABLE
|
||||
backlight_keyframe_enable(animation, state);
|
||||
#endif
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
led_keyframe_enable(animation, state);
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||
#ifdef LCD_ENABLE
|
||||
lcd_keyframe_disable(animation, state);
|
||||
#endif
|
||||
#ifdef LCD_BACKLIGHT_ENABLE
|
||||
backlight_keyframe_disable(animation, state);
|
||||
#endif
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
led_keyframe_disable(animation, state);
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||
bool ret = false;
|
||||
#ifdef LCD_BACKLIGHT_ENABLE
|
||||
ret |= backlight_keyframe_animate_color(animation, state);
|
||||
#endif
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
ret |= led_keyframe_fade_in_all(animation, state);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||
bool ret = false;
|
||||
#ifdef LCD_BACKLIGHT_ENABLE
|
||||
ret |= backlight_keyframe_animate_color(animation, state);
|
||||
#endif
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
ret |= led_keyframe_fade_out_all(animation, state);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// Don't worry, if the startup animation is long, you can use the keyboard like normal
|
||||
// during that time
|
||||
keyframe_animation_t default_startup_animation = {
|
||||
.num_frames = 4,
|
||||
.num_frames = 3,
|
||||
.loop = false,
|
||||
.frame_lengths = {0, 0, 0, gfxMillisecondsToTicks(5000), 0},
|
||||
.frame_lengths = {0, 0, gfxMillisecondsToTicks(5000)},
|
||||
.frame_functions = {
|
||||
lcd_keyframe_enable,
|
||||
backlight_keyframe_enable,
|
||||
keyframe_enable,
|
||||
lcd_keyframe_draw_logo,
|
||||
backlight_keyframe_animate_color,
|
||||
keyframe_fade_in,
|
||||
},
|
||||
};
|
||||
|
||||
keyframe_animation_t default_suspend_animation = {
|
||||
.num_frames = 4,
|
||||
.num_frames = 3,
|
||||
.loop = false,
|
||||
.frame_lengths = {0, gfxMillisecondsToTicks(1000), 0, 0},
|
||||
.frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
|
||||
.frame_functions = {
|
||||
lcd_keyframe_display_layer_text,
|
||||
backlight_keyframe_animate_color,
|
||||
lcd_keyframe_disable,
|
||||
backlight_keyframe_disable,
|
||||
keyframe_fade_out,
|
||||
keyframe_disable,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(LED_ENABLE)
|
||||
#if defined(BACKLIGHT_ENABLE)
|
||||
#define CROSSFADE_TIME 1000
|
||||
#define GRADIENT_TIME 3000
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ extern const uint8_t CIE1931_CURVE[];
|
|||
#define GDISP_INITIAL_CONTRAST 0
|
||||
#endif
|
||||
#ifndef GDISP_INITIAL_BACKLIGHT
|
||||
#define GDISP_INITIAL_BACKLIGHT 100
|
||||
#define GDISP_INITIAL_BACKLIGHT 0
|
||||
#endif
|
||||
|
||||
#define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER<<0)
|
||||
|
@ -173,7 +173,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||
}
|
||||
|
||||
// software shutdown disable (i.e. turn stuff on)
|
||||
write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
|
||||
write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
|
||||
gfxSleepMilliseconds(10);
|
||||
|
||||
// Finish Init
|
||||
|
@ -183,7 +183,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||
g->g.Width = GDISP_SCREEN_WIDTH;
|
||||
g->g.Height = GDISP_SCREEN_HEIGHT;
|
||||
g->g.Orientation = GDISP_ROTATE_0;
|
||||
g->g.Powermode = powerOn;
|
||||
g->g.Powermode = powerOff;
|
||||
g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
|
||||
g->g.Contrast = GDISP_INITIAL_CONTRAST;
|
||||
return TRUE;
|
||||
|
@ -204,7 +204,8 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||
uint8_t* src = PRIV(g)->frame_buffer;
|
||||
for (int y=0;y<GDISP_SCREEN_HEIGHT;y++) {
|
||||
for (int x=0;x<GDISP_SCREEN_WIDTH;x++) {
|
||||
PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[*src];
|
||||
uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
|
||||
PRIV(g)->write_buffer[get_led_address(g, x, y)]=CIE1931_CURVE[val];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
@ -297,8 +298,13 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
|||
g->g.Orientation = (orientation_t)g->p.ptr;
|
||||
return;
|
||||
|
||||
case GDISP_CONTROL_CONTRAST:
|
||||
return;
|
||||
case GDISP_CONTROL_BACKLIGHT:
|
||||
if (g->g.Backlight == (unsigned)g->p.ptr)
|
||||
return;
|
||||
unsigned val = (unsigned)g->p.ptr;
|
||||
g->g.Backlight = val > 100 ? 100 : val;
|
||||
g->flags |= GDISP_FLG_NEEDFLUSH;
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif // GDISP_NEED_CONTROL
|
||||
|
|
|
@ -62,15 +62,10 @@ CUSTOM_MATRIX ?= yes # Custom matrix file
|
|||
SERIAL_LINK_ENABLE = yes
|
||||
VISUALIZER_ENABLE ?= yes
|
||||
LCD_ENABLE ?= yes
|
||||
LED_ENABLE ?= no
|
||||
BACKLIGHT_ENABLE ?= yes
|
||||
LCD_BACKLIGHT_ENABLE ?= yes
|
||||
MIDI_ENABLE = no
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
ifdef LCD_ENABLE
|
||||
include $(SUBPROJECT_PATH)/drivers/gdisp/st7565ergodox/driver.mk
|
||||
endif
|
||||
|
||||
ifdef LED_ENABLE
|
||||
include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
|
||||
endif
|
||||
include $(SUBPROJECT_PATH)/drivers/gdisp/IS31FL3731C/driver.mk
|
|
@ -1,7 +1,7 @@
|
|||
SUBPROJECT_DEFAULT = infinity
|
||||
LCD_BACKLIGHT_ENABLE = yes
|
||||
LCD_ENABLE = yes
|
||||
LED_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
|
|
Before Width: | Height: | Size: 79 KiB |
|
@ -1,7 +1,7 @@
|
|||
# Beginner's keymap for Ergodox-EZ
|
||||
Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get comfortable with the Ergodox-EZ, you may fork this keymap and customize it for your own needs or find a suitable one from the community contributed keymaps.
|
||||
|
||||

|
||||

|
||||
|
||||
#### Pros
|
||||
* Easier to switch between regular keyboards and Ergodox-EZ.
|
||||
|
|
Before Width: | Height: | Size: 1.4 MiB |
|
@ -8,4 +8,4 @@
|
|||
* Sept. 8, 2016 (V0.1):
|
||||
* Made A key double as MEDIA Layer change when you hold it. Added mouse buttons to the large thumb buttons on the left side on the Media Layer. Added vi/vim style arrow keys on HJKL on media layer.
|
||||
|
||||

|
||||

|
||||
|
|
|
@ -22,7 +22,7 @@ the 1st layer - in case of fat fingers.
|
|||
Layout
|
||||
-------
|
||||
|
||||

|
||||

|
||||
|
||||
### Base Layer
|
||||
|
||||
|
|
Before Width: | Height: | Size: 814 KiB |
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 136 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 63 KiB |
|
@ -34,7 +34,7 @@ Some of the things in the layout only work when one uses [Spacemacs][spacemacs]
|
|||
|
||||
## Base layer
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
|
||||
|
||||
At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave:
|
||||
|
||||
|
@ -62,7 +62,7 @@ The symbols on the front in the image above have the same color as the key that
|
|||
|
||||
## ADORE layer
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
|
||||
|
||||
My experimental layout, that I keep tweaking. No full description here, because things are very much in flux.
|
||||
|
||||
|
@ -70,7 +70,7 @@ Note that the **HUN** layer does not work well with ADORE: it still has the same
|
|||
|
||||
## Steno layer
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
|
||||
|
||||
This is to be used with [Plover](http://www.openstenoproject.org/plover/), nothing really fancy here. The **STENO** key toggles the layer on and off, and sends the toggle command to Plover too.
|
||||
|
||||
|
@ -110,7 +110,7 @@ Included with the firmware is a small tool that can parse these logs, and create
|
|||
|
||||
The generated heatmap looks somewhat like this:
|
||||
|
||||

|
||||

|
||||
|
||||
## Layer notification
|
||||
|
||||
|
@ -144,3 +144,6 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the
|
|||
# License
|
||||
|
||||
The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
|
||||
|
||||

|
||||

|
21
keyboards/ergodox/keymaps/belak/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2016 Kaleb Elwert
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
6
keyboards/ergodox/keymaps/belak/Makefile
Normal file
|
@ -0,0 +1,6 @@
|
|||
TAP_DANCE_ENABLE=yes
|
||||
UNICODE_ENABLE=yes
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
79
keyboards/ergodox/keymaps/belak/README.md
Normal file
|
@ -0,0 +1,79 @@
|
|||
# Belak's Ergodox Layout
|
||||
|
||||
This has been based off of [emacs\_osx\_dk](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/emacs_osx_dk)
|
||||
from the main qmk repo. However, I've taken some of the ideas for the thumbs
|
||||
from [dvorak\_emacs](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/dvorak_emacs)
|
||||
and tweaked it a bit based on the keycaps I have.
|
||||
|
||||
This keyboard is intended for use in emacs (one of the main reasons for easy
|
||||
access to modifiers) but it could be useful in other instances as well.
|
||||
|
||||
The main repo is used as a testbed, so sometimes the layout may be in a strange
|
||||
state. The qmk version should be relatively stable.
|
||||
|
||||
## Instructions
|
||||
|
||||
This is currently being used on a regular ergodox, but it should work fine on
|
||||
the infinity as well. Though, you may have to modify the commands to build and
|
||||
flash the firmware to match the separate halves as defined in the infinity
|
||||
documentation.
|
||||
|
||||
If you are using this keymap in the qmk repo, you should be able to just run
|
||||
`make ergodox-belak-teensy`. If you're using this externally (I sometimes make
|
||||
changes before syncing them to qmk), use the following instructions:
|
||||
|
||||
1. Clone the main qmk repo
|
||||
2. Clone this to `$QMK/keyboards/ergodox/keymaps/belak-external`
|
||||
3. Run `make ergodox-belak-external-teensy` from the root of the qmk repo.
|
||||
|
||||
## Changelog
|
||||
|
||||
Fifth Revision
|
||||
|
||||
* Change layer keys to tap-dance keys which cycle through additional layers
|
||||
* Add a few emoji keys (in preparation for an emoji layer)
|
||||
|
||||
Fourth Revision
|
||||
|
||||
* Remove media layer
|
||||
* Add a layer which swaps control and gui on the thumb keys.
|
||||
* Add some basic code to save settings to the eeprom
|
||||
* Save the state of the keys swapped in the thumb in the eeprom
|
||||
|
||||
Third Revision
|
||||
|
||||
* Add numpad layer and remove numpad from symbols layer
|
||||
* Disable media layer
|
||||
* Add arrow keys on ijkl to the symbols layer
|
||||
* Replace ALT on held enter and held delete with GUI (for better OSX
|
||||
compatibility, as there's already an ALT key relatively close)
|
||||
* Replace keys above enter and delete with temporary layer switch buttons not
|
||||
matching the other layer switch for that hand.
|
||||
* Reindent and space out most of the layer definitions
|
||||
|
||||
Second Revision
|
||||
|
||||
* Clean up definitions to make differences between layers easier to see
|
||||
* Remove old LCD code
|
||||
* Add new LCD code based on fredizzimo's branch
|
||||
|
||||
First Revision
|
||||
|
||||
* Reverse grave and escape
|
||||
|
||||
Initial Version
|
||||
|
||||
* Copy from emacs\_osx\_dk
|
||||
* "Fix" right alt
|
||||
* Change thumb keys to match default layout (backspace, delete, enter, space)
|
||||
* Add modifiers to thumb keys (ctrl to backspace and space, alt to delete and
|
||||
enter)
|
||||
* Replace the RAlt below the brackets with LGui and RGui
|
||||
* Remove LCtrl and RCtrl from the keys above shift
|
||||
* Add browser forward, and move browser back
|
||||
* "Fix" the order of volume keys
|
||||
|
||||
## Repository
|
||||
|
||||
The original code for this is kept at https://github.com/belak/ergodox-layout and
|
||||
is synced to qmk every few main revisions.
|
368
keyboards/ergodox/keymaps/belak/keymap.c
Normal file
|
@ -0,0 +1,368 @@
|
|||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "eeconfig.h"
|
||||
#include "eeprom.h"
|
||||
|
||||
#define LAYER_ON(pos) ((layer_state) & (1<<(pos)))
|
||||
#define _______ KC_TRNS
|
||||
|
||||
#define EECONFIG_BELAK_MAGIC (uint16_t)0xBE42
|
||||
|
||||
// NOTE: This is just a number that's a bit beyond the end of what's already
|
||||
// defined. As there is no other define we can base this on, it may need to be
|
||||
// changed in the future. The initial value here is used as a placeholder with a
|
||||
// magic word, similar to the normal eeconfig. Note that all the storage being
|
||||
// used needs to fit inside the 32 bytes of the Ergodox Infinity.
|
||||
#define EECONFIG_BELAK (uint16_t *)16
|
||||
|
||||
// The correct way to do this would be how the normal eeconfig handles it and
|
||||
// use a bitfield. However, the eeprom has a ton of space which isn't being
|
||||
// used so I don't really care and have a separate byte for every setting.
|
||||
#define EECONFIG_BELAK_SWAP_GUI_CTRL (uint8_t *)18
|
||||
|
||||
static uint8_t swap_gui_ctrl = 0;
|
||||
static uint8_t td_led_override = 0;
|
||||
|
||||
enum belak_keycodes {
|
||||
// Function codes
|
||||
BEL_F0 = SAFE_RANGE,
|
||||
BEL_F1,
|
||||
|
||||
E_SHRUG,
|
||||
E_TFLIP,
|
||||
E_TSET,
|
||||
};
|
||||
|
||||
inline void tap(uint16_t keycode) {
|
||||
register_code(keycode);
|
||||
unregister_code(keycode);
|
||||
};
|
||||
|
||||
// TODO: Add LED support to the tap dance by using the advanced macro
|
||||
#define LTOGGLE TD(TD_LAYER_TOGGLE)
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define SYMB 1 // symbols
|
||||
#define NUMP 2 // numpad
|
||||
#define SWPH 3 // swap gui/ctrl on the hands
|
||||
|
||||
enum belak_td {
|
||||
TD_LAYER_TOGGLE = 0,
|
||||
};
|
||||
|
||||
void belak_td_each(qk_tap_dance_state_t *state, void *user_data);
|
||||
void belak_td_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||
void belak_td_reset(qk_tap_dance_state_t *state, void *user_data);
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN_ADVANCED(belak_td_each, belak_td_finished, belak_td_reset),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap 0: Basic layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | L1 | | L2 | 6 | 7 | 8 | 9 | 0 | = |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | - |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | \ | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||
* |--------+------+------+------+------+------| LGui | | RGui |------+------+------+------+------+--------|
|
||||
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* |Layers| LCtrl| Left | Right| LAlt | | RAlt | Up | Down | RCtrl|Layers|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,--------------.
|
||||
* | ~L2 | Ins | | Grv | ~L1 |
|
||||
* ,-------|------|------| |------+-------+-------.
|
||||
* | Back | | Home | | PgUp | | |
|
||||
* | Space | Del |------| |------| Enter | Space |
|
||||
* | | | End | | PgDn | | |
|
||||
* `---------------------' `----------------------'
|
||||
*/
|
||||
[BASE] = KEYMAP( // layer 0 : default
|
||||
// left hand
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, TG(SYMB),
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
|
||||
CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI,
|
||||
LTOGGLE, KC_LCTRL, KC_LEFT,KC_RGHT,KC_LALT,
|
||||
MO(NUMP),KC_INS,
|
||||
KC_HOME,
|
||||
CTL_T(KC_BSPC),GUI_T(KC_DEL),KC_END,
|
||||
// right hand
|
||||
TG(NUMP), KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
|
||||
KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_RGUI, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_RALT,KC_UP, KC_DOWN,KC_RCTRL, LTOGGLE,
|
||||
KC_GRV, MO(SYMB),
|
||||
KC_PGUP,
|
||||
KC_PGDN, GUI_T(KC_ENT), CTL_T(KC_SPC)
|
||||
),
|
||||
/* Keymap 1: Symbol Layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | ! | @ | { | } | | | | | | Up | | Up | | | F12 |
|
||||
* |--------+------+------+------+------+------| TFLIP| | TSET |------+------+------+------+------+--------|
|
||||
* | | # | $ | ( | ) | ` |------| |------| Down | Left | Down | Rght | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | % | ^ | [ | ] | ~ | SHRUG| | | & | | | | | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* |LClear| | | | | | | | | |LClear|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | TOGL | | | | TOGL |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[SYMB] = KEYMAP(
|
||||
// left hand
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, E_TFLIP,
|
||||
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, E_TSET,
|
||||
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, E_SHRUG,
|
||||
BEL_F1, _______, _______, _______, _______,
|
||||
BEL_F0, _______,
|
||||
_______,
|
||||
_______, _______, _______,
|
||||
// right hand
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_UP, _______, KC_UP, _______, _______, KC_F12,
|
||||
KC_DOWN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
_______, KC_AMPR, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, BEL_F1,
|
||||
_______, BEL_F0,
|
||||
_______,
|
||||
_______, _______, _______
|
||||
),
|
||||
/* Keymap 2: Numpad Layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | 7 | 8 | 9 | * | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | |------| |------| | 4 | 5 | 6 | + | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | 1 | 2 | 3 | \ | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* |LClear| | | | | | 0 | 0 | . | = |LClear|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | TOGL | | | | TOGL |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NUMP] = KEYMAP(
|
||||
// left hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
BEL_F1, _______, _______, _______, _______,
|
||||
BEL_F0, _______,
|
||||
_______,
|
||||
_______, _______, _______,
|
||||
// right hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_7, KC_8, KC_9, KC_ASTR, _______,
|
||||
_______, KC_4, KC_5, KC_6, KC_PLUS, _______,
|
||||
_______, _______, KC_1, KC_2, KC_3, KC_BSLS, _______,
|
||||
KC_0, KC_0, KC_DOT, KC_EQL, BEL_F1,
|
||||
_______, BEL_F0,
|
||||
_______,
|
||||
_______, _______, _______
|
||||
),
|
||||
/* Keymap 3: Swap control and gui on the thumb */
|
||||
[SWPH] = KEYMAP(
|
||||
// left hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______,
|
||||
_______,
|
||||
GUI_T(KC_BSPC), CTL_T(KC_DEL), _______,
|
||||
// right hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______,
|
||||
_______,
|
||||
_______, CTL_T(KC_ENT), GUI_T(KC_SPC)
|
||||
),
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
// If our magic word wasn't set properly, we need to zero out the settings.
|
||||
if (eeprom_read_word(EECONFIG_BELAK) != EECONFIG_BELAK_MAGIC) {
|
||||
eeprom_update_word(EECONFIG_BELAK, EECONFIG_BELAK_MAGIC);
|
||||
eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, 0);
|
||||
}
|
||||
|
||||
if (eeprom_read_byte(EECONFIG_BELAK_SWAP_GUI_CTRL)) {
|
||||
layer_on(SWPH);
|
||||
swap_gui_ctrl = 1;
|
||||
}
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
|
||||
switch (td_led_override) {
|
||||
case 1:
|
||||
ergodox_right_led_1_on();
|
||||
break;
|
||||
case 2:
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
default:
|
||||
// Layer 1 and 2 are both overlay layers, so they could both be on. This
|
||||
// means we can't use the lazy check of checking for the first significant
|
||||
// bit.
|
||||
if (LAYER_ON(SYMB)) {
|
||||
ergodox_right_led_1_on();
|
||||
}
|
||||
if (LAYER_ON(NUMP)) {
|
||||
ergodox_right_led_2_on();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case BEL_F0:
|
||||
if(record->event.pressed){
|
||||
swap_gui_ctrl = !swap_gui_ctrl;
|
||||
eeprom_update_byte(EECONFIG_BELAK_SWAP_GUI_CTRL, swap_gui_ctrl);
|
||||
|
||||
if (swap_gui_ctrl) {
|
||||
layer_on(SWPH);
|
||||
} else {
|
||||
layer_off(SWPH);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case BEL_F1:
|
||||
if(record->event.pressed){
|
||||
layer_off(SYMB);
|
||||
layer_off(NUMP);
|
||||
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case E_SHRUG: // ¯\_(ツ)_/¯
|
||||
if (record->event.pressed) {
|
||||
process_unicode((0x00AF|QK_UNICODE), record); // Hand
|
||||
tap(KC_BSLS); // Arm
|
||||
register_code(KC_RSFT);
|
||||
tap(KC_UNDS); // Arm
|
||||
tap(KC_LPRN); // Head
|
||||
unregister_code(KC_RSFT);
|
||||
process_unicode((0x30C4|QK_UNICODE), record); // Face
|
||||
register_code(KC_RSFT);
|
||||
tap(KC_RPRN); // Head
|
||||
tap(KC_UNDS); // Arm
|
||||
unregister_code(KC_RSFT);
|
||||
tap(KC_SLSH); // Arm
|
||||
process_unicode((0x00AF|QK_UNICODE), record); // Hand
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case E_TFLIP: // (╯°□°)╯ ︵ ┻━┻
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
tap(KC_9);
|
||||
unregister_code(KC_RSFT);
|
||||
process_unicode((0x256F|QK_UNICODE), record); // Arm
|
||||
process_unicode((0x00B0|QK_UNICODE), record); // Eye
|
||||
process_unicode((0x25A1|QK_UNICODE), record); // Mouth
|
||||
process_unicode((0x00B0|QK_UNICODE), record); // Eye
|
||||
register_code(KC_RSFT);
|
||||
tap(KC_0);
|
||||
unregister_code(KC_RSFT);
|
||||
process_unicode((0x256F|QK_UNICODE), record); // Arm
|
||||
tap(KC_SPC);
|
||||
process_unicode((0x0361|QK_UNICODE), record); // Flippy
|
||||
tap(KC_SPC);
|
||||
process_unicode((0x253B|QK_UNICODE), record); // Table
|
||||
process_unicode((0x2501|QK_UNICODE), record); // Table
|
||||
process_unicode((0x253B|QK_UNICODE), record); // Table
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case E_TSET: // ┬──┬ ノ( ゜-゜ノ)
|
||||
if (record->event.pressed) {
|
||||
process_unicode((0x252C|QK_UNICODE), record); // Table
|
||||
process_unicode((0x2500|QK_UNICODE), record); // Table
|
||||
process_unicode((0x2500|QK_UNICODE), record); // Table
|
||||
process_unicode((0x252C|QK_UNICODE), record); // Table
|
||||
tap(KC_SPC);
|
||||
process_unicode((0x30CE|QK_UNICODE), record); // Arm
|
||||
register_code(KC_RSFT);
|
||||
tap(KC_9);
|
||||
unregister_code(KC_RSFT);
|
||||
tap(KC_SPC);
|
||||
process_unicode((0x309C|QK_UNICODE), record); // Eye
|
||||
tap(KC_MINS);
|
||||
process_unicode((0x309C|QK_UNICODE), record); // Eye
|
||||
process_unicode((0x30CE|QK_UNICODE), record); // Arm
|
||||
register_code(KC_RSFT);
|
||||
tap(KC_0);
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void belak_td_each(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1:
|
||||
td_led_override = 1;
|
||||
break;
|
||||
case 2:
|
||||
td_led_override = 2;
|
||||
break;
|
||||
default:
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
}
|
||||
|
||||
void belak_td_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1:
|
||||
layer_on(SYMB);
|
||||
break;
|
||||
case 2:
|
||||
layer_on(NUMP);
|
||||
break;
|
||||
}
|
||||
td_led_override = 0;
|
||||
}
|
||||
|
||||
void belak_td_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
td_led_override = 0;
|
||||
}
|
49
keyboards/ergodox/keymaps/belak/visualizer.c
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
Copyright 2017 Fred Sundvik
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
// Currently we are assuming that both the backlight and LCD are enabled
|
||||
// But it's entirely possible to write a custom visualizer that use only
|
||||
// one of them
|
||||
#ifndef LCD_BACKLIGHT_ENABLE
|
||||
#error This visualizer needs that LCD backlight is enabled
|
||||
#endif
|
||||
|
||||
#ifndef LCD_ENABLE
|
||||
#error This visualizer needs that LCD is enabled
|
||||
#endif
|
||||
|
||||
#include "simple_visualizer.h"
|
||||
|
||||
static void get_visualizer_layer_and_color(visualizer_state_t* state) {
|
||||
uint8_t saturation = 60;
|
||||
if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
|
||||
saturation = 255;
|
||||
}
|
||||
|
||||
if (state->status.layer & 0x4) {
|
||||
state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
|
||||
state->layer_text = "Media";
|
||||
}
|
||||
else if (state->status.layer & 0x2) {
|
||||
state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
|
||||
state->layer_text = "Symbols";
|
||||
}
|
||||
else {
|
||||
state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
|
||||
state->layer_text = "Base";
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 78 KiB |
|
@ -1,3 +1,5 @@
|
|||

|
||||
|
||||
# BEPO keymap for the ErgoDox
|
||||
|
||||
This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this readme will be in french.
|
||||
|
|
Before Width: | Height: | Size: 101 KiB |
|
@ -20,4 +20,4 @@ Tap for the next character to be shifted, hold down for regular shift functional
|
|||
|
||||
## Layout
|
||||
|
||||

|
||||

|
||||
|
|
Before Width: | Height: | Size: 294 KiB |
Before Width: | Height: | Size: 230 KiB |
|
@ -19,5 +19,5 @@ I came to this layout after several iterations. It is not the ultimate best ergo
|
|||
|
||||
Alternatively view the [graphical creator version](http://configure.ergodox-ez.com/keyboard_layouts/kmevwm/edit) but beware it is not the same due to the creator limitations.
|
||||
|
||||

|
||||

|
||||

|
||||

|
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 379 KiB |
|
@ -16,7 +16,8 @@ The biggest flaw in standard QWERTY keyboards was that I always needed to perfor
|
|||
|
||||
Then I came across the ErgoDox EZ project, that allowed a full customization of its firmware, and a unique 2 parts design.
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Layout design principles
|
||||
* No key combination required for the most common input characters ( (),[],{},<> ... )
|
||||
|
|
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 65 KiB |
|
@ -13,7 +13,7 @@ All layer images created using [keyboard-layout-editor](http://www.keyboard-layo
|
|||
|
||||
## Base layer
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/0321b18620180a3e46c498206eb65366)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/0321b18620180a3e46c498206eb65366)
|
||||
|
||||
The base layer here is marked with the us international alt-gr layout,
|
||||
including characters bound to what on an iso keyboard would be alt-gr
|
||||
|
@ -34,7 +34,7 @@ type in the unicode hex value, and hit enter.
|
|||
|
||||
## Layer 1 - Symbols and RGB
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
|
||||
|
||||
The Symbols and RGB layer contains function keys, commonly used
|
||||
symbols, a numpad and if you have the new Ergodox Ez shine keys for
|
||||
|
@ -43,7 +43,7 @@ and a down key for easy scrolling. RGB controller keys are yellow.
|
|||
|
||||
## Layer 2 - Media, Mouse and Navigation
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
|
||||
|
||||
The Media, Mouse and unicode layer contains special keys for moving
|
||||
the mouse and clicking on it with the keyboard. In addition it
|
||||
|
@ -51,13 +51,13 @@ provides standard media control keys, and default arrow keys.
|
|||
|
||||
## Layer 3 - Unicode
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
|
||||
|
||||
The unicode layer provides keys for directly typing unicode (utf-8)
|
||||
|
||||
## Layer 4 - Unicode 2
|
||||
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/7b2241110ab8311d9668a0798f3baf4a)
|
||||
[](http://www.keyboard-layout-editor.com/#/gists/7b2241110ab8311d9668a0798f3baf4a)
|
||||
|
||||
The unicode 2 layer provides keys for directly typing unicode (utf-8)
|
||||
|
||||
|
|
Before Width: | Height: | Size: 189 KiB |
1
keyboards/ergodox/keymaps/default/default.png.md
Normal file
|
@ -0,0 +1 @@
|
|||
https://i.imgur.com/fKX0Zbs.png
|
Before Width: | Height: | Size: 252 KiB |
Before Width: | Height: | Size: 1.4 MiB |
1
keyboards/ergodox/keymaps/default/default_highres.png.md
Normal file
|
@ -0,0 +1 @@
|
|||
https://i.imgur.com/giAc3M9.jpg
|
|
@ -12,4 +12,4 @@
|
|||
|
||||
This is what we ship with out of the factory. :) The image says it all:
|
||||
|
||||

|
||||

|
Before Width: | Height: | Size: 754 KiB |
|
@ -5,4 +5,4 @@ So, I took the default firmware and just made a couple of tweaks that make it ea
|
|||
1. The Cmd key is now on the right side, making Cmd+Space easier.
|
||||
2. The media keys work on OSX (But not on Windows).
|
||||
|
||||

|
||||

|
||||
|
|
Before Width: | Height: | Size: 85 KiB |
1
keyboards/ergodox/keymaps/dvorak/dvorak.png.md
Normal file
|
@ -0,0 +1 @@
|
|||
https://i.imgur.com/zLx5fus.png
|
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 52 KiB |
|
@ -19,9 +19,9 @@ Known issues:
|
|||
* Alt+Shift does not work reliably (depends on the X11 kb layout? Not
|
||||
entirely clear...)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Changelog
|
||||
|
||||
|
|