У вас на клавіатурі є медіаклавіші, але вони нічого не роблять? Або хочете повісити яскравість/макроси на окремі кнопки в GNOME чи KDE? Сьогодні покажу, як налаштувати апаратні та мультимедійні клавіші у середовищах GNOME і KDE на X11 та Wayland — від пошуку коду клавіші до призначення дії. Це практичний гайд у стилі GUI Linux та налаштування робочого столу, з корисними трюки Linux і маленькими поради Linux 😉

Основний How-to: універсальна схема

1) Дізнайтеся, що у вас: X11 чи Wayland

Це впливає на інструменти, якими ми скористаємося.

echo $XDG_SESSION_TYPE

Відповідь буде x11 або wayland.

2) Визначте код проблемної клавіші

  • Універсально (ядровий рівень):
sudo evtest
# Оберіть потрібний /dev/input/eventX (клавіатура) і натисніть клавішу — дивіться код (KEY_*, MSC_SCAN)
  • На X11 (зручно для keysyms):
xev -event keyboard
# У вікні натискайте клавішу — дивіться keycode і keysym (напр., XF86AudioPlay)

3) Встановіть потрібні утиліти

Вони допоможуть призначити дії: керування плеєром, гучністю та яскравістю.

# Debian/Ubuntu
sudo apt update
sudo apt install playerctl brightnessctl xbindkeys xdotool evtest

# Fedora
sudo dnf install playerctl brightnessctl xbindkeys xdotool evtest

# Arch
sudo pacman -S playerctl brightnessctl xbindkeys xdotool evtest

Пояснення: playerctl керує відтворенням (MPRIS), pactl уже в PulseAudio/PipeWire, brightnessctl — яскравість, xbindkeys — для X11-глобальних хоткеїв.

4) Призначте дії (GNOME і KDE)

Базова ідея: змусити вашу невідому кнопку відсилати стандартний keysym (типу XF86AudioPlay) або прямо запускати команду.

  • GNOME (через gsettings, швидко)

Створимо користувацький шорткат «Play/Pause» на клавішу з симовлом XF86AudioPlay (або ту, що ви знайшли в xev). Якщо клавіша взагалі не має keysym — дивіться розділ «Альтернативні способи».

# Додаємо custom keybinding
PATH=/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/

# Зареєструвати список (увага: перезаписує список — додайте інші при потребі)
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['$PATH']"

# Налаштувати запис
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH name 'Play/Pause'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH command 'playerctl play-pause'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH binding 'XF86AudioPlay'

Аналогічно можна додати гучність і яскравість:

# Гучність +5%
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH name 'Volume Up'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH command "pactl set-sink-volume @DEFAULT_SINK@ +5%"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH binding 'XF86AudioRaiseVolume'

# Яскравість +10%
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH name 'Brightness Up'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH command 'brightnessctl set +10%'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$PATH binding 'XF86MonBrightnessUp'
  • KDE Plasma (через Глобальні комбінації)

Plasma вміє призначати будь-які клавіші на команди:

  1. Відкрийте «Системні параметри → Комбінації → Додати ярлик → Запуск команди/скрипту».
  2. Команда: наприклад, playerctl play-pause або pactl set-sink-volume @DEFAULT_SINK@ -5%.
  3. Клацніть «Зміна» та натисніть потрібну клавішу (або задайте XF86... ключ).
  4. Збережіть, перевірте.

Альтернативні способи

X11: xbindkeys (гнучко і просто)

Якщо у вас X11 і хочете повний контроль, використовуйте xbindkeys:

# Створити конфіг, якщо нема
xbindkeys --defaults > ~/.xbindkeysrc

# Відредагуйте ~/.xbindkeysrc, додайте, наприклад:
# Плей/Пауза на XF86AudioPlay
"playerctl play-pause"
    XF86AudioPlay

# Гучність +5% на Alt+Up (приклад)
"pactl set-sink-volume @DEFAULT_SINK@ +5%"
    Alt + Up

# Перезапустити демон
pkill xbindkeys; xbindkeys

Додайте xbindkeys в автозапуск вашого середовища, щоб правила діяли після входу.

