From 345f8d5ff5fe7e909e8e9aae6a7d02981263ff91 Mon Sep 17 00:00:00 2001 From: Marco Gerards Date: Sun, 6 Mar 2011 17:45:44 -0300 Subject: Add XKB parser and implementation. * console-client/xkb/Compose: New file. * console-client/xkb/MISSING-FEATURES: Likewise. * console-client/xkb/README: Likewise. * console-client/xkb/TODO: Likewise. * console-client/xkb/compose.c: Likewise. * console-client/xkb/default.xkb: Likewise. * console-client/xkb/keysymdef.h: Likewise. * console-client/xkb/ks_tables.h: Likewise. * console-client/xkb/kstoucs.c: Likewise. * console-client/xkb/lex.l: Likewise. * console-client/xkb/makeconf.sh: Likewise. * console-client/xkb/parser.y: Likewise. * console-client/xkb/symname.c: Likewise. * console-client/xkb/xkb-data/keymap/hurd: Likewise. * console-client/xkb/xkb-data/symbols/hurd: Likewise. * console-client/xkb/xkb-data/types/hurd: Likewise. * console-client/xkb/xkb.c: Likewise. * console-client/xkb/xkb.h: Likewise. * console-client/xkb/xkbdata.c: Likewise. * console-client/xkb/xkbdefaults.c: Likewise. * console-client/xkb/xkbtimer.c: Likewise. --- console-client/xkb/README | 177 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 console-client/xkb/README (limited to 'console-client/xkb/README') diff --git a/console-client/xkb/README b/console-client/xkb/README new file mode 100644 index 00000000..56895b88 --- /dev/null +++ b/console-client/xkb/README @@ -0,0 +1,177 @@ +-- Some random notes about the XKB input driver. -- + +This XKB input driver can be compared with the pc_kbd input driver, it +has the same function. But this input driver has many advantages. It +can load XKB configuration files. XKB configuration files, the keymap +files currently used in XFree, are very versatile. + +One of the biggest advantages of using XKB configurations is that both +the Hurd and XFree work simular. Another advantage is that it has many +features: + +* Human readable configuration files with mechanisms like include + files, replacing keys, etc. + +* Many shift levels, all configurable per key type. + +* Support for four groups. These groups can be used for things like + additional alphabets. + +* Accessibility features like SlowKeys, StickyKeys, etc. + +* Dynamic behaviour; the user can define how all keys and indicators operate. + + +Most support for basic operation have been implemented. Still there +are many things not implemented. If some of these things are really +important to you, please tell me! + +List of not implemented XKB features: + +* Accessibility and software repeat. +* Jukebox support (user configurable audible messages) +* Key database; loading new keynames from the X key database. +* Error handling; partially done. +* Indicators (Keyboard LEDs, etc.) not working, partially implemented. +* ISOLock not implemented. +* Key repeater for >> X. +* No support for non UTF-8 locales. +* No support for rarely used features (Many of they don't even work in + X AFAIK). +* Many other stuff doesn't work (lock, radio group, overlays, etc.). + If I forgot something important, please report it :) + +* The scanner and parser are still ugly and far from optimal! + +--- + +Installation: + +You need gcc, binutils and the glibc- and GNUMach headerfiles to +compile this. If you want to generate the scanner and parser yourself +you need bison and flex, but this is not required because I included +the generated files. + +Run "make" to compile it. This will result in xkb.so.0.3, the actual +plugin. Copy this file to the console-client driver directory (For the +current Hurd version this is /lib/hurd/console). + +-- + +Using it: + +To use it you need XKB configuration files. These are included with +XFree and will be placed in /etc/X11/xkb on most systems. + +You can replace "pc_kbd" in your console client startup line with +"xkb" and it will work with the default configuration. If you want a +non-default configuration these options exists: + +--xkbdir : The root directory of the xkb configuration, by default + this is /etc/X11/xkb. + +--keymapfile : The file that hold the descriptions of the default + keymaps file. This file holds the description of all keymaps. This + path should be relative to the path set by `xkbdir'. By default + "keymap/xfree86" is used. + +--keymap : The keymap to use. By default en_US is used. Examples of + some other keymaps are: fr, us, de, dvorak. + +--ctrlaltbs : CTRL+Alt+Backspace will exit the console client. +--no-ctrlaltbs : CTRL+Alt+Backspace will not exit the console client. + + +By default console switching, etc. is not possible. I wrote some XKB +extensions and configuration files to use these extensions. You can +find these files in the xkb directory in the tarball. Copy these files +to where your XKB configuration files are (usually /etc/X11/xkb). + +for example: xkb/keymap/hurd will be copied to /etc/X11/xkb/keymap. + +To use these extensions you have to use the hurd keymaps file. This +holds all keymaps extended with Hurd features. Use "--keymapfile +keymap/hurd" to select this file. + +After that you can use these keybindings: + +Alt + F1...F12: Switch VC. + +Alt + Left, Right: Switch to the console left or right of the current + console. + +Alt + Up, Down: Scroll the console by one line up or down. +Ctrl + PgUp, PgDown: Scroll the console up or down with 1/2 screen. + +Alt + Home: Scroll the console to the 0% of the scrollback buffer. +Ctrl + Home: Scroll the console to the 25% of the scrollback buffer. +Alt + End: Scroll the console to the 100% of the scrollback buffer. +Alt + End: Scroll the console to the 75% of the scrollback buffer. + +-- + +Hurd features: + +If you want to use the Hurd features yourself make sure you put the +changes in files that are not used by Xfree because it cannot parse +these options. See how I did it for the configuration described in the +previous paragraph. + +Function list: + +-- +ConsScroll: scroll the console x lines or to a fixed position. + +parameters: +Screen = pos : Scroll to screen #pos. +Screen += i : Scroll i screens up. +Screen -= i : Scroll i screens down. +line = pos : Scroll to line #pos. +line += i : Scroll i lines up. +line -= i : Scroll i lines down. +percent = percentage : Scroll to PERCENTAGE % of the scrollback + buffer. + +Example: +ConsScroll (screen += 0.5) --> Scroll down a 1/2 screen. + +-- +SwitchScreen: Switch to a VC. + +paramaters: +screen = i : Switch to VC #i. +screen += i : Switch to #i consoles to the right. +screen -= i : Switch to #i consoles to the left. + +sameserver is a flag that will be added. I want to use it to switch to +external consoles like X servers and SVGALib screens. + +example: +SwitchScreen (screen += 1) --> Switch to the console right of the + current console. + + +-- +More functions will be added. One to send keysyms to other VCs (can be +usefull to control a mixer, ogg vorbis player, etc.). It should also +be capable of inserting often used strings like "apfelkorn" :). + +A function to call the configuration dialog should be added. + +Functions to execute things should be added. Think about binding the +reboot command to Ctrl+Alt+Delete for example. Wolfgang also asked me +for scheme support, but I don't know enough about scheme to know what +cool stuff is possible with this (I don't know scheme... Hey! Not +everyone can be perfect ;)). + +Perhaps functions can be added to control the console client in other +ways. + +More ideas would be interesting to hear :) + +-- + +Enjoy this stuff and please send me many bug reports :) + +Marco Gerards +(metgerards@student.han.nl) -- cgit v1.2.3