Индикатор Caps Lock не работает на консоли Linux

Индикатор Caps Lock не работает на консоли Linux

Когда я переключаюсь на TTY и включаю Caps Lock, светодиод Caps Lock на моей клавиатуре не включается. На X все работает нормально. Когда я активирую Caps Lock, а затем переключаюсь на TTY и нажимаю Caps Lock (на TTY), светодиод остается включенным (хотя TTY отслеживает Caps Lock самостоятельно). Так что, похоже, TTY вообще не обращают внимания на светодиод.

Можно ли как-то включить светодиод на телетайпах? Очень раздражает, когда приходится что-то печатать, не зная, активирован ли Caps Lock.

Я использую Debian jessie (часто обновляется), архитектура: amd64

решение1

Это давний Debianошибка. Кажется, это связано с базовым ядромошибкачто уже давно исправлено. Проблема, похоже, была в том, что это Caps_Lockне работало для не-ASCII символов, поэтому обходным решением было сопоставить Shift_Lockили CtrlL_Lockс клавишей Caps Lock.

На стороне Debian проблема создается с помощью , ckbcompкоторая используется console-setupдля создания раскладки клавиатуры консоли из описания клавиатуры XKB. Обратите внимание, что исходный код, указанный в отчете об ошибке using , Shift_Lockпохоже, был заменен другим кодом, который переключается на CtrlL_Lockвместо этого. Если вам интересно, вы можете поискать использование переменной broken_capsв ckbcompскрипте Perl.

Я понятия не имею, нужен ли этот код по какой-либо причине, возможно, стоит поднять отчет об ошибке. Однако обходной путь — вставить следующую строку, /etc/kbd/remapи это должно исправиться после перезагрузки:

s/CtrlL_Lock/Caps_Lock/

Или для временного решения проблемы до следующей перезагрузки выполните в сеансе следующее tty:

dumpkeys | sed s/CtrlL_Lock/Caps_Lock/ | sudo loadkeys

Обновлять

Кажется, что /etc/kbd/remapэто используется только если setupconнедоступно. Лучший способ обойти это просто вставить следующую строку /etc/rc.local:

dumpkeys | sed s/CtrlL_Lock/Caps_Lock/ | loadkeys

решение2

Я нашел решения для Debian 6 и Debian 7.

Дебиан 6

В конце файла поместите следующее /etc/console-setup/remap.inc:

keycode 58 = Caps_Lock

Тогда бегиsetupcon

Дебиан 7

В конце скрипта добавьте следующее /etc/default/keyboard:

dumpkeys | sed -e "s/keycode  58 = CtrlL_Lock/keycode  58 = Caps_Lock/" | \
   loadkeys 2>&1 >/dev/null

Тогда бегиsetupcon

Обратите внимание, что между кодом клавиши и 58 есть два пробела. Перенаправление /dev/nullпросто подавляет раздражающий вывод на консоль.

Связанный контент