Add new ErgoDox EZ keymap, YORUIAN

master
Thomas Fitzsimmons 2016-09-05 17:40:03 -04:00
parent 0468093b12
commit e9ce4960c1
6 changed files with 277 additions and 0 deletions

View File

@ -0,0 +1,6 @@
Section "InputClass"
Identifier "ErgoDox EZ"
MatchIsKeyboard "on"
MatchProduct "ErgoDox EZ ErgoDox EZ"
Option "XkbLayout" "ergodox_ez_yoruian"
EndSection

View File

@ -0,0 +1,13 @@
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
install-xorg-configuration:
install -m 0664 90-$(KEYBOARD)-$(KEYMAP).conf \
/etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf
install -m 0644 $(KEYBOARD)_$(KEYMAP) \
/usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP)
uninstall-xorg-configuration:
-rm -f /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf
-rm -f /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP)

View File

@ -0,0 +1,102 @@
Snarfangel's YORUIAN for the ErgoDox EZ
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
DEFAULT
┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
┃ ` │ ; │ : │ - │ / │ ( │ < ┃ ┃ > │ ) │ ^ │ * │ ~ │ Γ │ σ
┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
┃ ⎋ │ . │ y │ o │ r │ ? │ ✦ ┃ ┃ ✦ │ j │ v │ d │ f │ w │ q ┃
┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨
┃ ⎈ │ u │ i │ a │ n │ ! ├───┨ ┠───┤ m │ h │ t │ s │ c │ ⎈ ┃
┠───┼───┼───┼───┼───┼───┤ ❖ ┃ ┃ ❖ ├───┼───┼───┼───┼───┼───┨
┃ λ │ ' │ " │ , │ _ │ = │ ┃ ┃ │ k │ l │ p │ g │ b │ x ┃
┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
┃ ⎀ │ E │ │ │ ◆ ┃ ┃ ◆ │ │ │ z │ ⎙ ┃
┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛
┏━━━┯━━━┓ ┏━━━┯━━━┓
┃ ⌫ │ ⌥ ┃ ┃ ⎄ │ ↹ ┃
┏━━━╃───┼───┨ ┠───┼───╄━━━┓
┃ │ │ ┃ ┃ │ │ ┃
┃ e │ ⇧ ├───┨ ┠───┤ ⏎ │ ␣ ┃
┃ │ │ ┃ ┃ │ │ ┃
┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
SHIFTED
┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
┃ 9 │ 7 │ 5 │ 3 │ 1 │ [ │ { ┃ ┃ } │ ] │ 0 │ 2 │ 4 │ 6 │ 8 ┃
┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
┃ │ * │ Y │ O │ R │ \ │ ┃ ┃ │ J │ V │ D │ F │ W │ Q ┃
┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨
┃ │ U │ I │ A │ N │ | ├───┨ ┠───┤ M │ H │ T │ S │ C │ ┃
┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨
┃ │ # │ $ │ @ │ & │ + │ ┃ ┃ │ K │ L │ P │ G │ B │ X ┃
┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
┃ │ │ │ │ ┃ ┃ │ │ │ Z │ ┃
┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛
┏━━━┯━━━┓ ┏━━━┯━━━┓
┃ │ ┃ ┃ │ ┃
┏━━━╃───┼───┨ ┠───┼───╄━━━┓
┃ │ │ ┃ ┃ │ │ ┃
┃ │ ├───┨ ┠───┤ │ ┃
┃ │ │ ┃ ┃ │ │ ┃
┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
λ LAYER
┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓ ┏━━━┯━━━┯━━━┯━━━┯━━━┯━━━┯━━━┓
┃ │ │ │ │ │ │ ┃ ┃ │ │ ⑤ │ ⑥ │ ⑦ │ ⑧ │ ⑨ ┃
┠───┼───┼───┼───┼───┼───┼───┨ ┠───┼───┼───┼───┼───┼───┼───┨
┃ │ │ │ │ │ │ ┃ ┃ │ │ ① │ ② │ ③ │ ④ │ ⑩ ┃
┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨
┃ │ │ │ │ │ ├───┨ ┠───┤ ⎉ │ ← │ ↓ │ ↑ │ → │ ⑪ ┃
┠───┼───┼───┼───┼───┼───┤ ┃ ┃ ├───┼───┼───┼───┼───┼───┨
┃ λ │ │ │ │ │ │ ┃ ┃ │ │ ⇱ │ ⎘ │ ⎗ │ ⇲ │ ⑫ ┃
┠───┼───┼───┼───┼───╆━━━┷━━━┛ ┗━━━┷━━━╅───┼───┼───┼───┼───┨
┃ │ │ │ │ ┃ ┃ │ │ │ │ ┃
┗━━━┷━━━┷━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┷━━━┷━━━┛
┏━━━┯━━━┓ ┏━━━┯━━━┓
┃ │ ┃ ┃ │ ┃
┏━━━╃───┼───┨ ┠───┼───╄━━━┓
┃ │ │ ┃ ┃ │ │ ┃
┃ │ ├───┨ ┠───┤ │ ┃
┃ │ │ ┃ ┃ │ │ ┃
┗━━━┷━━━┷━━━┛ ┗━━━┷━━━┷━━━┛
Installation (X only)
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
1. Build and flash firmware as usual
2. sudo make install-xorg-configuration
3. Restart X
Features
‾‾‾‾‾‾‾‾
• E on the thumb
• Emacs-friendly
• Symmetric control keys for finger wear levelling
• Greek and subscript dead keys
• Compose key for arbitrary Unicode input via ~/.XCompose
Don't Cares
‾‾‾‾‾‾‾‾‾‾‾
• Easy migration from QWERTY
• Compatbility with non-XKB systems
• Mouse emulation
• Media keys
Acknowledgements
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Snarfangel, for designing the layout.
The GNU FreeFont project and Steve White, for adding new keyboard
symbols.
Xah Lee, for http://xahlee.info/comp/unicode_computing_symbols.html
Colophon
‾‾‾‾‾‾‾‾
This file is best-viewed with an SVN version of GNU FreeFont Mono.

View File

@ -0,0 +1,34 @@
partial alphanumeric_keys modifier_keys
xkb_symbols "ergodox_ez_yoruian" {
include "us"
name[Group1]= "English (yoruian-1.0.0)";
replace key <KP2> { [ Multi_key, Multi_key ] };
replace key <KP3> { [ Hyper_L, Hyper_L ] };
replace key <AE09> { [ grave, 9 ] };
replace key <AE07> { [ semicolon, 7 ] };
replace key <AE05> { [ colon, 5 ] };
replace key <AE03> { [ minus, 3 ] };
replace key <AE01> { [ slash, 1 ] };
replace key <AE10> { [ asciicircum, 0 ] };
replace key <AE02> { [ percent, 2 ] };
replace key <AE04> { [ asciitilde, 4 ] };
replace key <AE06> { [ dead_greek, 6 ] };
replace key <AE08> { [ dead_caron, 8 ] };
replace key <KP1> { [ E, E ] };
replace key <AD12> { [ period, asterisk ] };
replace key <BKSL> { [ question, backslash ] };
replace key <AC10> { [ exclam, bar ] };
replace key <AC11> { [ apostrophe, numbersign ] };
replace key <AB08> { [ quotedbl, dollar ] };
replace key <AB09> { [ comma, at ] };
replace key <AB10> { [ underscore, ampersand ] };
replace key <KP0> { [ equal, plus ] };
replace key <TLDE> { [ parenleft, bracketleft ] };
replace key <AE11> { [ less, braceleft ] };
replace key <AE12> { [ greater, braceright ] };
replace key <AD11> { [ parenright, bracketright ] };
modifier_map none { <HYPR> };
modifier_map Mod3 { <KP3> };
};

View File

@ -0,0 +1,61 @@
/*
* Copyright 2016 Thomas Fitzsimmons <fitzsim@fitzsim.org>
*
* 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 3 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/>.
*/
#include "yoruian.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP\
(9, 7, 5, 3, 1, GRV, MINS, EQL, LBRC, 0, 2, 4, 6, 8,
ES, RBRC, Y, O, R, BSLS, P3, P3, J, V, D, F, W, Q,
LC, U, I, A, N, SCLN, M, H, T, S, C, RC,
FF, QUOT, COMM, DOT, SLSH, P0, LGUI, LGUI, K, L, P, G, B, X,
IN, P1, NO, NO, LALT, LALT, NO, NO, Z, PS,
BSPC, RALT, P2, TAB,
NO, NO,
E, LSFT, NO, NO, ENT, SPC),
[1] = KEYMAP\
(TR, TR, TR, TR, TR, TR, TR, TR, TR, F5, F6, F7, F8, F9,
TR, TR, TR, TR, TR, TR, TR, TR, TR, F1, F2, F3, F4, FT,
TR, TR, TR, TR, TR, TR, PAUS, LEFT, DOWN, UP, RGHT, FE,
TR, TR, TR, TR, TR, TR, TR, TR, TR, HOME, PGDN, PGUP, END, FW,
TR, TR, TR, TR, TR, TR, TR, TR, TR, TR,
TR, TR, TR, TR,
TR, TR,
TR, TR, TR, TR, TR, TR),
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
return MACRO_NONE;
};
void matrix_init_user(void) {
};
void matrix_scan_user(void) {
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
};
/*
* Local Variables:
* electric-indent-mode: nil
* End:
*/

View File

@ -0,0 +1,61 @@
/*
* Copyright 2016 Thomas Fitzsimmons <fitzsim@fitzsim.org>
*
* 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 3 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/>.
*/
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#undef KEYMAP
#define KEYMAP\
( \
/* Spacial positions. */ \
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, k28, k29, k2A, k2B, k2C, k2D, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
k40, k41, k42, k43, k44, k49, k4A, k4B, k4C, k4D, \
k55, k56, k57, k58, \
k54, k59, \
k53, k52, k51, k5C, k5B, k5A) \
\
/* Matrix positions. */ \
{ \
{ KC_##k00, KC_##k10, KC_##k20, KC_##k30, KC_##k40, KC_NO }, \
{ KC_##k01, KC_##k11, KC_##k21, KC_##k31, KC_##k41, KC_##k51 }, \
{ KC_##k02, KC_##k12, KC_##k22, KC_##k32, KC_##k42, KC_##k52 }, \
{ KC_##k03, KC_##k13, KC_##k23, KC_##k33, KC_##k43, KC_##k53 }, \
{ KC_##k04, KC_##k14, KC_##k24, KC_##k34, KC_##k44, KC_##k54 }, \
{ KC_##k05, KC_##k15, KC_##k25, KC_##k35, KC_NO, KC_##k55 }, \
{ KC_##k06, KC_##k16, KC_NO, KC_##k36, KC_NO, KC_##k56 }, \
{ KC_##k07, KC_##k17, KC_NO, KC_##k37, KC_NO, KC_##k57 }, \
{ KC_##k08, KC_##k18, KC_##k28, KC_##k38, KC_NO, KC_##k58 }, \
{ KC_##k09, KC_##k19, KC_##k29, KC_##k39, KC_##k49, KC_##k59 }, \
{ KC_##k0A, KC_##k1A, KC_##k2A, KC_##k3A, KC_##k4A, KC_##k5A }, \
{ KC_##k0B, KC_##k1B, KC_##k2B, KC_##k3B, KC_##k4B, KC_##k5B }, \
{ KC_##k0C, KC_##k1C, KC_##k2C, KC_##k3C, KC_##k4C, KC_##k5C }, \
{ KC_##k0D, KC_##k1D, KC_##k2D, KC_##k3D, KC_##k4D, KC_NO } \
}
#define KC_ES KC_ESC
#define KC_LC KC_LCTL
#define KC_RC KC_RCTL
#define KC_FF MO(1)
#define KC_IN KC_INS
#define KC_PS KC_PSCR
#define KC_TR KC_TRNS
#define KC_FT KC_F10
#define KC_FE KC_F11
#define KC_FW KC_F12