More work on Talljoe layout including adding layout support for HHKB and TKL. (#2946)
* Add tap-dancing semicolon. * Infinity60 was running out of USB space. * Rename common layout variable so it doesn't collide with some keyboards. * Godspeed!!! * Patch the number of LEDs for 1up60rgb * Don't light up if rgblight is off. * Add HHKB layout. * Add HHKB to Talljoe's layout. * Bring back bananasplit keymap. * info.json * Userspace config.h doesn't seem to be setting PREVENT_STUCK_MODIFIERS * Remove 1uprgb workaround * Add TKL to talljoe keymap. Also introduces the tkl layout.pull/2950/head
parent
48a68dcf10
commit
6dda0d6e34
@ -0,0 +1,23 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include QMK_KEYBOARD_CONFIG_H
|
||||
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
#define SPACE_COUNT 3
|
||||
|
||||
#define TEMPLATE( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||
{ K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, KC_NO, K4B, K4C, KC_NO }\
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1 @@
|
||||
// This space intentionally left blank
|
@ -0,0 +1,23 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include QMK_KEYBOARD_CONFIG_H
|
||||
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
#define ENABLE_GAME_LAYER
|
||||
|
||||
#define TEMPLATE( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
||||
) LAYOUT_60_hhkb( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K41, K42, K45, K48, K4C \
|
||||
)
|
||||
|
||||
#endif //CONFIG_USER_H
|
@ -0,0 +1 @@
|
||||
// This space intentionally left blank
|
@ -0,0 +1 @@
|
||||
USER_NAME := talljoe
|
@ -0,0 +1,25 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include QMK_KEYBOARD_CONFIG_H
|
||||
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
#define ENABLE_GAME_LAYER
|
||||
|
||||
#define TEMPLATE_TKL(\
|
||||
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
|
||||
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
|
||||
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
|
||||
KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
|
||||
KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
|
||||
KA4, KP2, KC6, KX1, KK6, KX2, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
|
||||
) LAYOUT_tkl_ansi( \
|
||||
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
|
||||
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
|
||||
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
|
||||
KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
|
||||
KN2,KC_NO,KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
|
||||
KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
|
||||
)
|
||||
|
||||
#endif //CONFIG_USER_H
|
@ -0,0 +1,89 @@
|
||||
#ifdef KEYBOARD_zeal60
|
||||
#include "config.h"
|
||||
#include "zeal60.h"
|
||||
#include "zeal_backlight.h"
|
||||
#include "action_layer.h"
|
||||
#include "solarized.h"
|
||||
#include "talljoe.h"
|
||||
|
||||
// from zeal_backlight.c
|
||||
// we want to be able to set indicators for the spacebar stabs
|
||||
// but they are not represented by a row/index.
|
||||
extern zeal_backlight_config g_config;
|
||||
void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led );
|
||||
|
||||
void set_backlight_defaults(void) {
|
||||
uint8_t space;
|
||||
uint8_t caps_lock;
|
||||
map_row_column_to_led(3, 12, &caps_lock);
|
||||
map_row_column_to_led(4, 7, &space);
|
||||
zeal_backlight_config default_values = {
|
||||
.use_split_backspace = USE_SPLIT_BACKSPACE,
|
||||
.use_split_left_shift = USE_SPLIT_LEFT_SHIFT,
|
||||
.use_split_right_shift = USE_SPLIT_RIGHT_SHIFT,
|
||||
.use_7u_spacebar = USE_7U_SPACEBAR,
|
||||
.use_iso_enter = USE_ISO_ENTER,
|
||||
.disable_when_usb_suspended = 1,
|
||||
.disable_after_timeout = 0,
|
||||
.brightness = 255,
|
||||
.effect = 10,
|
||||
.color_1 = solarized.base2,
|
||||
.color_2 = solarized.base02,
|
||||
.caps_lock_indicator = { .index = caps_lock, .color = solarized.red },
|
||||
.layer_1_indicator = { .index = space, .color = solarized.blue },
|
||||
.layer_2_indicator = { .index = space, .color = solarized.yellow },
|
||||
.layer_3_indicator = { .index = 254, .color = solarized.red },
|
||||
.alphas_mods = {
|
||||
BACKLIGHT_ALPHAS_MODS_ROW_0,
|
||||
BACKLIGHT_ALPHAS_MODS_ROW_1,
|
||||
BACKLIGHT_ALPHAS_MODS_ROW_2,
|
||||
BACKLIGHT_ALPHAS_MODS_ROW_3,
|
||||
BACKLIGHT_ALPHAS_MODS_ROW_4 }
|
||||
};
|
||||
memcpy(&g_config, &default_values, sizeof(zeal_backlight_config));
|
||||
backlight_config_save();
|
||||
|
||||
solarized_t* S = &solarized;
|
||||
HSV alphas = S->base2;
|
||||
HSV custom_color_map[MATRIX_ROWS][MATRIX_COLS] = CM(
|
||||
S->red, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->red,
|
||||
S->orange, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->orange,
|
||||
S->green, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->green,
|
||||
S->blue, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->blue, S->blue,
|
||||
S->violet, S->magenta, S->yellow, alphas, S->yellow, S->magenta, S->violet, S->green
|
||||
);
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
|
||||
for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
|
||||
backlight_set_key_color(row, col, custom_color_map[row][col]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint8_t last_effect;
|
||||
switch (keycode) {
|
||||
case DFAULTS:
|
||||
if (IS_PRESSED(record->event)) set_backlight_defaults();
|
||||
return false;
|
||||
case BL_TOGG:
|
||||
if (IS_PRESSED(record->event)) {
|
||||
if (g_config.effect) {
|
||||
last_effect = g_config.effect;
|
||||
g_config.effect = 0;
|
||||
} else {
|
||||
g_config.effect = last_effect;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case EFFECT...EFFECT_END:
|
||||
if (IS_PRESSED(record->event)) {
|
||||
uint8_t effect = keycode - EFFECT;
|
||||
g_config.effect = effect;
|
||||
backlight_config_save();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
@ -0,0 +1 @@
|
||||
USER_NAME := talljoe
|
@ -0,0 +1,65 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define BASE 0
|
||||
#define HHKB 1
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* BASE Level: Default Layer
|
||||
|-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
|
||||
|-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
|
||||
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
|
||||
|-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
|
||||
| Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | |
|
||||
|-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
|
||||
| Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
|
||||
|-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
|
||||
|
||||
|------+------+-----------------------+------+------|
|
||||
| LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
|
||||
|------+------+-----------------------+------+------|
|
||||
*/
|
||||
|
||||
[BASE] = LAYOUT_60_hhkb( // default layer
|
||||
KC_ESC, 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_BSLS, KC_GRV, \
|
||||
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_BSPC, \
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
|
||||
KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT),
|
||||
|
||||
|
||||
|
||||
/* Layer HHKB: HHKB mode (HHKB Fn)
|
||||
|------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
|
||||
| Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
|
||||
|------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
|
||||
| Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
|
||||
|------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
|
||||
| | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
|
||||
|------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
|
||||
| | | | | | | + | - | End | PgD | Dow | | | | |
|
||||
|------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
|
||||
|
||||
|------+------+----------------------+------+------+
|
||||
| **** | **** | ******************** | **** | **** |
|
||||
|------+------+----------------------+------+------+
|
||||
|
||||
*/
|
||||
|
||||
[HHKB] = LAYOUT_60_hhkb(
|
||||
KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
|
||||
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \
|
||||
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
};
|
@ -0,0 +1,5 @@
|
||||
["Esc","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=","|\n\\","~\n`"],
|
||||
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"Delete"],
|
||||
[{w:1.75},"Control","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
|
||||
[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:1.75},"Shift","Fn"],
|
||||
[{x:1.5},"Os",{w:1.5},"Alt",{a:7,w:7},"",{a:4,w:1.5},"Alt","Os"]
|
@ -0,0 +1,3 @@
|
||||
# 60_hhkb
|
||||
|
||||
LAYOUT_60_hhkb
|
@ -0,0 +1,11 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi(\
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
|
||||
KC_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 ,KC_HOME,KC_PGUP, \
|
||||
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 ,KC_END ,KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, 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, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \
|
||||
};
|
@ -0,0 +1,6 @@
|
||||
["Esc",{x:1},"F1","F2","F3","F4",{x:0.5},"F5","F6","F7","F8",{x:0.5},"F9","F10","F11","F12",{x:0.25},"PrtSc","Scroll Lock","Pause\nBreak"],
|
||||
[{y:0.5},"~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{x:0.25},"Insert","Home","PgUp"],
|
||||
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{x:0.25},"Delete","End","PgDn"],
|
||||
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
|
||||
[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift",{x:1.25},"↑"],
|
||||
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"Alt",{w:1.25},"Win",{w:1.25},"Menu",{w:1.25},"Ctrl",{x:0.25},"←","↓","→"]
|
@ -0,0 +1,3 @@
|
||||
# tkl_ansi
|
||||
|
||||
LAYOUT_tkl_ansi
|
@ -1,3 +1,7 @@
|
||||
SRC += talljoe.c
|
||||
SRC += talljoe.c tapdance.c
|
||||
|
||||
EXTRAFLAGS+=-flto
|
||||
|
||||
TAP_DANCE_ENABLE=yes
|
||||
CONSOLE_ENABLE=no
|
||||
COMMAND_ENABLE=no
|
||||
|
@ -0,0 +1,34 @@
|
||||
//Tap Dance
|
||||
#include "talljoe.h"
|
||||
|
||||
// Send semin-colon + enter on two taps
|
||||
void tap_dance_semicolon(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch(state->count) {
|
||||
case 1:
|
||||
register_code(KC_SCLN);
|
||||
unregister_code(KC_SCLN);
|
||||
break;
|
||||
case 2:
|
||||
register_code(KC_SCLN);
|
||||
unregister_code(KC_SCLN);
|
||||
|
||||
uint8_t mods = get_mods();
|
||||
if (mods) {
|
||||
clear_mods();
|
||||
}
|
||||
|
||||
register_code(KC_ENT);
|
||||
unregister_code(KC_ENT);
|
||||
|
||||
if (mods) {
|
||||
set_mods(mods);
|
||||
}
|
||||
|
||||
reset_tap_dance(state);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SEMICOLON] = ACTION_TAP_DANCE_FN(tap_dance_semicolon),
|
||||
};
|
Loading…
Reference in new issue