Wayland/універсально: input-remapper або hwdb (низький рівень)

  • input-remapper перетворює «дивні» кнопки на стандартні (наприклад, KEY_PLAYPAUSE), які GNOME/KDE вже вміють ловити.
sudo apt install input-remapper  # або відповідний пакет у вашому дистро
sudo systemctl enable --now input-remapper
# GUI-конфігуратор
input-remapper-gtk

Створіть профіль для вашої клавіатури: натисніть проблемну кнопку → призначте дію KEY_PLAYPAUSE, KEY_BRIGHTNESSUP тощо → збережіть і застосуйте «on boot».

  • udev hwdb (просунуто): прив’язує скан-код до стандартного ключа на рівні ядра.
# Приклад файлу (підставте власні ідентифікатори пристрою/скан-коди з evtest):
echo 'evdev:input:b0003v046DpC31C*
 KEYBOARD_KEY_700e2=playpause
 KEYBOARD_KEY_700e9=volumeup
 KEYBOARD_KEY_700ea=volumedown' | sudo tee /etc/udev/hwdb.d/99-custom-media-keys.hwdb

# Оновити базу і перезапустити пристрій вводу
sudo udevadm hwdb --update
sudo udevadm trigger -s input

Після цього DE бачить ваші кнопки як стандартні медіаклавіші.

GUI-спосіб (без терміналу, коли це можливо)

GNOME

  1. Параметри → Клавіатура → Переглянути і налаштувати скорочення → Додати користувацьке.
  2. Назва: «Play/Pause», Команда: playerctl play-pause.
  3. Клавіша: натисніть потрібну (якщо вона розпізнається). Якщо ні — спершу скористайтеся input-remapper або hwdb.

KDE Plasma

  1. Системні параметри → Комбінації → Додати ярлик → Запуск команди/скрипту.
  2. Команда: brightnessctl set 10%-, playerctl next тощо.
  3. Задайте/натисніть потрібну кнопку.

FAQ

Клавіша не визначається ніде. Що робити?

Перевірте sudo evtest на різних /dev/input/eventX. Якщо взагалі немає подій — клавіатура може працювати в приватному режимі (vendor-only). Тоді допомагає лише hwdb або утиліти виробника (рідко на Linux).

Wayland не дає глобальні хоткеї для сторонніх інструментів?

Так, на Wayland xbindkeys не працює. Використовуйте вбудовані засоби DE (GNOME/KDE) або input-remapper/hwdb, щоб генерувати стандартні KEY_* події.

playerctl не керує моїм плеєром

Перевірте, чи ваш плеєр підтримує MPRIS (більшість сучасних — так). Спробуйте playerctl -l для списку плеєрів і playerctl -p <name> play-pause.

brightnessctl каже «Permission denied»

Додайте себе до групи video і перелогіньтесь: sudo usermod -aG video $USER. На деяких ноутбуках потрібні коректні ACPI-драйвери або керування через intel_backlight чи amdgpu_bl.

Конфлікти з існуючими шорткатами

У GNOME і KDE видаліть або змініть конфліктні призначення. В KDE перевірте «Комбінації → Глобальні комбінації» та «KWin».

Як зробити, щоб правила діяли після перезавантаження?

GNOME/KDE зберігають шорткати автоматично. Для xbindkeys — додайте в автозапуск DE. Для input-remapper позначте профіль як «Apply at boot». Для hwdb перезапуск не потрібен після udevadm trigger, але інколи допомагає релогін.

Порада від Kernelka

Зберіть усі ваші команди у маленькі скрипти в ~/bin (наприклад, volup, voldown, playpause) і вже їх призначайте на клавіші. Так простіше підтримувати й переносити налаштування між ПК. І не соромтеся тестувати різні варіанти — це найцікавіша частина налаштування робочого столу! 🌟

Підсумок

  • Визначте, що у вас: X11 чи Wayland, і з’ясуйте код кнопки через evtest/xev.
  • GNOME/KDE вміють задавати шорткати прямо на команди — використовуйте це в першу чергу.
  • Для X11 підійде xbindkeys; для Wayland — input-remapper або udev hwdb.
  • Команди «на медіаклавіші»: playerctl, pactl, brightnessctl — мінімальний набір для комфорту.
  • Тримайте конфлікти під контролем і додавайте автозапуск, щоб усе працювало після перезавантаження.