Microsoft Natural Multimedia Keyboard 1.0A (Работа Multimedia клавиш)

Разбираемся с подключением и настройкой устройств ввода информации.

Модератор: Модераторы разделов

ABEgorov
Сообщения: 2

Microsoft Natural Multimedia Keyboard 1.0A

Сообщение ABEgorov »

Настроил Microsoft Natural Multimedia Keyboard в Debian Linux, думаю если напишу тут, то это никому не помешает, а может и кому то пригодится.

Ядро 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. Собственно так можно настроить поддержку абсолютно любой клавиатуры, не поддерживаемой ядром.
Спасибо сказали:
gabix
Сообщения: 352
ОС: openSUSE Leap 15.4

Re: Microsoft Natural Multimedia Keyboard 1.0A

Сообщение gabix »

Спасибо! Буду очень внимательно читать. Правда, у меня проблема ещё круче: клавиши Fx вообще не работают.
Спасибо сказали:
Аватара пользователя
Varandei
Сообщения: 24

Re: Microsoft Natural Multimedia Keyboard 1.0A

Сообщение Varandei »

gabix писал(а):
21.11.2007 12:13
Спасибо! Буду очень внимательно читать. Правда, у меня проблема ещё круче: клавиши Fx вообще не работают.

А F lock включен? ;-)
Спасибо сказали:
Alukard_aka_404
Сообщения: 51
ОС: GNU/Linux Debian

Re: Microsoft Natural Multimedia Keyboard 1.0A

Сообщение Alukard_aka_404 »

Это актуально и для RedHat´а? или только для Debian? для xorg.
Спасибо сказали:
Аватара пользователя
zersaa
Сообщения: 9
ОС: Arch Linux

Re: Microsoft Natural Multimedia Keyboard 1.0A

Сообщение zersaa »

Спасибо, пригодилось
Спасибо сказали: