#1 27-08-2020 02:31:06

Mr Ocean
user
Здесь с 26-08-2020
Сообщений: 21
LinuxFirefox 80.0

Не работают функциональные клавиши на ноутбуке

На момент написания версия образа: 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) hmm

Решение:
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)


Пока живой

Вне форума

#2 22-09-2020 13:38:34

samyurai
user
Здесь с 26-04-2020
Сообщений: 6
Windows 10Firefox 78.0

Re: Не работают функциональные клавиши на ноутбуке

Есть ещё более простой и красивый способ управления мультимедиа клавишами.
В 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)
И на выходе получаем приблизительно такую картинку: ac8xpWG.png

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] CCBot

Подвал форума

Powered by FluxBB
Modified by Visman & creio

[ Сгенерировано за 0.144 сек, 7 запросов выполнено - Использовано памяти: 1.09 Мбайт (Пик: 1.12 Мбайт) ]