Недавно я приобрел клавиатуру с подсветкой, которая была разработана таким образом, что клавиша Scroll Lock использовалась для переключения подсветки. Я быстро обнаружил, что Cinnamon не реагирует должным образом при нажатии клавиши Scroll Lock. Первоначально я думал, что подсветка клавиатуры была DOA, потому что все остальное работало из коробки. После перезагрузки я обнаружил, что перед запуском Xorg я смог успешно переключать подсветку с помощью клавиши Scroll Lock. Затем, еще раз, после запуска Xorg (и, следовательно, cinnamon_session), эта функциональность снова перестала работать.
Чтобы заставить работать подсветку после запуска Xorg, я был вынужден выполнить команду: xset led named "Scroll Lock"
чтобы включить и отключить эту функцию.
После небольшого исследования я наткнулся на программу, которая вызвала информацию xev
о событиях, связанных с ключом, в терминал после его запуска. После нажатия клавиши Scroll Lock терминал заполнялся этой информацией:
Событие KeyPress, серийный номер 34, синтетический номер NO, окно 0x2c00001, корень 0x2df, subw 0x0, время 2609824, (410,0), корень: (1724,142), состояние 0x0, код ключа 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString дает 0 байтов: XmbLookupString дает 0 байтов: XFilterEvent возвращает: False
Событие KeyRelease, серийный номер 37, синтетический номер NO, окно 0x2c00001, корень 0x2df, subw 0x0, время 2609912, (410,0), корень: (1724,142), состояние 0x0, код ключа 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString дает 0 байтов:
Итак, я знаю, что ключевое событие отправляется ядру.
Также, что интересно, я наблюдал странное поведение в терминале (еще до запуска Xorg или Cinnamon) и при использовании Scroll Lock. А именно, в этот момент моя подсветка переключалась, как и ожидалось, но когда Scroll Lock был включен, я ничего не печатал на экране. После отключения Scroll Lock все, что я написал, было немедленно сброшено в терминал, как если бы оно было ранее буферизовано.
tl; dr. Как обстоят дела с Scroll Lock и Xorg?
источник
Ответы:
Я не знаком с Cinnamon, но должна быть возможность включить клавишу Scroll Lock.
Во-первых, нам нужно проверить, есть ли у вас запасной слот для модификатора клавиатуры. Бегать:
Это напечатает список ваших текущих настроек модификатора. Надеемся, что в одной из этих строк не будет никаких ключей в списке; в общем то будет
mod3
. Предполагая, что это так, вы можете включить Scroll Lock с помощью этой команды:Теперь светодиод Scroll Lock должен реагировать на нажатия клавиш Scroll Lock.
Если это сработает, вы, вероятно, захотите, чтобы X делал это автоматически при каждом запуске. Есть разные способы сделать это: это может быть сделано для каждого пользователя, но для чего-то подобного, я думаю, имеет смысл установить его глобально.
Но я никогда не делал этого раньше себя, поэтому я бы лучше проверил это, прежде чем давать более подробную информацию. :)
OK. Метод, который я пытался активировать, этот modmap глобально не работает для меня в KDE. :( Но активация в моем домашнем каталоге, похоже, работает нормально.
Создайте файл с именем
.Xmodmap
в вашем домашнем каталоге, содержащий эту строку:Самый простой способ сделать это:
Теперь перезапустите X (выйдите из системы и войдите снова). Надеюсь, ваша клавиша Scroll Lock будет работать. Если это не так, пожалуйста, дайте мне знать.
источник
Нашел постоянный путь после долгой ночи с большим количеством полуготовых растворов.
Добавьте следующую строку в
xkb_symbols "basic" {
раздел. не беспокойтесь, если этой второй строки нет, она есть только для некоторых языков и не была для нас в моей системе.Возможно, вам придется сделать то же самое в других макетах, если вы переключаетесь между языками
Также есть кеш, где живут макеты xkb. Вы должны очистить его перед перезапуском X-сервера, чтобы проверить новые файлы символов клавиатуры.
источник
Поскольку они Scroll Lockмогут мешать сочетаниям клавиш, когда они активны (по имени F12, Ctrl+ Spaceне будет работать должным образом), я решил сопоставить Scroll Lockклавишу с ручным запуском
xset
, переключая состояние светодиода относительно его предыдущего состояния.Я создал исполняемый скрипт с именем
toggle_keyb_led.sh
:Это анализирует вывод
xset q
, сопоставляя строку сLED mask
.Примечание 1 : Если у вас не работает, уточните,
xset -led; xset q | grep 'LED'
какое значение имеет текущая маска.Примечание 2 : Некоторые пользователи должны запустить,
xset led 3
чтобы активировать свет. В этом случае перепишите скрипт выше.Затем вы можете запустить этот сценарий как пользовательский ярлык, используя вашу рабочую среду, как (здесь с Cinnamon):
источник