Ядро Linux не понимает почти все нестандартные клавиши этой клавиатуры, поэтому они нигде не работают для того, чтобы ядро понимало эти клавиши надо добавить следующий скрипт в автозагрузку (он должен выполнятся от root), например в файл /etc/rc.local. (если хотите, чтобы клавиши Help, Undo, Redo, ..., Print работали как F1-F12 замените true на false) :
Код: Выделить всё
#!/bin/sh
setkeycodes e04c 235
setkeycodes e064 232
setkeycodes e03c 137
setkeycodes e005 124
setkeycodes e016 196
setkeycodes e05f 142
# Use FLock key for F1-F12?
if true; then
setkeycodes e03b 212
setkeycodes e008 176
setkeycodes e007 131
setkeycodes e03e 214
setkeycodes e03f 215
setkeycodes e040 216
setkeycodes e041 136
setkeycodes e042 218
setkeycodes e043 219
setkeycodes e023 160
setkeycodes e057 228
setkeycodes e058 229
else
setkeycodes e03b 59
setkeycodes e008 60
setkeycodes e007 61
setkeycodes e03e 62
setkeycodes e03f 63
setkeycodes e040 64
setkeycodes e041 65
setkeycodes e042 66
setkeycodes e043 67
setkeycodes e023 68
setkeycodes e057 87
setkeycodes e058 88
fi
Далее настраиваем X сервер (ставим "XkbModel" "microsoftmult"):
Код: Выделить всё
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "microsoftmult"
...
EndSection
И редактируем файл /usr/share/X11/xkb/symbols/inet (меняем в последней строчке клавиатуры "microsoftmult" key <I80> на key <I70>):
Код: Выделить всё
// Microsoft Wireless Multimedia Keyboard 1.0A
partial alphanumeric_keys
xkb_symbols "microsoftmult" {
...
key <I70> { [ XF86Documents ] };
};
В настройках клавиатуры Gnome/KDE выбираем Microsoft Wireless Multimedia Keyboard 1.0A. После этого все клавиши этой клавиатуры должны работать.
-----
Теперь откуда взяты значения в первом скрипте. При нажатии не поддерживаемой ядром клавиши в лог или на экран консоли выводится сообщение с кодом этой клавиши. Это первый параметр setkeycodes. Второй параметр высчитывается по таблице. Сначала код клавиши переводится в десятичную систему исчисления, к нему прибавляется 128 и он ищется в таблице:
Код: Выделить всё
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
3 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
4 72, 73, 74, 75, 76, 77, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5 88, 89, 90, 91, 111, 221, 94, 95, 96, 211, 128, 127, 129, 208, 131, 126,
6 108, 109, 112, 111, 113, 181, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107,
7 239, 160, 174, 176, 222, 157, 123, 110, 139, 134, 209, 210, 133, 115, 116, 117,
8 232, 133, 134, 135, 140, 248, 191, 192, 122, 188, 245, 158, 161, 193, 223, 227,
9 198, 199, 200, 147, 159, 151, 178, 201, 146, 203, 166, 236, 230, 235, 234, 233,
A 163, 204, 253, 153, 162, 144, 164, 177, 152, 190, 208, 129, 130, 231, 209, 210,
B 136, 220, 143, 246, 251, 137, 138, 182, 183, 184, 93, 184, 247, 132, 170, 219,
C 249, 205, 207, 149, 150, 154, 155, 167, 168, 169, 171, 172, 173, 165, 175, 179,
D 180, 0, 185, 186, 187, 118, 119, 120, 121, 229, 194, 195, 196, 197, 148, 202,
E 101, 212, 237, 214, 215, 216, 217, 218, 228, 142, 213, 240, 241, 242, 243, 244,
F 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Здесь столбцы первое число нового кода, а строки второе. Далее полученное число переводится в десятичную систему исчисления. И это второй параметр setkeycodes. Однако для некоторых клавиш это не работает. Тогда в файле /usr/share/X11/xkb/symbols/inet ищем нужную клавишу и смотрим, что это за клавиша, например key <I70>. Далее делаем так: 0x70 + 0x80 = 0xF0 = 240. Ищем 240 в таблице, ему соответствует код 0xEB = 235 это будет вторая цифра для setkeycodes. Собственно так можно настроить поддержку абсолютно любой клавиатуры, не поддерживаемой ядром.