Вопрос или проблема
Я пытаюсь заблокировать функциональные клавиши (F1-F12) на своей системе Linux, используя xkb
и xmodmap
, но до сих пор не добился успеха. Несмотря на то что я установил клавиши на NoSymbol, функциональные клавиши продолжают работать, и системные действия (такие как F1 для открытия справки, F5 для обновления и т.д.) по-прежнему срабатывают.
Я хотел бы полностью отключить функциональные клавиши, включая их стандартные функции и любые комбинации Fn +
функциональных клавиш.
Я уже пробовал изменить соответствующую часть файла /xkb/symbols/pc
на:
key <FK01> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F1
key <FK02> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F2
key <FK03> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F3
Несмотря на эту конфигурацию, функциональные клавиши по-прежнему работают как и прежде (например, F1 открывает справку, F5 обновляет страницу и т.д.).
Я также пытался использовать xmodmap
xmodmap -e "keycode 67 = NoSymbol" # F1
xmodmap -e "keycode 68 = NoSymbol" # F2
xmodmap -e "keycode 69 = NoSymbol" # F3
Ответ или решение
Для полного отключения функциональных клавиш (F1-F12) на Linux с помощью xkb
или xmodmap
, важно учитывать, что просто установка NoSymbol
может не сработать на всех системах, поскольку некоторые приложения могут обрабатывать нажатия этих клавиш отдельно от X-сервера. Однако, есть несколько шагов, которые можно предпринять для достижения вашей цели.
Использование xmodmap
-
Определите код клавиш: Сначала нужно узнать код (keycode) для каждой функциональной клавиши. Это можно сделать с помощью команды
xev
. Откройте терминал и выполните:xev
Затем нажмите интересующую вас функциональную клавишу. В выводе ищите строку, содержащую
keycode
. Запишите эти коды. -
Отключите клавиши: Используйте
xmodmap
для отключения функциональных клавиш. ЗаменитеX
на код вашей клавиши, например67
для F1:xmodmap -e "keycode 67 = NoSymbol" # F1 xmodmap -e "keycode 68 = NoSymbol" # F2 xmodmap -e "keycode 69 = NoSymbol" # F3 ...
Для всех F1-F12, команды будут выглядеть следующим образом:
xmodmap -e "keycode 67 = NoSymbol" # F1 xmodmap -e "keycode 68 = NoSymbol" # F2 xmodmap -e "keycode 69 = NoSymbol" # F3 xmodmap -e "keycode 70 = NoSymbol" # F4 xmodmap -e "keycode 71 = NoSymbol" # F5 xmodmap -e "keycode 72 = NoSymbol" # F6 xmodmap -e "keycode 73 = NoSymbol" # F7 xmodmap -e "keycode 74 = NoSymbol" # F8 xmodmap -e "keycode 75 = NoSymbol" # F9 xmodmap -e "keycode 76 = NoSymbol" # F10 xmodmap -e "keycode 95 = NoSymbol" # F11 xmodmap -e "keycode 96 = NoSymbol" # F12
-
Автоматизация запуска: Для автоматизации действий после перезагрузки системы, создайте файл
.Xmodmap
в вашем домашнем каталоге и добавьте в него все командыxmodmap
:touch ~/.Xmodmap
Затем откройте его в текстовом редакторе и вставьте команды. Убедитесь, что файл
.Xmodmap
загружается автоматически при входе в систему, добавив следующую строку к вашему файлу конфигурации (например,.xinitrc
или.xprofile
):xmodmap ~/.Xmodmap
Использование xkb
Если xmodmap
не дает желаемого результата, можно попробовать изменить конфигурацию xkb
.
-
Редактирование файлов xkb: Откройте файл
/usr/share/X11/xkb/symbols/pc
с помощью текстового редактора с правами суперпользователя:sudo nano /usr/share/X11/xkb/symbols/pc
-
Настройка клавиш: Найдите строки, которые определяют функциональные клавиши (обычно они начинаются с
key <FK01>
,key <FK02>
и т.д.). Измените их, чтобы они выглядели следующим образом:key <FK01> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F1 key <FK02> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F2 key <FK03> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F3 key <FK04> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F4 key <FK05> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F5 key <FK06> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F6 key <FK07> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F7 key <FK08> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F8 key <FK09> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F9 key <FK10> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F10 key <FK11> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F11 key <FK12> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; // F12
- Перезапуск X-сессии: После изменения файла конфигурации необходимо перезапустить X-сессию, чтобы изменения вступили в силу. Это можно сделать, выйдя из системы и войдя снова или перезагрузив компьютер.
Примечания
- Некоторые ноутбуки могут иметь аппаратные переключатели для функциональных клавиш, которые игнорируют программные изменения. В таких случаях проверьте настройки BIOS.
- Имейте в виду, что изменения, сделанные с помощью
xmodmap
, могут быть перезаписаны при изменении конфигураций, связанных с графическими средами (например, GNOME, KDE).
Следуя этим шагам, вы должны успешно отключить функциональные клавиши на вашей системе Linux.