Arch based distro Ctlos web
Вы не вошли.
Страницы 1
На момент написания версия образа: ctlos_xfce_1.10.0_20200824 \ bspwm
Вылечить FN клавиши на ноутбуке/ПК с Arch Linux
FN + .. , которые у меня есть:
1. F1 - выключить звук (+)
2. F2 - меньше громкость (+)
3. F3 - больше громкость (+)
4. F4 - выключить микрофон (+)
5. F5 - обновить страницу (-)
6. F6 - выключить тачпад (-)
7. F7 - режим в полете (-)
8. F8 - выключить камеру (-)
9. F9 - замок (поставить замок на ноутбук) (-)
10. F10 - переключение основного дисплея (-)
11. F11 - меньше яркость (-)
12. F12 - больше яркость (-)
13. Пуск/пауза музыки - Пуск/пауза музыки (+)
14. Переключить на трек влево - Переключить на трек влево (+)
15. Переключить на трек вправо - Переключить на трек вправо (+)
- НЕ решено
+ решено
Пункты 11 и 12 начинают работать после выхода из ждущего режима (suspend)
Решение:
1. pamac install acpid acpi acpitool
2. systemctl start acpid.service
3. systemctl enable acpid.service
4. pamac install playerctl (если есть клавиши, которые манипулируют с музыкой)
5. acpi_listen
Теперь нужно нажать на Fn + F(1..12) после чего у вас отобразится примерно такой текст:
button/mute MUTE 00000080 00000000 K
button/volumedown VOLDN 00000080 00000000 K
button/volumeup VOLUP 00000080 00000000 K
button/f20 F20 00000080 00000000 K
cd/play CDPLAY 00000080 00000000 K
cd/prev CDPREV 00000080 00000000 K
cd/next CDNEXT 00000080 00000000 K
Здесь не все 12 строчек, так как еще не все решил.
6. Зайдите в папку /etc/acpi/
7. Выполните в папке git clone https://github.com/xihnik/LinuxFixFN.git
8. Откройте конфиг /etc/acpi/acpi-config
9. Измените в нем your_user на название вашего пользователя.
10. Перезапустите ноутбук/ПК и все должно заработать или можно этой командой перезапустить контроллер отвечающий за FN клавиши: systemctl disable acpid.service && systemctl enable acpid.service
Если вы хотите добавить свои обработчики, тогда краткий экскурс:
Зайдите в папку /etc/acpi/ в этой папке лежат bash скрипты, которые выполняются при нажатии на FN+F1(1..12). Зайдите в папку /etc/acpi/events/ в этой папке лежат конфиги, которые и отвечают за вызов скриптов.
К примеру мы хотим добавить обработку нажатия на FN+F1 (у меня это включить/выключить звук):
1. Зайдите в папку /etc/acpi/events/
2. Добавьте файл без расширения к примеру VolumeToggle
3. Откройте его
4. Добавьте значение FN+F1:
Вот FN+F1 полученный с помощью acpi_listen: button/mute MUTE 00000080 00000000 K
Нам нужно превартить этот текст из этого event=button/other (FUNC|HOTK) 00000070 в этот event=button/mute (MUTE|HOTK) 00000080
Что мы сделали:
button/other заменили на button/mute
FUNC заменили на MUTE
00000070 заменили на 00000080
5. Навешиваем bash скрипт на action
action=/etc/acpi/VolumeToggle.sh %e
6. Зайдите в папку /etc/acpi/
7. Создайте файл VolumeToggle.sh и сделайте его исполняемых (свойства файла->права)
8. Откройте его редактором
9. И добавьте следующее:
#!/bin/bash
#Выключить/включить звук
filename=/etc/acpi/acpi-config
user=$(head -n 1 $filename)
var=$(amixer get Master | grep '\[on\]')
if [[ -z $var ]]; then
amixer -D pulse sset Master unmute
amixer -c 0 set Master unmute
amixer cset numid=4 on
sudo -u $user amixer cset numid=4 on
sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "Звук включен"
else
amixer -D pulse sset Master mute
amixer -c 0 set Master mute
amixer cset numid=4 off
sudo -u $user amixer cset numid=4 off
sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "Звук выключен"
fi
*Здесь мы описали, что произойдет при вызове FN+F1
10. Перезапустите ноутбук/ПК и все должно заработать хотя можно и этой командой перезапустить контроллер отвечающий за FN обработчики: systemctl disable acpid.service && systemctl enable acpid.service
Отредактировано Mr Ocean (29-08-2020 19:28:19)
Пока живой
Вне форума
Есть ещё более простой и красивый способ управления мультимедиа клавишами.
В sxhkdrc добавляем строки:
# Volume control
XF86Audio{RaiseVolume,LowerVolume}
volume{-up,-down}
XF86AudioMute
amixer set Master toggle
# Music control
XF86Audio{Next,Prev,Play,Stop}
mpc {next,prev,toggle,stop}
создаём скрипты:
volume-down
#!/bin/bash
# /usr/local/bin/volume-down
amixer -Mq set Master,0 5%- unmute && dunstify -u low --replace=69 -i /usr/share/icons/Papirus-Dark/24x24/actions/audio-volume-medium.svg "Volume Down : $(volume)%"
volume-up
#!/bin/bash
# /usr/local/bin/volume-up
amixer -Mq set Master,0 5%+ unmute && dunstify -u low --replace=69 -i /usr/share/icons/Papirus-Dark/24x24/actions/audio-volume-high.svg "Volume Up : $(volume)%"
volume
#!/bin/bash
# /usr/local/bin/volume
statusLine=$(amixer get Master | tail -n 1)
status=$(echo "${statusLine}" | grep -wo "on")
volume=$(echo "${statusLine}" | awk -F ' ' '{print $5}' | tr -d '[]%')
echo "$volume"
закидываем их в папку, допустим /usr/local/bin, не забыв сделать исполняемыми, перезагружаем sxhkdrc (super + Escape)
И на выходе получаем приблизительно такую картинку:
Вне форума
Страницы 1
[ Сгенерировано за 0.127 сек, 9 запросов выполнено - Использовано памяти: 1.09 Мбайт (Пик: 1.13 Мбайт) ]