|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
<HTML>
|
|
Packit Service |
50ad14 |
<HEAD>
|
|
Packit Service |
50ad14 |
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
Packit Service |
50ad14 |
<TITLE>The Linux keyboard and console HOWTO: Examples of use of loadkeys and xmodmap</TITLE>
|
|
Packit Service |
50ad14 |
<LINK HREF="kbd.FAQ-16.html" REL=next>
|
|
Packit Service |
50ad14 |
<LINK HREF="kbd.FAQ-14.html" REL=previous>
|
|
Packit Service |
50ad14 |
<LINK HREF="kbd.FAQ.html#toc15" REL=contents>
|
|
Packit Service |
50ad14 |
</HEAD>
|
|
Packit Service |
50ad14 |
<BODY>
|
|
Packit Service |
50ad14 |
Next
|
|
Packit Service |
50ad14 |
Previous
|
|
Packit Service |
50ad14 |
Contents
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
loadkeys!example using
|
|
Packit Service |
50ad14 |
-->
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
xmodmap!example using
|
|
Packit Service |
50ad14 |
-->
|
|
Packit Service |
50ad14 |
Switching Caps Lock and Control on the keyboard (assuming you use
|
|
Packit Service |
50ad14 |
keymaps 0-15; check with dumpkeys | head -1 )
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% loadkeys
|
|
Packit Service |
50ad14 |
keymaps 0-15
|
|
Packit Service |
50ad14 |
keycode 58 = Control
|
|
Packit Service |
50ad14 |
keycode 29 = Caps_Lock
|
|
Packit Service |
50ad14 |
%
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
Switching them under X only:
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% xmodmap .xmodmaprc
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
where .xmodmaprc contains lines
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
remove Lock = Caps_Lock
|
|
Packit Service |
50ad14 |
remove Control = Control_L
|
|
Packit Service |
50ad14 |
keysym Control_L = Caps_Lock
|
|
Packit Service |
50ad14 |
keysym Caps_Lock = Control_L
|
|
Packit Service |
50ad14 |
add Lock = Caps_Lock
|
|
Packit Service |
50ad14 |
add Control = Control_L
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
What is this about the key numbering? Backspace is 14 under Linux,
|
|
Packit Service |
50ad14 |
22 under X? Well, the numbering can best be regarded as arbitrary;
|
|
Packit Service |
50ad14 |
the Linux number of a key can be found using showkey(1), and the
|
|
Packit Service |
50ad14 |
X number using xev(1). Often the X number will be 8 more than the
|
|
Packit Service |
50ad14 |
Linux number.
|
|
Packit Service |
50ad14 |
Something else people like to change are the bindings of the function keys.
|
|
Packit Service |
50ad14 |
Suppose that you want to make F12 produce the string "emacs ".
|
|
Packit Service |
50ad14 |
Then
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% loadkeys
|
|
Packit Service |
50ad14 |
keycode 88 = F12
|
|
Packit Service |
50ad14 |
string F12 = "emacs "
|
|
Packit Service |
50ad14 |
%
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
will do this. More explicitly, the procedure is like this:
|
|
Packit Service |
50ad14 |
(i) find the keycodes of the keys to be remapped, using showkey(1).
|
|
Packit Service |
50ad14 |
(ii) save the current keymap, make a copy and edit that:
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% dumpkeys > my_keymap
|
|
Packit Service |
50ad14 |
% cp my_keymap trial_keymap
|
|
Packit Service |
50ad14 |
% emacs trial_keymap
|
|
Packit Service |
50ad14 |
% loadkeys trial_keymap
|
|
Packit Service |
50ad14 |
%
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
The format of the table can be guessed by looking at the output
|
|
Packit Service |
50ad14 |
of dumpkeys , and is documented in keymaps(5).
|
|
Packit Service |
50ad14 |
When the new keymap functions as desired, you can put an invocation
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
loadkeys my_new_keymap
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
in /etc/rc.local or so, to execute it automatically at boot-up.
|
|
Packit Service |
50ad14 |
Note that changing modifier keys is tricky, and a newbie can easily
|
|
Packit Service |
50ad14 |
get into a situation only an expert can get out of.
|
|
Packit Service |
50ad14 |
The default directory for keymaps is /usr/lib/kbd/keymaps .
|
|
Packit Service |
50ad14 |
The default extension for keymaps is .map .
|
|
Packit Service |
50ad14 |
For example, loadkeys uk would probably load
|
|
Packit Service |
50ad14 |
/usr/lib/kbd/keymaps/i386/qwerty/uk.map .
|
|
Packit Service |
50ad14 |
(With kbd-0.95 and older this would be /usr/lib/kbd/keytables
|
|
Packit Service |
50ad14 |
and /usr/lib/kbd/keytables/uk.map .)
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
(On my machine) /dev/console is a symbolic link to /dev/tty0 ,
|
|
Packit Service |
50ad14 |
and the kernel regards /dev/tty0 as a synonym for the current VT.
|
|
Packit Service |
50ad14 |
XFree86 1.3 changes the owner of /dev/tty0 , but does not reset this
|
|
Packit Service |
50ad14 |
after finishing. Thus, loadkeys or dumpkeys might fail because
|
|
Packit Service |
50ad14 |
someone else owns /dev/tty0 ;
|
|
Packit Service |
50ad14 |
in such a case you might run X first.
|
|
Packit Service |
50ad14 |
Note that you cannot change keyboard mappings when not at the console
|
|
Packit Service |
50ad14 |
(and not superuser).
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
keyboard!making modifier keys toggle
|
|
Packit Service |
50ad14 |
-->
|
|
Packit Service |
50ad14 |
"Can the Shift, Ctrl and Alt keys be made to behave as toggles?"
|
|
Packit Service |
50ad14 |
Yes, after saying
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% loadkeys
|
|
Packit Service |
50ad14 |
keymaps 0-15
|
|
Packit Service |
50ad14 |
keycode 29 = Control_Lock
|
|
Packit Service |
50ad14 |
keycode 42 = Shift_Lock
|
|
Packit Service |
50ad14 |
keycode 56 = Alt_Lock
|
|
Packit Service |
50ad14 |
%
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
the left Control, Shift and Alt keys will act as toggles.
|
|
Packit Service |
50ad14 |
The numbers involved are revealed by showkey
|
|
Packit Service |
50ad14 |
(and usually are 29, 97, 42, 54, 56, 100 for left and right control,
|
|
Packit Service |
50ad14 |
shift and alt, respectively), and the functions are
|
|
Packit Service |
50ad14 |
Control_Lock, Shift_Lock, Alt_Lock, ALtGr_Lock.
|
|
Packit Service |
50ad14 |
"What about `sticky' modifier keys?"
|
|
Packit Service |
50ad14 |
Since version 1.3.33, the kernel knows about `sticky' modifier keys.
|
|
Packit Service |
50ad14 |
These act on the next key pressed. So, where one earlier needed
|
|
Packit Service |
50ad14 |
the 3-symbol sequence Shift_Lock a Shift_Lock to type `A', one
|
|
Packit Service |
50ad14 |
can now use the 2-symbol sequence SShift_Lock a.
|
|
Packit Service |
50ad14 |
You can say
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% loadkeys
|
|
Packit Service |
50ad14 |
keymaps 0-15
|
|
Packit Service |
50ad14 |
keycode 54 = SShift
|
|
Packit Service |
50ad14 |
keycode 97 = SCtrl
|
|
Packit Service |
50ad14 |
keycode 100 = SAlt
|
|
Packit Service |
50ad14 |
%
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
to make the right Shift, Ctrl, Alt sticky versions of the left ones.
|
|
Packit Service |
50ad14 |
This will allow you to type Ctrl-Alt-Del in three keystrokes with one hand.
|
|
Packit Service |
50ad14 |
The keymaps line in these examples should cover all keymaps you have in use.
|
|
Packit Service |
50ad14 |
You find what keymaps you have in use by
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
% dumpkeys | head -1
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
The following text was contributed by Piotr Mitros.
|
|
Packit Service |
50ad14 |
XFree86 supports an accessibility option which allows disabled users
|
|
Packit Service |
50ad14 |
to type single-handed. With sticky keys enabled, the user can hit a
|
|
Packit Service |
50ad14 |
modifier key (ctrl, alt, shift) followed by another key, rather than
|
|
Packit Service |
50ad14 |
having to hold the modifier key while hitting the letter.
|
|
Packit Service |
50ad14 |
To enable sticky keys, first make sure the xkb extension is enabled
|
|
Packit Service |
50ad14 |
(this is done during initial X server configuration and is usually
|
|
Packit Service |
50ad14 |
enabled by default). Next, run the X server with the +accessx
|
|
Packit Service |
50ad14 |
option. If you use startx , either run startx -- +accessx or
|
|
Packit Service |
50ad14 |
add +accessx to the serverargs line in the startx script.
|
|
Packit Service |
50ad14 |
If you use xdm , add +accessx to the appropriate server line
|
|
Packit Service |
50ad14 |
in /etc/X11/xdm/Xservers .
|
|
Packit Service |
50ad14 |
It is also possible to enable X accessibility with some end-user
|
|
Packit Service |
50ad14 |
utilities with a running X server.
|
|
Packit Service |
50ad14 |
Once X accessibility is enabled, press the shift key five times in a
|
|
Packit Service |
50ad14 |
row to enable sticky keys. To disable sticky keys, either press the
|
|
Packit Service |
50ad14 |
shift key five times again, or press a key while holding a modifier
|
|
Packit Service |
50ad14 |
key.
|
|
Packit Service |
50ad14 |
XFree86 also supports Slow Keys, Repeat Keys, Bounce Keys and an
|
|
Packit Service |
50ad14 |
audible bell. xkbcomp can be used to generate a .xkm file
|
|
Packit Service |
50ad14 |
to enable these. The appropriate xkbcomp commands are listed in
|
|
Packit Service |
50ad14 |
/usr/X11R6/lib/X11/xkb/compat/accessx .
|
|
Packit Service |
50ad14 |
Unfortunately, the exact process is still undocumented.
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
|
|
Packit Service |
50ad14 |
Next
|
|
Packit Service |
50ad14 |
Previous
|
|
Packit Service |
50ad14 |
Contents
|
|
Packit Service |
50ad14 |
</BODY>
|
|
Packit Service |
50ad14 |
</HTML>
|