~ruther/qmk_firmware

8b0769fe5a615e0ed534187de79d09d668737313 — Erez Zukerman 9 years ago 5bb2913 + ce53c06
Merge pull request #728 from fitzsim/yoruian

Add new ErgoDox EZ keymap, YORUIAN
A keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf => keyboards/ergodox/keymaps/yoruian/90-ergodox-yoruian.conf +6 -0
@@ 0,0 1,6 @@
Section "InputClass"
	Identifier	"ErgoDox EZ"
	MatchIsKeyboard	"on"
	MatchProduct	"ErgoDox EZ ErgoDox EZ"
	Option		"XkbLayout"	"ergodox_yoruian"
EndSection

A keyboards/ergodox/keymaps/yoruian/Makefile => keyboards/ergodox/keymaps/yoruian/Makefile +13 -0
@@ 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)

A keyboards/ergodox/keymaps/yoruian/README => keyboards/ergodox/keymaps/yoruian/README +102 -0
@@ 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.

A keyboards/ergodox/keymaps/yoruian/ergodox_yoruian => keyboards/ergodox/keymaps/yoruian/ergodox_yoruian +34 -0
@@ 0,0 1,34 @@
partial alphanumeric_keys modifier_keys
xkb_symbols "ergodox_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>  };
};

A keyboards/ergodox/keymaps/yoruian/keymap.c => keyboards/ergodox/keymaps/yoruian/keymap.c +61 -0
@@ 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:
 */

A keyboards/ergodox/keymaps/yoruian/yoruian.h => keyboards/ergodox/keymaps/yoruian/yoruian.h +61 -0
@@ 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