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