You may not post on this forum because you're not logged in.

#1 24-May-2008 07:41:32

ghen
Member
From: Belgium
Registered: 26-Feb-2008
Posts: 332
Website

Colemak now included with NetBSD

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.colemak

To switch back to US Qwerty:

wsconsctl -w encoding=us

This 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

#2 24-May-2008 14:36:18

Korivak
Member
Registered: 20-Oct-2006
Posts: 111

Re: Colemak now included with NetBSD

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

#3 25-May-2008 16:55:16

ghen
Member
From: Belgium
Registered: 26-Feb-2008
Posts: 332
Website

Re: Colemak now included with NetBSD

I forgot to mention: to enable it permanently, set "encoding us.colemak" in /etc/wscons.conf.

Last edited by ghen (25-May-2008 17:17:38)

Offline

#4 25-May-2008 18:32:05

DreymaR
Member
From: Bærum, Norway
Registered: 13-Dec-2006
Posts: 2,672

Re: Colemak now included with NetBSD

This is simply awesome!

Offline

#5 27-May-2008 14:56:25

ghen
Member
From: Belgium
Registered: 26-Feb-2008
Posts: 332
Website

Re: Colemak now included with NetBSD

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

#6 09-Jun-2008 06:30:32

dewarrn1
New member
Registered: 09-Jun-2008
Posts: 2

Re: Colemak now included with NetBSD

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

#7 10-Jun-2008 18:55:06

ghen
Member
From: Belgium
Registered: 26-Feb-2008
Posts: 332
Website

Re: Colemak now included with NetBSD

Both, and apparently even 6-STABLE, too. :-)

See http://www.freebsd.org/cgi/cvsweb.cgi/s … 15.acc.kbd

Offline

#8 14-Jun-2008 06:53:17

dewarrn1
New member
Registered: 09-Jun-2008
Posts: 2

Re: Colemak now included with NetBSD

Nicely done!  I feel a buildworld coming on...

Offline

#9 21-May-2009 13:12:25

ghen
Member
From: Belgium
Registered: 26-Feb-2008
Posts: 332
Website

Re: Colemak now included with NetBSD

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

#10 27-Jun-2009 08:24:06

ghen
Member
From: Belgium
Registered: 26-Feb-2008
Posts: 332
Website

Re: Colemak now included with NetBSD

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

#11 11-Sep-2010 16:42:10

jrick
Member
From: Ann Arbor, MI
Registered: 25-Sep-2008
Posts: 36
Website

Re: Colemak now included with NetBSD

ghen

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

Board footer