1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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)
|