Merge pull request #880 from psyill/master
Added keymap "videck", an ErgoDox keymap for Vi(m) users.example_keyboards
commit
9f1b27c5ba
@ -0,0 +1,19 @@
|
|||||||
|
AUDIO_ENABLE:=no
|
||||||
|
BACKLIGHT_ENABLE:=no
|
||||||
|
BLUETOOTH_ENABLE:=no
|
||||||
|
BOOTMAGIC_ENABLE:=no
|
||||||
|
COMMAND_ENABLE:=no
|
||||||
|
CONSOLE_ENABLE:=no
|
||||||
|
EXTRAKEY_ENABLE:=yes
|
||||||
|
MIDI_ENABLE:=no
|
||||||
|
MOUSEKEY_ENABLE:=yes
|
||||||
|
NKRO_ENABLE:=no
|
||||||
|
RGBLIGHT_ENABLE:=no
|
||||||
|
SLEEP_LED_ENABLE:=no
|
||||||
|
TAP_DANCE_ENABLE:=yes
|
||||||
|
UNICODEMAP_ENABLE:=no
|
||||||
|
UNICODE_ENABLE:=no
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
#ifndef NO_DEBUG
|
||||||
|
#define NO_DEBUG
|
||||||
|
#endif
|
||||||
|
#ifndef NO_PRINT
|
||||||
|
#define NO_PRINT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,179 @@
|
|||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BASE = 0, // Default layer
|
||||||
|
ARROWS = 1, // Arrows and Fx keys layer
|
||||||
|
MOUSE = 2, // Mouse movement and buttons layer
|
||||||
|
PARENS = 3, // Parenthesis easy access layer
|
||||||
|
|
||||||
|
TD_L = 0, // Tap dance index for left shift
|
||||||
|
TD_R = 1 // Tap dance index for right shift
|
||||||
|
};
|
||||||
|
|
||||||
|
// See the videck.png image for a visualization of the layout.
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[BASE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME,
|
||||||
|
KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_END,
|
||||||
|
MO(PARENS), KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
TD(TD_L), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
|
||||||
|
KC_LCTL, KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE,
|
||||||
|
KC_ESC, KC_LGUI,
|
||||||
|
TG(MOUSE),
|
||||||
|
KC_SPC, KC_TAB, TG(ARROWS),
|
||||||
|
// right hand
|
||||||
|
KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R),
|
||||||
|
KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL,
|
||||||
|
KC_APP, KC_ESC,
|
||||||
|
KC_INS,
|
||||||
|
KC_SLCK, KC_ENT, KC_SPC
|
||||||
|
),
|
||||||
|
[ARROWS] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
|
||||||
|
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[MOUSE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_BTN3, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_BTN1, KC_BTN2, KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[PARENS] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS, KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc);
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16_t kc1;
|
||||||
|
uint16_t kc2;
|
||||||
|
videck_tap_dance_trigger_t trigger;
|
||||||
|
} videck_tap_dance_tuple_t;
|
||||||
|
|
||||||
|
static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
|
||||||
|
|
||||||
|
if (state->count == 1) {
|
||||||
|
register_code16 (tuple->kc1);
|
||||||
|
} else if (state->count == 2) {
|
||||||
|
register_code16 (tuple->kc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
|
||||||
|
|
||||||
|
if (state->count == 1) {
|
||||||
|
unregister_code16 (tuple->kc1);
|
||||||
|
} else if (state->count == 2) {
|
||||||
|
unregister_code16 (tuple->kc2);
|
||||||
|
tuple->trigger(tuple->kc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool caps_lock_is_on;
|
||||||
|
|
||||||
|
// Toggles caps lock status.
|
||||||
|
static void videck_caps_trigger (const uint16_t kc) {
|
||||||
|
caps_lock_is_on ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \
|
||||||
|
.fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \
|
||||||
|
.user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }), \
|
||||||
|
}
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger),
|
||||||
|
[TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger)
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
ergodox_led_all_set(LED_BRIGHTNESS_LO);
|
||||||
|
caps_lock_is_on = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void indicate_using_led(const uint8_t led, const bool enabled) {
|
||||||
|
if (enabled) {
|
||||||
|
ergodox_right_led_on(led);
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_off(led);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void indicate_caps_lock_state(const bool enabled) {
|
||||||
|
indicate_using_led(1, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void indicate_arrows_layer_state(const bool enabled) {
|
||||||
|
indicate_using_led(2, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void indicate_mouse_layer_state(const bool enabled) {
|
||||||
|
indicate_using_led(3, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
// Check if we have shift locked.
|
||||||
|
indicate_caps_lock_state(caps_lock_is_on);
|
||||||
|
indicate_arrows_layer_state(IS_LAYER_ON(ARROWS));
|
||||||
|
indicate_mouse_layer_state(IS_LAYER_ON(MOUSE));
|
||||||
|
};
|
@ -0,0 +1,24 @@
|
|||||||
|
ViDeck keymap for ErgoDox
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This is a QWERTY layout based on the US layout, where Vi functionality has been
|
||||||
|
especially considered.
|
||||||
|
|
||||||
|
# Features
|
||||||
|
* Mouse movements using the Vi movement keys.
|
||||||
|
* Vi movement keys doubling as arrow keys.
|
||||||
|
* Shift lock using double tap.
|
||||||
|
* A coder's modifier key for easy input of parenthesis.
|
||||||
|
* Acess to the escape key using either thumb.
|
||||||
|
* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch
|
||||||
|
to a non-US layout once in a while in X).
|
||||||
|
|
||||||
|
# Missing keys
|
||||||
|
* Caps Lock (shift lock is used instead).
|
||||||
|
* Pause/Break.
|
||||||
|
* Print Screen.
|
||||||
|
|
||||||
|
# LEDs
|
||||||
|
* Shift lock is indicated using first LED.
|
||||||
|
* Arrow keys layer is indicated using second LED.
|
||||||
|
* Mouse keys layer is indicated using third LED.
|
@ -0,0 +1,443 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"backcolor": "#333333",
|
||||||
|
"background": {
|
||||||
|
"name": "PBT Black",
|
||||||
|
"style": "background-image: url('/bg/plastic/pbt-black.png');"
|
||||||
|
},
|
||||||
|
"switchMount": "cherry",
|
||||||
|
"switchBrand": "gateron",
|
||||||
|
"switchType": "KS-3-Red"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#323232",
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"#\n3\n\nF3",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"*\n8\n\nF8"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"@\n2\n\nF2",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"$\n4\n\nF4",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"&\n7\n\nF7",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454"
|
||||||
|
},
|
||||||
|
"(\n9\n\nF9"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"%\n5\n\nF5",
|
||||||
|
{
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"home",
|
||||||
|
{
|
||||||
|
"x": 4.5
|
||||||
|
},
|
||||||
|
"pgup",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"^\n6\n\nF6"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"~\n`",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"!\n1\n\nF1",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
")\n0\n\nF10",
|
||||||
|
{
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"_\n-\n\nF11"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"E",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"I"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"W",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"R",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"U",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
"O\n\n\n\n\n\n\n\n\n{"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"T",
|
||||||
|
{
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"end",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"pgdn",
|
||||||
|
"Y"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"+\n=",
|
||||||
|
"Q",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
"P\n\n\n\n\n\n\n\n\n}",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"|\n\\\n\nF12"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"D",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8"
|
||||||
|
},
|
||||||
|
"K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"S",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"n": true
|
||||||
|
},
|
||||||
|
"F",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8",
|
||||||
|
"n": true
|
||||||
|
},
|
||||||
|
"J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
"L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n("
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"G",
|
||||||
|
{
|
||||||
|
"x": 6.5,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8"
|
||||||
|
},
|
||||||
|
"H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"t": "#f8d615",
|
||||||
|
"a": 6,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"( ) [ ] { }",
|
||||||
|
{
|
||||||
|
"t": "#ffffff",
|
||||||
|
"a": 4
|
||||||
|
},
|
||||||
|
"A",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615"
|
||||||
|
},
|
||||||
|
":\n;\n\n\n\n\n\nÖ\n\n)",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n#60605b",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\"\n'\n\n\n\n\n\nÄ"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.625,
|
||||||
|
"x": 6.5,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Unicode-DeleteRight-Big'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 3.5
|
||||||
|
},
|
||||||
|
"C",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"<\n,"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"X",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"V",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"M",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
">\n.\n\n\n\n\n\n\n\n["
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"B",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"N"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"t": "#ffffff\n\n#f67f00",
|
||||||
|
"a": 6,
|
||||||
|
"fa": [
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"⇑\n\n2-tap<br/>locks",
|
||||||
|
{
|
||||||
|
"t": "#ffffff",
|
||||||
|
"a": 4,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"Z",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"?\n/\n\n\n\n\n\n\n\n]",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n#f67f00",
|
||||||
|
"a": 6,
|
||||||
|
"f": 3,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"⇑\n\n2-tap<br/>locks"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"a": 4
|
||||||
|
},
|
||||||
|
"\n<i class='kb kb-Multimedia-Volume-Up-2'></i>",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"}\n]"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"\n<i class='kb kb-Multimedia-Volume-Down-1'></i>",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"\n<i class='kb kb-Multimedia-Mute-1'></i>",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n#60605b",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"{\n[\n\n\n\n\n\nÅ",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"+\n="
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 0.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"ctrl",
|
||||||
|
{
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"alt",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"altgr",
|
||||||
|
{
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"ctrl"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": 30,
|
||||||
|
"rx": 6.5,
|
||||||
|
"ry": 4.25,
|
||||||
|
"y": -1,
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M",
|
||||||
|
{
|
||||||
|
"t": "#ffffff",
|
||||||
|
"f": 7
|
||||||
|
},
|
||||||
|
"<i class='kb kb-logo-linux-tux'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
|
||||||
|
"f": 3,
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Tab-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>R",
|
||||||
|
{
|
||||||
|
"t": "#5eb1e7"
|
||||||
|
},
|
||||||
|
"<i class='fa fa-mouse-pointer'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"t": "#ac97d8"
|
||||||
|
},
|
||||||
|
"<i class='fa fa-arrows'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": -30,
|
||||||
|
"rx": 13,
|
||||||
|
"y": -1,
|
||||||
|
"x": -3,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Hamburger-Menu'></i>",
|
||||||
|
"esc"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"ins",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Return-2'></i>",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"space"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"scroll<br/>lock"
|
||||||
|
]
|
||||||
|
]
|
Binary file not shown.
After Width: | Height: | Size: 104 KiB |
Loading…
Reference in New Issue