На клавиатуре Apple под Linux, как заставить функциональные клавиши работать без клавиши-модификатора fn?

19

Я использую проводную клавиатуру Apple в Linux. По умолчанию функциональные клавиши (F1, F2, F3 и т. Д.) Требуют fnнажатия клавиши для их работы. Без fnклавиши эти клавиши управляют такими функциями, как яркость экрана, громкость и управление музыкальной дорожкой.

Есть ли способ поменять их местами, поэтому функциональные клавиши не требуют fnмодификатора, а другие функции (яркость и т. Д.) Делают?

ryanlerch
источник

Ответы:

24

Вы должны добавить 0или 2в /sys/module/hid_apple/parameters/fnmode.

то есть:

echo 2 > /sys/module/hid_apple/parameters/fnmode

Кажется, есть некоторая путаница относительно того, какая разница между этими двумя значениями. Цитирование документации по Ubuntu :

  1. 0 = отключено: отключить клавишу «FN». Нажатие «FN» + «F8» будет вести себя так, как если бы вы нажимали «F8»
  2. 1 = fkeyslast: функциональные клавиши используются в качестве последней клавиши. Нажатие клавиши «F8» будет действовать как специальная клавиша. Нажатие «FN» + «F8» будет вести себя как F8.
  3. 2 = fkeysfirst: функциональные клавиши используются в качестве первой клавиши. Нажатие клавиши «F8» будет вести себя как F8. Нажатие «fn» + «F8» будет действовать как специальная клавиша (воспроизведение / пауза).

Обратите внимание, что это также работает для меня на Fedora.

ffledgling
источник
это fnmode = без подчеркивания
Евгений Якимович
Большое спасибо!!!
Шивы
3

Я понял, что довольно просто изменить поведение этого модификатора, поскольку root меняет значение в файле /sys/module/hid_apple/parameters/fnmodeс 1на 0. Например:

# echo 0> / sys / module / hid_apple / parameters / fnmode

Обратите внимание, что в некоторых старых версиях linux этот файл находился в /sys/module/apple/parameters/fnmode. Кроме того, это изменение не будет сохраняться при перезагрузке.

ryanlerch
источник
2

Для тех, кто получает отказ в доступе и не может просто использовать префикс «sudo»:

sudo nano /sys/module/hid_apple/parameters/fnmode

Измените его 2или что-то еще, а затем Ctrl+Xсохранить.

Марк
источник
лучший способ echo 2| sudo tee /sys/module/hid_apple/parameters/fnmode, но все эти решения являются временными .... Один из способов сделать постоянным (в systemdсредах, таких как Fedora, например): echo "w /sys/module/hid_apple/parameters/fnmode - - - - 2" | sudo tee /etc/tmpfiles.d/rev_fn_key.conf
nhed
2

Для любого, кто сталкивается с этой темой, используя один из более новых MacBook Pro (2016 и более поздние версии), которому для работы клавиатуры и тачпада нужен драйвер applepi , вот как это сделать, поскольку я не смог найти другую ветку, объясняющую это для более новые Mac.

Насколько я понимаю, драйвер эффективно заменяет роль модуля hid_apple, поэтому файлы для редактирования немного отличаются.

Во-первых, чтобы убедиться, что вы используете драйвер applepi, а не драйвер hid_apple, проверьте, какая из этих команд (используя терминал) что-то возвращает. В зависимости от того, что вы скажете, какой драйвер вы используете в данный момент:

# If this returns "applespi", you are using applespi
ls /sys/module | grep applespi

# If this returns "hid_apple", you are using hid_apple
ls /sys/module | grep hid_apple

Для временного тестирования настроек (настройки будут сброшены после перезагрузки):

echo 2 | sudo tee -a /sys/module/applespi/parameters/fnmode

Чтобы применить изменения навсегда (сохраните с перезагрузками):

# Add the option for the fn key
echo options applespi fnmode=2 | sudo tee -a /etc/modprobe.d/applespi.conf
# Update initramfs bootfile
sudo update-initramfs -u -k all
# Reboot to test (optional)
sudo reboot

Для старых MacBook Pro, использующих модуль hid_apple, используйте «hid_apple», а не «applepi» в командах.

Миша
источник
1

В более раннем обсуждении решение было дано с параметром загрузки ядра, который мог бы быть предпочтительным (общесистемное приложение, изменение только строки в /etc/default/grubи т. Д.).

Только в соответствии с этим решением, fnmodeустанавливается на 2вместо 0. Я просто попытался установить hid_apple/parameters/fnmodeна 2, и это также имеет желаемый эффект. Может быть , логика просто `1 →«требуют Fnдоступа F1, F2, F3, ...»против всех других ценностей?

RJVB
источник
Привет RJVB, добро пожаловать в unix.SE. Я отредактировал ваш ответ, чтобы улучшить форматирование. Посмотрите на источник, чтобы узнать некоторые приемы.
DRS