You may not post on this forum because you're not logged in.
Pages: 1
Hi,
last week I committed support for my (new) favourite keyboard layout to my (long-time) favourite OS: NetBSD. :-)
Since the wscons mapfile from the Colemak website doesn't work for USB keyboards (this is a general problem with mapfiles), I implemented the Colemak layout in the kernel (where Dvorak and others also live). It's implemented (like Dvorak) as a "variant" to the US layout. To enable it:
wsconsctl -w encoding=us.colemakTo switch back to US Qwerty:
wsconsctl -w encoding=usThis now works for PC (PS/2) keyboards, USB keyboards and I think also Bluetooth keyboards. To do: add support for other keyboard drivers on other architectures, eg. Sun keyboards on SPARC.
I've also included the xkbmap file in NetBSD's X11 server. So "setxkbmap colemak", or setting Option "XkbLayout" "colemak" in XF86Config will now work out of the box.
All this will be in the upcoming NetBSD 5.0 release (expected Q4 2008). Update: it will be in NetBSD 4.1 as well (whichever comes first).
Last edited by ghen (08-Jun-2008 21:31:17)
Offline
Very nice. First Linux and now NetBSD. Now we just need Mac OS X.
... and maybe that other one, too... but I'm not holding my breath on that.
Offline
This is simply awesome!
Better burden you cannot carry than man-wisdom much -- Hávamál
Check out my Big Bag of Keyboard Tricks! For XKB (Linux) and for PKL (Win).
Offline
More good news: Colemak support has now been included in FreeBSD, too (I asked a friend with FreeBSD commit access to add the keymap file from http://colemak.com/Unix).
I'll try to get it imported in OpenBSD (similar to NetBSD) and DragonFly (similar to FreeBSD) as well.
Offline
Hey, that's really cool! I'm a FreeBSDer, so I'm delighted that your buddy was able to commit the change. Any idea if he got it into the 7-STABLE branch, 8-CURRENT, or both? Many thanks!
Offline
Both, and apparently even 6-STABLE, too. :-)
Offline
Nicely done! I feel a buildworld coming on...
Offline
In NetBSD, you can get Colemak support as far as to the bootloader!
Just add the following to your installboot(8) command line:
-o keymap="FTGDSRP:OYJNKEFLIULftgdsrp;oyjnkefliul"The bootloader maps each character to the next one, and this way you can type in Colemak even before your kernel is loaded. :-)
Offline
Another OS down: DragonFlyBSD now also includes the Colemak keyboard layout (based on the FreeBSD implementation from the Colemak website), it will be in the 2.4 release.
For OpenBSD, a patch has been submitted (based on my earlier NetBSD kernel implementation of Colemak), but no response so far.
On the Linux front, kbd, providing the keytable files and related utilities for the Linux console, will include Colemak in their 1.15.1 release (the implementation taken from the Colemak website). Linux distributions should then pick it up from there.
I think I should setup a new thread with a matrix of OS'es supporting Colemak. :-)
Offline
For OpenBSD, a patch has been submitted (based on my earlier NetBSD kernel implementation of Colemak), but no response so far.
I should probably mention that Theo has closed this bug report (see bottom). For OpenBSD on console, you can get colemak easily by adding
# Colemak
keyboard.encoding=us \
keyboard.map+="keycode 41 = grave asciitilde dead_tilde asciitilde " \
keyboard.map+="keycode 2 = 1 exclam exclamdown onesuperior " \
keyboard.map+="keycode 3 = 2 at masculine twosuperior " \
keyboard.map+="keycode 4 = 3 numbersign ordfeminine threesuperior " \
keyboard.map+="keycode 5 = 4 dollar cent sterling " \
keyboard.map+="keycode 6 = 5 percent asciitilde yen " \
keyboard.map+="keycode 7 = 6 asciicircum asciitilde asciitilde " \
keyboard.map+="keycode 8 = 7 ampersand eth ETH " \
keyboard.map+="keycode 9 = 8 asterisk thorn THORN " \
keyboard.map+="keycode 10 = 9 parenleft asciitilde asciitilde " \
keyboard.map+="keycode 11 = 0 parenright asciitilde asciitilde " \
keyboard.map+="keycode 12 = minus underscore asciitilde asciitilde " \
keyboard.map+="keycode 13 = equal plus multiply division " \
\
keyboard.map+="keycode 16 = q Q adiaeresis Adiaeresis " \
keyboard.map+="keycode 17 = w W aring Aring " \
keyboard.map+="keycode 18 = f F atilde Atilde " \
keyboard.map+="keycode 19 = p P oslash Ooblique " \
keyboard.map+="keycode 20 = g G asciitilde asciitilde " \
keyboard.map+="keycode 21 = j J asciitilde asciitilde " \
keyboard.map+="keycode 22 = l L asciitilde asciitilde " \
keyboard.map+="keycode 23 = u U uacute Uacute " \
keyboard.map+="keycode 24 = y Y udiaeresis Udiaeresis " \
keyboard.map+="keycode 25 = semicolon colon odiaeresis Odiaeresis " \
keyboard.map+="keycode 26 = bracketleft braceleft guillemotleft asciitilde " \
keyboard.map+="keycode 27 = bracketright braceright guillemotright asciitilde " \
keyboard.map+="keycode 43 = backslash bar asciitilde asciitilde " \
\
keyboard.map+="keycode 30 = a A aacute Aacute " \
keyboard.map+="keycode 31 = r R dead_grave asciitilde " \
keyboard.map+="keycode 32 = s S ssharp asciitilde " \
keyboard.map+="keycode 33 = t T dead_acute asciitilde " \
keyboard.map+="keycode 34 = d D dead_diaeresis asciitilde " \
keyboard.map+="keycode 35 = h H asciitilde asciitilde " \
keyboard.map+="keycode 36 = n N ntilde Ntilde " \
keyboard.map+="keycode 37 = e E eacute Eacute " \
keyboard.map+="keycode 38 = i I iacute Iacute " \
keyboard.map+="keycode 39 = o O oacute Oacute " \
keyboard.map+="keycode 40 = apostrophe quotedbl otilde Otilde " \
\
keyboard.map+="keycode 44 = z Z ae AE " \
keyboard.map+="keycode 45 = x X dead_circumflex asciitilde " \
keyboard.map+="keycode 46 = c C ccedilla Ccedilla " \
keyboard.map+="keycode 47 = v V asciitilde asciitilde " \
keyboard.map+="keycode 48 = b B asciitilde asciitilde " \
keyboard.map+="keycode 49 = k K asciitilde asciitilde " \
keyboard.map+="keycode 50 = m M asciitilde asciitilde " \
keyboard.map+="keycode 51 = comma less dead_cedilla asciitilde " \
keyboard.map+="keycode 52 = period greater asciitilde asciitilde " \
keyboard.map+="keycode 53 = slash question questiondown asciitilde " \
\
keyboard.map+="keycode 58 = BackSpace BackSpace BackSpace BackSpace " \
keyboard.map+="keycode 86 = minus underscore asciitilde asciitilde " \
keyboard.map+="keycode 57 = space space space nobreakspace " \
keyboard.map+="keycode 184 = Mode_switch Mode_switch "to your /etc/wsconsctl.conf.
For X11, I just use xmodmap (run from my .xinitrc).
Offline
Pages: 1