Main sourceforge page | Download page |
Licence and copyright : See the end of this file.
K_TTY provides keyman(TM) style keyboard interpretation for Linux console and attached (or pseudo) terminals (including X terminals, telnet sessions, or anything else which has a tty associated with it).
Unlike 'compose' letters, the user sees what they type, and if a
substitution is required the driver sends one or more delete
(s)
followed by the correct code(s). Further, the input may be more than just 2
letters, and the output may be more than a single character. Significant
re-ordering and re-interpreting of the input characters are possible.
KEYMAN(TM) is the Tavultesoft (http://www.tavultesoft.com/) keyboard manager It is a key-sequence interpreter for MS windows, and makes it nice and simple for people to type in weird and wonderful languages, which need more keys than are on the keyboard, or such things as phonetic characters where the situation is even worse.
K_TTY and its associated support programs have been written from scratch, based upon the author's understanding of (a non-current version of) KEYMAN input files. It thus understands a language closely related to but not identical to KEYMAN's. Some features of keyman are not currently supported, some will probably never be (such as fiddling about with the keyboard shift-state), as they are only valid on the system console, and are better handled by the basic keyboard driver. Also, since K_TTY is intended to work remotely, it seems silly to go to too much effort on things that won't.
K_TTY WILL NOT work for programs that have no tty associated with them, such as many "native" X window apps, at least until someone integrates a version of it into X-windows.
K_TTY SHOULD NOW work with unicode (UTF-8)-enabled keyboards, and the compiler now has the ability to set the relevant flags. A simple test keyboard has been written and seems to work correctly.
KEYMAN(TM) keyboard definition files are human-readable, in general the "business" part follows the pattern:
match + key > result
Where the terms "match" "result" and "key" may be formatted in a number of different ways. Ordering in the definition is relatively free, but interpreting should be on a "longest possible match wins" basis. Thus the definition files are not ideal for code that must be read once-per-keystroke. The kernel interface of K_TTY thus works on a compiled byte-code, which is loaded by the compiler (or other program) via an ioctl interface.
For testing purposes the keyboard is compiled or loaded into a test (non-kernel) version of the interpreter. This lets bugs in the keyboard design (or interpreter, this is still early beta, remember) be found with considerably less hassle.
K_TTY is mainly intended as a kernel module, but it might work as compiled-in version with a little more tweaking. A much earlier version did, but that was back in ancient history.
K_TTY has been written and tested on an Intel pentium and Cyrix M II with miscellaneous Linux kernels, from 2.0 onwards but currently 2.4.18.
The author currently uses GCC version egcs-2.91.66, and a heavily upgraded Redhat6.0 distribution. Some testing has been done by on various newer Linux distributions by the author and others. I don't see why it shouldn't work on other processors, but "endianness" and sizeof(int/short/etc) type questions would suggest that you don't try copying the "bytecode" compiled keyboards around.
K_TTY and all source code distributed with it are (C) Copyright D.J.Gardner except those parts (as mentioned in the source code) which are copied from the Linux kernel sources. The original lines of code in those files are (C) Copyright Linus Torvalds and the original authors, the new lines are (C) Copyright D.J.Gardner. You are licensed to use and distribute this code under terms of the GPL Version 2. See the included file COPYING for details.