Table of Contents
xxkb - switches and indicates a current keyboard layout.
xxkb
The xxkb program shows the current keyboard layout (an XKB group)
and allows to switch it with a mouse click. It has some additional features.
The xxkb remebers the layout for each application window and changes the
keyboard state accordingly when the window gets a focus. The xxkb can place
an additional button on a window titlebar and that button is a switcher
and an indicator for that separate window. If the keyboard map has more
than two layouts the xxkb can simplify a switching using a two_state mode.
In this mode the xxkb allows to choose two layouts, one as a base layout
and another one as an alternative layout and then switch the keyboard state
between them only. Also the xxkb supports applications lists which allow
to tune its behavior for some separate applications. The xxkb works with
any window manager.
Working as an indicator the xxkb shows a current XKB layout using
one of
four pixmaps and changes the pixmap when you change a layout with the
keyboard (using the key or the key combination specified in the config
file as an XKB group switcher) or using any other application which able
to change the XKB group. Also the xxkb shows the similar pixmaps on each
application window titlebar which are indicators for separate windows. Since
the global indicator and the per window indicators duplicates each other
you can hide the global indicator or all per window indicators using configure
options. Also you can use the xxkb as a layout switcher using a mouse
button
click on the main xxkb window or one of the per window indicators. In last
case you switch the layout for the chosen application.
- MouseButton1
- The
first button acts as a layout switcher. If the two_state mode is active
the button click switches the current layout between two selected layouts
(XKB groups). Otherwise it selects all posible layouts in cycle.
- MouseButton3
- When the two_state mode is switched on the third button allows to choose
an alternative layout. It selects all posible layouts in cycle and the layout
you stop on becomes the alternative layout. Without the two_state mode this
button action is the same as the first button action.
- MouseButton2
- The second
(middle) button action depends on the place where you click. The click on
the main indicator terminates the xxkb. But the click on one of the per
window indicators simply removes the indicator from the titlebar and excludes
that application from a set of managed applications. Also the second button
allows you to add an application into one of three lists of the applications
which should be ignored (see the Applications lists options below). Clicking
on the per window indicator when the Control key is pressed you add this
application to the wm_class_class list. If the Shift key is pressed the
button click adds the application to the wm_name list. If both keys are
pressed the click adds the application to the wm_class_name list. In all
cases the updated lists will be saved in a per user config file ~/.xxkbrc.
The xxkb reads all configure options from two files app-defaults/XXkb
and ~/.xxkbrc.
- XXkb.xpm.path
- The directory where the xxkb searches
pixmap files.
- XXkb.mainwindow.enable
- switch on the xxkb
main window (yes by default). If a per window button mode switched on some
users prefer to hide the main window of the xxkb.
- XXkb.mainwindow.appicon
- run xxkb as an animated icon. It is usefull for window managers which allow
'to dock' applications.
- XXkb.mainwindow.in_tray
- allow to dock xxkb into a system
tray. A value of the option should be GNOME, KDE or KDE2 in depend on what
environment tray you use. (Unfortunately, such docklets have a size less
than a default icons size for an xxkb main window. If you want to use this
option you need another set of icons.)
- XXkb.mainwindow.geometry
- the geometry
( WIDTHxHEIGHT{+-}X{+-}Y ) of the main window.
- XXkb.mainwindow.xpm.1
- XXkb.mainwindow.xpm.2
- XXkb.mainwindow.xpm.3
- XXkb.mainwindow.xpm.4
- pixmap file names for each indicated
group. If your symbols map has less than four groups the unused group icons
can be ommited. If the file name begins from '/' it means full path for the
file. Otherwise it means the relative path begining from the XXkb.xpm.path
value.
Since the xxkb can keep the keyboard state
for each application and restore the state when the focus is changed there
are group of options which controls how the xxkb finds the application
windows.
- XXkb.controls.add_when_start
- If this mode is switched on (default)
the xxkb at start time tries to find all application already run.
- XXkb.controls.add_when_create
- In this mode the xxkb gets a new application window at time when the application
creates it. It is the base mode but I can't guaranty it works with all window
managers.
- XXkb.controls.add_when_change
- In this mode the xxkb doesn't catch
the windows at their creation but adds windows to the managed windows list
if the keyboard state changes when the window is focused. It's an additional
mode (not recommended) and may be usefull only if the add_when_create mode
for some reason doesn't work.
- XXkb.controls.focusout
- It makes the xxkb reset
the keyboard group when the focus leaves the window. The mode makes sense
with the add_when_change mode only.
- XXkb.button.enable
- If this mode is switched
on the xxkb adds to a titlebar of each managed window an additional button
which is the indicator and the layout switcher for that separate window.
- XXkb.controls.button_delete
- This mode (switched on by default) allows user
to remove the per window button using a mouse middle button click. Although
the xxkb tries to ignore the windows where the keyboard layout switching
doesn't make sense, such windows can still appear. Or there are windows where
an user for some reason doesn't want to have the button.
- XXkb.controls.button_delete_and_forget
- This mode in addition to previous one makes xxkbto forget the window which
button is deleted. It means the xxkbwill not remeber the keyboard state
changes in this window and restore this state when the window will be focused.
- XXkb.controls.two_state
- Swithcing between two chosen keyboard layouts only.
If the XKB symbols map has more than two groups and not all of them are
needed for each application the xxkb allows to skip unneeded layouts at
the layout switching. You can select one group as a base group and anoter
one as an alternative group and then switch between these two groups only.
The base group is common for all applications (usually it contains ASCII)
but the alternative group can be chosen for each application window separately.
In this mode a mouse right button allows to select the alternative group
and a mouse left button as well as the key which configured as the layout
switcher change the current state between two selected layouts only. This
mode uses two additional config options:
- XXkb.group.base
- the base group (integer 1..4).
- XXkb.group.alt
- the default alternative
group (integer 1..4).
All these options
make sense if the XXkb.button.enable switched on. The button which the xxkb
attaches to the titlebar is not an usual window manager button but the
window (with a pixmap) owned by the xxkb itself. It means that in some cases
an user need to tune the button size and the position for the button looks
like a window manager button.
- XXkb.button.geometry
- the button geometry ( WIDTHxHEIGHT{+-}X{+-}Y
).
- XXkb.button.gravity
- the button gravity. It defines how the button position
changes when you resize the window. It value should be one of North, NorthEast,
NorthWest, South, SouthEast, SouthWest, East, West or Center. The default
value is NorthEast.
- XXkb.button.xpm.1
- XXkb.button.xpm.2
- XXkb.button.xpm.3
- XXkb.button.xpm.4
- the pixmap file names (the same as for the XXkb.mainwindow.xpm.* options).
- XXkb.bell.enable
- enables the keyboard bell when the layout changes.
- XXkb.bell.percent
- an argument value for the XBell call.
The xxkb allows to specify lists of applications that requires some
special actions. The applications can be specified using their WM_CLASS
or WM_NAME properties. A common form of such option is
XXkb.app_list.property.action: an applications list
The action here can
be one of ignore, start_alt or
alt_groupn. The ignore action means that the xxkb must ignore the windows
of those applications and doesn't add them to the managed windows set. The
start_alt action means that the xxkb must set the keyboard state to the
alternative layout when the application starts. And the alt_group1, alt_group2,
alt_group3 or alt_group4 actions allow to specify the alternative layout
for some applications if this layout should be different from the common
alternative layout specified in the XXkb.group.alt option. The property
can be one of wm_class_class, wm_class_name or
wm_name. The xxkb can identify an application using its window properties
WM_CLASS or WM_NAME. The WM_CLASS property actually consists of two parts
- a res_class and a res_name. Thus the property field specifies what property
or part of property should be considered for the application identification.
By default all these lists are empty. A not empty list is a sequence of
words
separated by space/tab. The xxkb accepts an asterisk as a part of word.
Long lists can be continued to the next line using a backslash as the last
char in the line. For example:
XXkb.app_list.wm_name.ignore: Fvwm* *clock \
Xman
- XXkb.ignore.reverse
- This option changes a meaning of the Xxkb.*.ignore list.
If the option switched on the ignore list becomes the list of windows which
should be managed but all other should be ignored.
Ivan Pascal
Table of Contents