100 lines
4.6 KiB
HTML
100 lines
4.6 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>The Linux keyboard and console HOWTO: X</TITLE>
|
|
<LINK HREF="Keyboard-and-Console-HOWTO-14.html" REL=next>
|
|
<LINK HREF="Keyboard-and-Console-HOWTO-12.html" REL=previous>
|
|
<LINK HREF="Keyboard-and-Console-HOWTO.html#toc13" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Keyboard-and-Console-HOWTO-14.html">Next</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO-12.html">Previous</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO.html#toc13">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="s13">13. X</A></H2>
|
|
|
|
<P>
|
|
<P>This FAQ/HOWTO is about the Linux keyboard and console, not about X,
|
|
which substitutes its own handling. However, it seems useful to
|
|
document some of the Linux keyboard and console related properties
|
|
of X.
|
|
<P>First of all, when X is started (say using <CODE>startx</CODE> or <CODE>xinit</CODE>)
|
|
it opens the first unused console, unless the desired console has been
|
|
indicated explicitly, as in <CODE>xinit -- vt12</CODE>.
|
|
Note that this will fail when there is no device file <CODE>/dev/tty12</CODE>,
|
|
but that it will not fail when the indicated console was in use already.
|
|
When X finishes, it will return to the original console.
|
|
While it is running one can use Ctrl-Alt-Fn to switch to VTn.
|
|
<P>The XFree86 keymap mechanism is much poorer than the Linux mechanism.
|
|
For each keycode there are at most 4 symbols defined, namely for the
|
|
4 keymaps plain, shift, mod, mod+shift. What is the modifier mod?
|
|
It is the one designated by the symbol <CODE>Mode_switch</CODE>.
|
|
For example, the command <CODE>xmodmap keys.dk</CODE>, where the file
|
|
<CODE>keys.dk</CODE> contains
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
keycode 64 = Mode_switch
|
|
keycode 113 = Mode_switch
|
|
keycode 38 = a A aring Aring
|
|
keycode 26 = e E ae AE
|
|
keycode 32 = o O oslash Ooblique
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
|
|
will make both Alt keys into mod keys, so that Alt+a gives å (a-ring), etc.
|
|
(Note the illogical naming of oslash and Ooblique.)
|
|
Such an <CODE>xmodmap</CODE> command can be placed in the <CODE>.xinitrc</CODE>
|
|
shell script that is executed by default when X is started.
|
|
<P>
|
|
<H2><A NAME="ss13.1">13.1 What precisely does XFree86-2.1 do when it initializes its keymap?</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<!--
|
|
keymap!initialization by XFree86
|
|
-->
|
|
|
|
<!--
|
|
XFree86!keymap initialization
|
|
-->
|
|
<P>Since version 2.1, XFree86 will initialize its keymap from the Linux keymap,
|
|
as far as possible. However, Linux had 16 entries per key (one for each
|
|
combination of the Shift, AltGr, Ctrl, Alt modifiers) and presently has
|
|
256 entries per key, while X has 4 entries per key (one for each combination
|
|
of Shift, Mod), so some information is necessarily lost.
|
|
<P>First <CODE>X</CODE> reads the <CODE>Xconfig</CODE> file, where definitions of the LeftAlt, RightAlt,
|
|
RightCtl, ScrollLock keys as Meta, ModeShift, Compose, ModeLock or ScrollLock
|
|
might be found - see X386keybd(1), later XFree86kbd(1).
|
|
<P>For Mod the LeftAlt key is taken, unless RightCtl was defined as ModeShift or
|
|
ModeLock, in which case RightCtl is taken, or RightAlt was so defined, in which
|
|
case RightAlt is taken.
|
|
This determines how the 4 XFree86 meanings of a key are selected from the 16
|
|
Linux meanings.
|
|
Note that Linux today does not distinguish by default between the two Ctrl keys
|
|
or between the two Shift keys. <CODE>X</CODE> does distinguish.
|
|
<P>Now the kernel keymap is read and the usually obvious corresponding X
|
|
bindings are made. The bindings for the "action keys" Show_Memory, Show_State,
|
|
Show_Registers, Last_Console, Console_n, Scroll_Backward, Scroll_Forward,
|
|
Caps_On and Boot are ignored, as are the dead diacriticals, and the locks
|
|
(except for ShiftLock), and the "ASCII-x" keys.
|
|
<P>Next, the definitions in the <CODE>Xconfig</CODE> file are used. (Thus, a definition
|
|
of Compose in <CODE>Xconfig</CODE> will override its value as found in the Linux
|
|
keymap.)
|
|
<P>What happens to the strings associated with the function keys? Nothing,
|
|
X does not have such a concept. (But it is possible to define strings
|
|
for function keys in <CODE>xterm</CODE> - note however that the window manager gets the
|
|
keys first.)
|
|
<P>I don't know how to convince <CODE>xterm</CODE> that it should use the X keymap
|
|
when Alt is pressed; it seems just to look at its resource <CODE>eightBitInput</CODE>,
|
|
and depending on whether that is true or false either set the high order bit
|
|
of the character, or generate an additional Escape character
|
|
(just like setmetamode(1) does for the console).
|
|
<P>
|
|
<HR>
|
|
<A HREF="Keyboard-and-Console-HOWTO-14.html">Next</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO-12.html">Previous</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO.html#toc13">Contents</A>
|
|
</BODY>
|
|
</HTML>
|