Клавиша блокировки прокрутки не работает в Fedora/KDE

У меня есть компьютер с Fedora 16 и KDE. Он подключен через KVM-переключатель к монитору с другим компьютером, и для переключения между компьютерами коммутатор использует Scroll Lock + Scroll Lock.

Проблема в том, что по какой-то причине кнопка Scroll Lock не работает в Fedora/KDE. Num Lock и Caps Lock работают. Команда xset q говорит, что он выключен, и xset led named "Scroll Lock" действительно включается, но я не могу "дважды щелкнуть".

Как я могу проверить, почему кнопка не работает, и решить проблему? Я искал везде и не нашел никого с этой конкретной проблемой.

2 ответа

Однажды я на время выдернул свои волосы, пытаясь понять это. По-видимому, блокировка прокрутки по умолчанию не определяется X, поэтому вы должны заставить ее распознавать и обнаруживать эту клавишу, если вы находитесь в этой лодке.

  1. Откройте терминал.

  2. Запустите xmodmap -pm, чтобы проверить, какие ключи мода доступны. Обычно есть хотя бы один. В моем случае был доступен мод3. Поэтому я бы запустил следующее (ваш доступный ключ мода может отличаться, поэтому используйте этот номер при запуске следующей команды).

  3. Запустите xmodmap -e 'add mod3 = Scroll_Lock', и клавиша Scroll Lock должна начать работать в X.

  4. Чтобы сделать это постоянным, вы можете добавить элемент запуска в вашем оконном менеджере / среде или использовать другой метод, например, поместить его в файл.xinitrc или создать файл в xinitrc.d (если они все еще работают для вашего дистрибутива Linux). или используйте другой метод, если они этого не делают).

ОБНОВЛЕНО: Я только что заметил, что после некоторых обновлений мой предыдущий метод вызова xmodmap с использованием элемента автозагрузки перестал работать. Я использовал дополнение к настройкам Startup Applications. Поскольку этот способ сделать это теперь добавлен к другим способам, с помощью которых эта команда была нарушена, я добавлю следующее для Fedora 21 и более поздних версий. Это также должно работать для ряда других дистрибутивов, но YMMV.

Чтобы сделать вышеуказанное постоянным, сделайте следующее:

  1. Используйте ваш доступный номер мода, полученный из вышеупомянутого, если он отличается от мода 3 ниже, или проверьте еще раз, чтобы увидеть, какой из них доступен, запустив:

xmodmap

Мы будем предполагать, что он дал mod3 в качестве доступного слота для целей данного руководства.

  1. Создайте скрипт в каталоге / usr / local / bin с именем scrlkon.

sudo touch /usr/local/bin/scrlkon

  1. Откройте файл, который вы только что создали (вы можете использовать ваш любимый текстовый редактор вместо nano, если хотите).

sudo nano /usr/local/bin/scrlkon

  1. Поместите в файл следующий текст:

#!/usr/bin/sh

sleep 4

exec xmodmap -e 'add mod3 = Scroll_Lock'

exit

  1. Сохраните файл и сделайте его исполняемым:

sudo chmod +x /usr/local/bin/scrlkon

  1. Вызовите скрипт из элемента автозагрузки.

Вы можете назвать этот новый элемент автозапуска как угодно, пока он вызывает scrlkon

  1. Перезагрузите компьютер, если он не запускается сразу после выхода и повторного входа.

Примечание. При необходимости вы можете настроить число спящих более 4. Вызов функции Sleep необходим для противодействия тому, что отключает клавишу mod или отключает команду xmodmap при входе в систему. 4 - хорошее число, так как после входа в систему это не займет много времени. Но если он все-таки что-то отключил в среде Fedora (по какой-то причине это плохо работает в mate-desktop), просто увеличивайте число в спящем режиме, пока не получите последовательно включенный ключ. Это должно сделать это.

Альтернативой тому, как сделать это описанным выше способом (если вы не хотите создавать сценарий или добавлять другие файлы), является замена следующего в поле "Команда" элемента "Программа запуска" на альтернативные шаги 2–6:

sh -c "sleep 15; exec xmodmap -e 'add mod3 = Scroll_Lock'"

Кажется, это тоже работает. Просто убедитесь, что одинарные и двойные кавычки являются прямыми, а не фигурными кавычками.

У меня есть аналогичный KVM-переключатель, и, поскольку я не хочу, чтобы что-то работало в фоновом режиме, тыкатьпериодически и еще не менял раскладку X, моим решением был этот скрипт:

      #!/bin/bash
# Toggle the KVM switch programmatically by toggling the Scroll Lock LED
# Based on https://askubuntu.com/a/546989/23552

SLEEP=0.5
LEDNAME="Scroll Lock"

echo "Switching..."
xset led named "$LEDNAME"
sleep $SLEEP
xset -led named "$LEDNAME"
sleep $SLEEP
xset led named "$LEDNAME"
sleep $SLEEP
xset -led named "$LEDNAME"

(Да, технически это четырехкратное нажатие клавиши. Я не уверен, что моя задержка слишком короткая, но я обнаружил, что двойное нажатие ненадежно, и это работает, так что... на данный момент достаточно хорошо.)

Затем, чтобы переключиться с моего повседневного драйвера на игровой автомат «без фоновых задач, которые могут заикаться», построенный из подержанных деталей, я просто нажал F12, чтобы вытащить Yakuake, и набрал.

Другие вопросы по тегам