Недавно жизнь одарила меня новым ноутбуком. На смену Thinkpad X220 пришел L390. Весьма годный девайс. Начал его обживать и наткнулся на то, что не все Extra Buttons (кнопки, которые совмещены с функциональными клавишами) работают так, как я привык.
Возможно, это проявляется только в Debian 9 и Gnome 3, но меня раздражало:
- При отключении WiFi (Fn+F8) ноутбук переходил в режим полёта. То есть отключался и WiFi и Bluetooth.
- При отключении Bluetooth (Fn+F10) блютуз отключался. При повторном нажатии обратно не включался.
- Не было кнопки для отключения тачпада. Но были 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