WWW.LUSHNIKOV.NET

hardware, linux

Lenovo Thinkpad L390 и Extra Buttons

Недавно жизнь одарила меня новым ноутбуком. На смену Thinkpad X220 пришел L390. Весьма годный девайс. Начал его обживать и наткнулся на то, что не все Extra Buttons (кнопки, которые совмещены с функциональными клавишами) работают так, как я привык.
Возможно, это проявляется только в Debian 9 и Gnome 3, но меня раздражало:

  1. При отключении WiFi (Fn+F8) ноутбук переходил в режим полёта. То есть отключался и WiFi и Bluetooth.
  2. При отключении Bluetooth (Fn+F10) блютуз отключался. При повторном нажатии обратно не включался.
  3. Не было кнопки для отключения тачпада. Но были Fn+F11 и Fn+F12, которые ничего не делали.

Как с этим жить:

Создать файл /etc/udev/hwdb.d/thinkpad_keyboard.hwdb такого содержания:

evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
 KEYBOARD_KEY_04=prog1 # Fn+F8, wifi toggle
 KEYBOARD_KEY_48=prog2 # Fn+F10, bt toggle
 KEYBOARD_KEY_49=f21   # Fn+F11, touchpad toggle
 KEYBOARD_KEY_45=prog3 # Fn+F12, favorites

После изменения этого файла стоит выполнить две команды:

# systemd-hwdb update
# udevadm trigger

С этого момента через стандартные настройки гнома можно настроить запуск скриптов по нажатиям теперь уже работающи кнопок (запустить gnome-control-center, нажать Клавиатура, нажать +).

Ниже привожу скрипты для включения и выключения Bluetooth и WiFI, которые требуют установки пакета rfkill. Для отключения тачпада отдельного скрипта не требуется, в гноме эта функция уже есть.

/usr/local/bin/toggle-bt

#!/bin/bash
if /usr/sbin/rfkill list bluetooth | grep -c 'Soft blocked: yes' ; then
 notify-send "Bluetooth on"
 /usr/sbin/rfkill unblock bluetooth
else.
 notify-send "Bluetooth off"
 /usr/sbin/rfkill block bluetooth
fi

/usr/local/bin/toggle-wifi

#!/bin/bash
if /usr/sbin/rfkill list wifi | grep -c 'Soft blocked: yes' ; then
 notify-send "WiFi on"
 /usr/sbin/rfkill unblock wifi
else
 notify-send "WiFI off"
 /usr/sbin/rfkill block wifi
fi

Leave a Reply