Add guide for configuring F1-F12 on Apple-compatible keyboards in Linux
This commit is contained in:
136
README.md
Normal file
136
README.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# Настройка F1-F12 на Apple-совместимых клавиатурах в Linux
|
||||
|
||||
## Проблема
|
||||
|
||||
На клавиатуре (в т.ч. на клонах Apple Aluminium Keyboard — например, SONiX с USB ID `05ac:024f`) клавиши `F1`-`F12` не работают напрямую: по умолчанию они выдают мультимедиа-функции (громкость, яркость, плеер), а чтобы получить сам `F1` — нужно зажимать `Fn`.
|
||||
|
||||
Переключатель **Mac/Win** на самой клавиатуре этого НЕ решает — он меняет только раскладку `Alt`/`Win` (`Cmd`/`Option`), а USB-идентификатор остаётся Apple'овским, и ядро Linux продолжает грузить модуль `hid_apple`.
|
||||
|
||||
## Причина
|
||||
|
||||
Поведение F-клавиш контролируется параметром `fnmode` модуля ядра `hid_apple`:
|
||||
|
||||
| Значение | Поведение |
|
||||
|----------|-----------|
|
||||
| `0` | модуль отключён, F-клавиши = F-клавиши всегда |
|
||||
| `1` | мультимедиа первичные, F-клавиши через `Fn` |
|
||||
| `2` | **F-клавиши первичные, мультимедиа через `Fn`** ← то, что нужно |
|
||||
| `3` | авто — для внешних Apple-клавиатур ведёт себя как `1` (по умолчанию в новых ядрах) |
|
||||
|
||||
## Диагностика
|
||||
|
||||
### 1. Проверить, что клавиатура определяется как Apple
|
||||
|
||||
```bash
|
||||
lsusb | grep -i apple
|
||||
```
|
||||
|
||||
Пример вывода:
|
||||
```
|
||||
Bus 002 Device 003: ID 05ac:024f Apple, Inc. Aluminium Keyboard (ANSI)
|
||||
```
|
||||
|
||||
VID `05ac` — это Apple. Значит, модуль `hid_apple` подхватит устройство.
|
||||
|
||||
### 2. Проверить текущий режим
|
||||
|
||||
```bash
|
||||
cat /sys/module/hid_apple/parameters/fnmode
|
||||
```
|
||||
|
||||
Если видишь `1` или `3` — поведение именно то, что описано в проблеме.
|
||||
|
||||
## Решение
|
||||
|
||||
### Шаг 1. Применить изменение немедленно (без перезагрузки)
|
||||
|
||||
```bash
|
||||
echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
|
||||
```
|
||||
|
||||
Проверить сразу на любой клавише `F1`-`F12`. Должны сработать напрямую, мультимедиа — через `Fn`.
|
||||
|
||||
### Шаг 2. Закрепить настройку навсегда
|
||||
|
||||
Создать файл конфигурации модуля:
|
||||
|
||||
```bash
|
||||
echo 'options hid_apple fnmode=2' | sudo tee /etc/modprobe.d/hid_apple.conf
|
||||
```
|
||||
|
||||
### Шаг 3. Пересобрать initramfs
|
||||
|
||||
Чтобы параметр применялся и при загрузке (на случай, если `hid_apple` попадает в initramfs):
|
||||
|
||||
**Ubuntu / Debian:**
|
||||
```bash
|
||||
sudo update-initramfs -u
|
||||
```
|
||||
|
||||
**Fedora / RHEL / openSUSE:**
|
||||
```bash
|
||||
sudo dracut --force
|
||||
```
|
||||
|
||||
**Arch:**
|
||||
```bash
|
||||
sudo mkinitcpio -P
|
||||
```
|
||||
|
||||
### Шаг 4. Одной строкой (Debian/Ubuntu)
|
||||
|
||||
```bash
|
||||
sudo sh -c "echo 'options hid_apple fnmode=2' > /etc/modprobe.d/hid_apple.conf && echo 2 > /sys/module/hid_apple/parameters/fnmode && update-initramfs -u"
|
||||
```
|
||||
|
||||
## Проверка
|
||||
|
||||
После применения:
|
||||
|
||||
```bash
|
||||
cat /sys/module/hid_apple/parameters/fnmode
|
||||
# ожидаем: 2
|
||||
|
||||
cat /etc/modprobe.d/hid_apple.conf
|
||||
# ожидаем: options hid_apple fnmode=2
|
||||
```
|
||||
|
||||
И физически нажать `F1` в терминале или в браузере (`F5` — обновление, `F11` — полноэкранный режим) — должно работать без `Fn`.
|
||||
|
||||
## Дополнительные параметры `hid_apple`
|
||||
|
||||
Посмотреть все доступные параметры:
|
||||
|
||||
```bash
|
||||
ls /sys/module/hid_apple/parameters/
|
||||
```
|
||||
|
||||
Полезные:
|
||||
|
||||
| Параметр | Назначение |
|
||||
|----------|------------|
|
||||
| `fnmode` | поведение F-клавиш (см. выше) |
|
||||
| `iso_layout` | ISO-раскладка vs ANSI |
|
||||
| `swap_opt_cmd` | поменять местами `Option` и `Cmd` |
|
||||
| `swap_ctrl_cmd` | поменять местами `Ctrl` и `Cmd` |
|
||||
| `swap_fn_leftctrl` | поменять местами `Fn` и левый `Ctrl` |
|
||||
|
||||
Пример — положить все нужные опции в тот же конфиг:
|
||||
|
||||
```
|
||||
options hid_apple fnmode=2 swap_opt_cmd=1
|
||||
```
|
||||
|
||||
## Откат
|
||||
|
||||
Если нужно вернуть как было:
|
||||
|
||||
```bash
|
||||
sudo rm /etc/modprobe.d/hid_apple.conf
|
||||
echo 3 | sudo tee /sys/module/hid_apple/parameters/fnmode
|
||||
sudo update-initramfs -u
|
||||
```
|
||||
|
||||
## Почему так «по-apple»?
|
||||
|
||||
На маках F-клавиши по умолчанию работают как медиа-клавиши — так задумано Apple. Клоны и совместимые клавиатуры, прикидывающиеся Apple'ом по USB VID/PID, наследуют это поведение через драйвер `hid_apple` в Linux. Переключатель Mac/Win на корпусе меняет только маппинг `Cmd`/`Win` и не влияет на USB-идентификацию, поэтому проблема решается только на уровне параметра модуля ядра.
|
||||
Reference in New Issue
Block a user