Как настроить Ubuntu на автоматическое включение NumLock, когда внешняя клавиатура подключена, и выключение, когда ее нет?

12

Включение NumLock удобно при использовании полноразмерной внешней клавиатуры (с клавиатурой) и очень неудобно при использовании встроенной клавиатуры ноутбука (которая помещает цифры вместо букв на правой стороне клавиатуры, если не нажата клавиша Fn).

Поэтому мне нужно включать NumLock каждый раз, когда я подключаю внешнюю клавиатуру (или загружать ее с подключенной), и выключать каждый раз, когда я отсоединяю внешнюю клавиатуру (или загружаю ее с отключенной). И я делаю это часто, потому что я предпочитаю использовать полноразмерную внешнюю клавиатуру, но у меня недостаточно (только 3) USB-порта для ее подключения вместе с мышью, 3G-модемом и внешним жестким / флеш-накопителем.

Могу ли я автоматизировать это? Кажется, очень формально, логически простая задача: если подключена USB-клавиатура (какое-то устройство в / dev присутствует?) - NumLock включен, если нет - NumLock выключен. Встроенная клавиатура моего ноутбука подключена к PS / 2, внешняя - к USB.

Может быть, я сам должен его кодировать, но куда его поместить в этом случае?

Я использую Ubuntu 10.10.

Иван
источник

Ответы:

14

Прежде всего, установите numlockx ( нажмите здесь, чтобы установить numlockx ). По сути, это позволяет вам писать сценарии для установки состояния Num Lock - подробности смотрите на справочной странице numlockx .

Затем мы должны начать изучать правила udev. Для начала нам нужно выяснить, как идентифицируется клавиатура. Вы можете сделать это

ls /dev/input/by-id/

Это должно дать вам несколько удобочитаемых имен файлов (которые являются мягкими ссылками на не особо читаемое истинное имя). Моя клавиатура была

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

Итак, нам нужно узнать всю информацию о клавиатуре. я сделал

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

Но, конечно, укажите свой собственный путь. Вы получите много информации, но вы хотите взглянуть на первый блок, который называет клавиатуру и имеет SUBSYSTEMS=="usb". (А не контроллер USB или что-то еще). В моем случае это было:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

Так что теперь у нас достаточно информации, чтобы написать некоторые правила. Используйте ваш любимый редактор для создания /etc/udev/rules.d/10-local.rulesи вставки:

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

Опять же, введите название вашей клавиатуры и ATTRS, если оно отличается. Тогда это должно работать :)

Примечание. Я не смог проверить это, хотя я выполнял все команды до создания файла правил. И источники на случай, если вам нужно провести дополнительное расследование:

Хэмиш Даунер
источник
Большое спасибо, отлично. Честно говоря, я не ожидал получить ответ, близкий к такому информативному. Хотелось бы мне наградить больше, чем просто правильно и +1. Я надеюсь, что все те, кто снялся и проголосовал за мой вопрос, также наградят вас.
Иван
1

Если вы используете оболочку Gnome3.

Установить numlockx

затем запустите настройки запуска приложения gnome-session-properties

Изображение (новые пользователи не могут публиковать изображения :))

Нажмите Добавить

Напишите что-нибудь в поле имени и в поле команды скопируйте это:numlockx on

Образ

Лукас Игнатавичюс
источник
0

Я не уверен, что я делаю по-другому, потому что мой numlock на этой клавиатуре по умолчанию включен (это клавиатура Mac Pro Aluminium). Здесь есть несколько инструкций, которые должны помочь.

Надеюсь это поможет!

Крейг Малони
источник
0

Если вы используете gnome-shell, то вы можете установить статус Numlock & Capslock на расширение панели «Lock Keys». Пожалуйста, нашел это здесь

Tatui1969
источник