Initial commit

This commit is contained in:
Tom Willemse 2014-02-15 22:36:59 +01:00
commit 85f3173a1e
5 changed files with 234 additions and 0 deletions

91
README.org Normal file
View file

@ -0,0 +1,91 @@
#+TITLE: ryuk
#+STARTUP: showall
* Introduction
I've been using [[http://colemak.com][colemak]] for quite a while now and I really like it.
The fact that basically only the letters change position (aside from
~;~ and ~:~) really makes learning it easier than some alternatives
would.
I came across [[http://www.kaufmann.no/roland/dvorak/index.html][Programmer Dvorak]] a little while ago, and found the
idea of having symbols on the keyboard without needing the Shift key
very enticing. It made me think real hard about maybe learning
Dvorak after all, even though I'd previously chosen colemak
*because* it didn't change the places of any symbols and such.
I decided against it, though. I've invested quite a few hours
getting proficient with colemak, and I'd hate for that to have been
in vain. So I decided to try and change colemak's symbol positions,
or some of them anyway.
I didn't change the order of the number keys, though Shift is now
required to use them, because I didn't like the idea. These numbers
have been ingrained into my brain since the beginning of time, or
at least ever since I first sat behind a PC. Reading the Programmer
Dvorak page makes me believe that there is good reason to change
their order, but I thought that any benefits gained would not
outweigh the benefit of blindly knowing where they are. However, it
is of course possible that this may change in the future, since I
also thought something similar when I first switched to colemak, but
then about symbol keys in general.
I also didn't shift the number keys one place to the right, as
Programmer Dvorak does. This is because even though I'm sure that
that would work very well on a standard keyboard layout, it would
ruin the symmetric properties of my [[https://www.trulyergonomic.com/store/index.php][Truly Ergonomic Keyboard]]. Right
now the ~(~ and ~)~ are both placed directly above my index fingers,
and since I spend quite a bit of my free time writing various forms
of Lisp code that is extra cool.
The source files are stored in a git repository. These can be found
either on [[http://code.ryuslash.org/ryuk/][my website]] or [[https://github.com/ryuslash/ryuk/][github]]. Use whichever you prefer, cloning
urls are available on both locations.
* Installation
** X11
To install and use the X11 keyboard, copy the ~xkb/ryuk~ file to where
XKB looks for these files. In my case this is
~/usr/share/X11/xkb/symbols~. Once put in the proper place, next to,
for example, ~us~, set your =XkbVariant= to ~ryuk~. For example, I have in
my ~/etc/X11/xorg.conf.d/10-evdev.conf~ file the following:
#+BEGIN_SRC conf
# ...
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "XkbLayout" "ryuk"
EndSection
# ...
#+END_SRC
Since your distribution may have Xorg configured differently, you
may have to specify it in a different file or a different section,
but please note that only the line starting with ~Option~ was put
there by me.
** TTY
To install the TTY keyboard layout you should gzip the
~kbd/ryuk.map~ file, which can be achieved by running ~make~ from the
~kbd~ map, and put the resulting file where the kbd utilities can find
them. In my case this is ~/usr/share/kbd/keymaps/i386/colemak/~, and I
choose the ~colemak~ directory because the ~ryuk~ files are based
directly off the colemak files.
Once put in the proper place you should specify that the TTY should
use your keymap by putting the following in your ~/etc/vconsole.conf~:
#+BEGIN_SRC sh
KEYMAP=ryuk
#+END_SRC
This should work at least on systems that use systemd. I don't know
how other init systems set it.

1
kbd/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.gz

2
kbd/Makefile Normal file
View file

@ -0,0 +1,2 @@
ryuk.map.gz: ryuk.map
gzip -k $^

75
kbd/ryuk.map Normal file
View file

@ -0,0 +1,75 @@
# pcolemak.kmap for Linux console.
# 2014-02-15 Tom Willemse.
alt_is_meta
charset "iso-8859-15" # use a ISO-8859-15 font, e.g.: consolechars -f lat9v-14
keymaps 0-12
include "qwerty-layout"
include "linux-with-alt-and-altgr"
strings as usual
keycode 41 = ampersand percent dead_tilde asciitilde nul
keycode 2 = bracketleft one exclamdown onesuperior
keycode 3 = braceleft two masculine twosuperior nul
keycode 4 = braceright three ordfeminine threesuperior Escape
keycode 5 = parenleft four cent sterling Control_backslash
keycode 6 = equal five euro yen Control_bracketright # EuroSign yen
keycode 7 = asterisk six asciitilde asciitilde Control_asciicircum # hstroke Hstroke
keycode 8 = parenright seven eth ETH Control_underscore
keycode 9 = plus eight thorn THORN Delete
keycode 10 = bracketright nine asciitilde asciitilde # leftsinglequotemark leftdoublequotemark
keycode 11 = exclam zero asciitilde asciitilde # rightsinglequotemark rightdoublequotemark
keycode 12 = numbersign grave asciitilde asciitilde Control_underscore # endash emdash
keycode 13 = dollar asciitilde multiply division
keycode 16 = q Q adiaeresis Adiaeresis Control_q
keycode 17 = w W aring Aring Control_w
keycode 18 = f F atilde Atilde Control_f
keycode 19 = p P oslash Ooblique Control_p
keycode 20 = g G asciitilde asciitilde Control_g # dead_ogonek asciitilde
keycode 21 = j J asciitilde asciitilde Control_j # dstroke Dstroke
keycode 22 = l L asciitilde asciitilde Control_l # lstroke Lstroke
keycode 23 = u U uacute Uacute Control_u
keycode 24 = y Y udiaeresis Udiaeresis Control_y
keycode 25 = semicolon colon odiaeresis Odiaeresis
keycode 26 = minus underscore guillemotleft asciitilde Escape # guillemotleft 0x1002039
keycode 27 = at asciicircum guillemotright asciitilde Control_bracketright # guillemotright 0x100203a
keycode 43 = backslash bar asciitilde asciitilde Control_backslash
keycode 30 = a A aacute Aacute Control_a
keycode 31 = r R dead_grave asciitilde Control_r
keycode 32 = s S ssharp asciitilde Control_s
keycode 33 = t T dead_acute asciitilde Control_t # dead_acute dead_doubleacute
keycode 34 = d D dead_diaeresis asciitilde Control_d
keycode 35 = h H asciitilde asciitilde Control_h # dead_caron asciitilde
keycode 36 = n N ntilde Ntilde Control_n
keycode 37 = e E eacute Eacute Control_e
keycode 38 = i I iacute Iacute Control_i
keycode 39 = o O oacute Oacute Control_o
keycode 40 = apostrophe quotedbl otilde Otilde
keycode 44 = z Z ae AE Control_z
keycode 45 = x X dead_circumflex asciitilde Control_x
keycode 46 = c C ccedilla Ccedilla Control_c
keycode 47 = v V oe OE Control_v
keycode 48 = b B asciitilde asciitilde Control_b # dead_breve asciitilde
keycode 49 = k K asciitilde asciitilde Control_k # dead_abovering asciitilde
keycode 50 = m M asciitilde asciitilde Control_m # dead_macron asciitilde
keycode 51 = comma less dead_cedilla asciitilde
keycode 52 = period greater asciitilde asciitilde # dead_abovedot asciitilde
keycode 53 = slash question questiondown asciitilde Delete
keycode 58 = BackSpace BackSpace BackSpace BackSpace
keycode 86 = minus underscore asciitilde asciitilde Control_underscore # endash emdash
keycode 57 = space space space nobreakspace nul
keycode 1 = Escape
keycode 14 = Delete
keycode 15 = Tab
keycode 28 = Return
alt keycode 28 = Meta_Control_m
keycode 29 = Control
keycode 42 = Shift
keycode 54 = Shift
keycode 56 = Alt
keycode 97 = Control

65
xkb/ryuk Normal file
View file

@ -0,0 +1,65 @@
// ryuk symbols for xkb on X.Org Server 7.x
// 2014-02-11 Tom Willemse
partial alphanumeric_keys
xkb_symbols "pcolemak" {
include "us"
name[Group1]= "English (ryuk)";
key <TLDE> { [ ampersand, percent, dead_tilde, asciitilde ] };
key <AE01> { [ bracketleft, 1, exclamdown, onesuperior ] };
key <AE02> { [ braceleft, 2, masculine, twosuperior ] };
key <AE03> { [ braceright, 3, ordfeminine, threesuperior ] };
key <AE04> { [ parenleft, 4, cent, sterling ] };
key <AE05> { [ equal, 5, EuroSign, yen ] };
key <AE06> { [ asterisk, 6, hstroke, Hstroke ] };
key <AE07> { [ parenright, 7, eth, ETH ] };
key <AE08> { [ plus, 8, thorn, THORN ] };
key <AE09> { [ bracketright, 9, leftsinglequotemark, leftdoublequotemark ] };
key <AE10> { [ exclam, 0, rightsinglequotemark, rightdoublequotemark ] };
key <AE11> { [ numbersign, grave, endash, emdash ] };
key <AE12> { [ dollar, asciitilde, multiply, division ] };
key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
key <AD02> { [ w, W, aring, Aring ] };
key <AD03> { [ f, F, atilde, Atilde ] };
key <AD04> { [ p, P, oslash, Ooblique ] };
key <AD05> { [ g, G, dead_ogonek, asciitilde ] };
key <AD06> { [ j, J, dstroke, Dstroke ] };
key <AD07> { [ l, L, lstroke, Lstroke ] };
key <AD08> { [ u, U, uacute, Uacute ] };
key <AD09> { [ y, Y, udiaeresis, Udiaeresis ] };
key <AD10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
key <AD11> { [ minus, underscore, guillemotleft, 0x1002039 ] };
key <AD12> { [ at, asciicircum, guillemotright, 0x100203a ] };
key <BKSL> { [ backslash, bar, asciitilde, asciitilde ] };
key <AC01> { [ a, A, aacute, Aacute ] };
key <AC02> { [ r, R, dead_grave, asciitilde ] };
key <AC03> { [ s, S, ssharp, asciitilde ] };
key <AC04> { [ t, T, dead_acute, dead_doubleacute ] };
key <AC05> { [ d, D, dead_diaeresis, asciitilde ] };
key <AC06> { [ h, H, dead_caron, asciitilde ] };
key <AC07> { [ n, N, ntilde, Ntilde ] };
key <AC08> { [ e, E, eacute, Eacute ] };
key <AC09> { [ i, I, iacute, Iacute ] };
key <AC10> { [ o, O, oacute, Oacute ] };
key <AC11> { [ apostrophe, quotedbl, otilde, Otilde ] };
key <AB01> { [ z, Z, ae, AE ] };
key <AB02> { [ x, X, dead_circumflex, asciitilde ] };
key <AB03> { [ c, C, ccedilla, Ccedilla ] };
key <AB04> { [ v, V, oe, OE ] };
key <AB05> { [ b, B, dead_breve, asciitilde ] };
key <AB06> { [ k, K, dead_abovering, asciitilde ] };
key <AB07> { [ m, M, dead_macron, asciitilde ] };
key <AB08> { [ comma, less, dead_cedilla, asciitilde ] };
key <AB09> { [ period, greater, dead_abovedot, asciitilde ] };
key <AB10> { [ slash, question, questiondown, asciitilde ] };
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
key <LSGT> { [ minus, underscore, endash, emdash ] };
key <SPCE> { [ space, space, space, nobreakspace ] };
include "level3(ralt_switch)"
};