ubuntuusers.de

Titel:
add missing key function to layout
Datum:
5. November 2012 16:39
Aktionen:
Code:
 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


I recently installed debian (sarge) on a T23, which works out of the box. I did not try the modem, but the other hardware made no problems.

But then I realized that the keyboard is missing a key: The less/greater/bar key is not there. It is simply missing. This is alright with an english keymapping, as there these symbols are in a different position. On a german layout (as indicated by stickers on the keys) I had to define these to be able to get '<', '>' and '|'.

And this is how it worked:

First thing was to tell XFree86 about the new stuff. There are configuration files in /etc/X11/xkb which have to be changed:

I first tried
/etc/X11/xkb/symbols/de
then I found out, that another file was used:
/etc/X11/xkb/symbols/pc/de

This is what I changed:

24a25,26
>     key <AB08>        { [comma, semicolon, less, less]        };
>     key <AB09>        { [period, colon, greater, greater]     };
27c29
<     key <BKSL>        { [numbersign, apostrophe,   dead_grave,   dead_breve ] };
---
>     key <BKSL>        { [numbersign, apostrophe,   bar,          bar        ] };
48c50
<     key <BKSL>        { [numbersign, apostrophe,        grave,        grave ] };
---
>     key <BKSL>        { [numbersign, apostrophe,        bar,        bar     ] };
62c64
<     key <BKSL>        { [numbersign, apostrophe,        grave,        grave ] };
---
>     key <BKSL>        { [numbersign, apostrophe,        bar,        bar ]     };
74c76
<     key <BKSL>        { [numbersign, apostrophe,   dead_grave,   dead_grave ] };
---
>     key <BKSL>        { [numbersign, apostrophe,   bar,         bar         ] };

so there was two keys to be redefined additionally (in the basic section), <AB08> and <AB09>, the definition for the <BKSL> key has to be changed in different sections of the file ('basic','nodeadkeys', etc.).

That was it for X, you must restart it (CTRL-ALT-BACKSPACE) or use xmodmap.

I changed the de-files directly, you might want to rename them and include them via /etc/X11/XF86Config-4, but then you should also change the naming schema in the files above accordingly (#include directives).

This could be the changed section with a self-made definition in a file called de_thinkpadT23.

Section "InputDevice"
    Identifier     "Generic Keyboard"
    Driver         "keyboard"
    Option         "CoreKeyboard"
    Option         "XkbRules" "xfree86"
    Option         "XkbModel" "pc104"
    Option         "XkbLayout" "de_thinkpadT23"
    Option         "XkbVariant" "nodeadkeys"
EndSection

To have the new symbols on the console, I had to define a keymap which is loaded at boottime and changed that:
/etc/console/boottime.kmap.gz
This is the patch, you might easily find out what I changed:

86c86
< keycode  43 = numbersign       apostrophe
---
> keycode  43 = numbersign       apostrophe     bar
88a89
>       altgr   alt     keycode  43 = Meta_bar
96c97
< keycode  51 = comma            semicolon
---
> keycode  51 = comma            semicolon       less
99c100,101
< keycode  52 = period           colon
---
>       altgr   alt     keycode  51 = Meta_less
> keycode  52 = period           colon           greater
101a104
>       altgr   alt     keycode  52 = Meta_greater