Coder Social home page Coder Social logo

arch-hurd-xkb-driver's Introduction

-- 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 /share/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 /share/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. Example: --keymap=de

--ctrlaltbs : CTRL+Alt+Backspace will exit the console client.
--no-ctrlaltbs : CTRL+Alt+Backspace will not exit the console client.

--repeat-delay : The number of jiffies the driver should wait before
  starting to repeat keys. By default this is 50 jiffies.

--repeat-interval : The number of jiffies the driver should wait
  between each repeated key. By default this is 10 jiffies.


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 /share/X11/xkb). 

for example: xkb/keymap/hurd will be copied to /share/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
([email protected])

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.