What is it?

Narcissus is a very simple program that allows the use of gamepads (or other XInput2 keyboard devices) as chording keyboards under X11.

What's a chording keyboard? It's a keyboard where you press combinations of keys in order to produce letters. Because you don't need one key per letter, you get very much fewer keys, and so can easily type one handed. Theoretically they can also be faster than a conventional keyboard but I have my doubts. But because they're one handed, you can type while using your other hand for something else --- beer, say, or using the mouse.

Narcissus was written to work with the Razer Nostromo (hence the name). That's one of these:

[Picture of the Razer Nostromo]

It'll work with other keypads, including the left-handed version of the Nostromo, and also including conventional keyboards provided they support n-key rollover, but I don't have keymaps for them. Implementing your own keymap for Narcissus should be trivial. If you've got a device you want to make work, please get in touch --- I'd love to support more devices.

What's new?

Version 0.1, 2015-03-04: The first release!

How do I use it?

Narcissus's github repository

Send me pull requests!

Or you can download the most recent stable release.

Then build it; it should just be matter of running make on most modern systems, but full instructions are in the README. Once built, run it with:

./narcissus

...and it should autodetect your device and Just Work.

Once it's running, typing on the keypad should make letters appear on your desktop. Narcissus runs in parallel with your existing keyboard, so you can always go back to that if you want to.

The keymap is very much in flux, so rather than provide documentation here where it'll instantly become wrong, I'll just link to the relevant source file. Hopefully it'll be readable. However, in general:

  • Combinations on the top row produce lower case letters
  • The same combinations on the middle row produce upper case letters
  • Button 11 is a modifier which causes the top two rows to produce the obvious numbers
  • The thumb button is a modifier which acts as control on the top row and alt on the middle row (sorry, no meta or more complex combinations yet)
  • Symbols, space, delete and return are produced by combinations spanning the top two rows.

To quit, Ctrl+C it. Don't do this using Narcissus itself or else it'll die before it has a chance to release the keys and your desktop will think you're holding Ctrl+C down.

To learn the keymap, a simple tutorial program, nartutor, is included. See the README for details.

Why should I use it?

Chording keyboards are awesome. Hard to use, but awesome. Being able to enter text using just one hand means that you can do something with the other hand. Douglas Engelbart, who pretty much invented the mouse, intended to use a chording keyboard in the other hand. See his seminal 1968 demo.

Court stenographers use two-hand chording keyboards to allow them to write at 225 words per minute and keep up with debate in courtrooms. The record is 375, I believe.

They're also invaluable for people who have, say, one hand. I'm particularly interested because, while I do have two hands, pretty much everything I do revolves around keyboards, and I live in dread of RSI. Being able to type one handed would allow me to use one hand at a time in a totally different style.

There have been lots of chording keyboards made over the years, but they're all esoteric, exotic, expensive and usually very hard to find. But gamepads are booming, and they're typically ergonomic and easy to find.

I have found a few other pieces of software that do what Narcissus does, but I've never made them work; Narcissus is small, simple and tailored for what I want. Hopefully it'll be useful for other people too.

Why shouldn't I use it?

Learning the keymap is a major undertaking, and will take lots of practice. Me, I suck. I can type E, T, A, O, I, N, S, H and sometimes R.

Who wrote it?

Me, David Given. Comments, criticism, cake? Email me. Or file bugs. Either will do. You may also like to look at my website. There may or may not be anything interesting there.

What's the license?

Narcissus is distributable under the terms of the Simplified BSD License.