Блокировка клавиатуры консоли Linux нажатием CapsLock

467
Juergen

Консоль Ubuntu 14.04 LTS, работающая в VirtualBox в Win7, блокируется при нажатии Caps Lock: дальнейший ввод с клавиатуры не принимается, даже Alt+ CursorRightили Ctrl+ Alt+ Del(выдается из VirtualBox).
Редактировать: происходит только после замены Y и Z путем выдачи
echo -e keymaps 0-2,4-5,8,12 \\n keycode 21=z \\n keycode 44=y | loadkeys

Я могу разблокировать консоль и продолжить работу без проблем после выдачи reset 2>/dev/tty1из ssh-сессии.
Я даже могу выдать resetизнутри заблокированную консоль, используя gpm (нажатие средней кнопки мыши), когда resetкоманда находится в буфере gpm.

Воспроизводимый всегда и на любом /dev/tty<n>.

Тот же эффект в VirtualBox версий 4 и 5.
Кажется, что блокировка не происходит на стороне VirtualBox, потому что она может быть вылечена на стороне Linux.

Там нет различий в выводе stty -a < /dev/tty1до и после этого reset.

Другие vcs продолжают работать (chvt выдан из ssh), но после Alt+ F1заблокированная консоль все еще заблокирована: кажется, проблема должна быть расположена внутри кода виртуальной консоли.

Там нет сообщений, появляющихся /var/log/syslogили dmesgкогда эта проблема возникает (когда нажата CapsLock). Была одна невоспроизводимая проблема, которая, возможно, вызвана сохранением / восстановлением виртуальной машины и может быть не связана:

atkbd serio0: ложный NAK для isa0060 / serio0. Некоторая программа может пытаться получить доступ к оборудованию напрямую

в dmesg.

Как я могу отладить это?
В частности: Как найти разницу в состоянии консоли до и после сброса?

1
«Atkbd serio0», по-видимому, связан: «atkbd» - драйвер для клавиатуры ПК, а isa0060 - это порт ввода-вывода 0x60, который фактически используется контроллером клавиатуры AT или PS / 2. Вы можете попытаться переключить виртуальную машину на виртуальную клавиатуру USB, чтобы увидеть, если она что-то изменит. Не уверен, что есть опция графического интерфейса, я сделал это (на моей виртуальной машине с именем «Ubuntu») с помощью этой команды: `" c: \ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe "modifyvm Ubuntu --keyboard usb`. Возможно, вам придется адаптировать его для вашей виртуальной машины. Если вы хотите переключиться обратно на клавиатуру PS / 2, замените `usb` на` ps2`. Ale 8 лет назад 0
Пробовал это: ничего не меняет. Перезагрузка больше не воспроизводит сообщение atkbd: кажется, это было вызвано сохранением / восстановлением виртуальной машины. Но я обнаружил, что блокировка происходит только после `echo -e keymaps 0-2,4-5,8,12 \\ n keycode 21 = z \\ n keycode 44 = y | loadkeys`, которые я обычно делаю для своей персональной раскладки клавиатуры. Juergen 8 лет назад 0
Завтра я проверю, воспроизводится ли это на реальном ПК с Ubuntu без VirtualBox. Juergen 8 лет назад 0

1 ответ на вопрос

0
Ale

Попробуйте изменить команду на:

echo -e keymaps 0-127 \\n keycode 21=z \\n keycode 44=y | loadkeys

Я мог бы воспроизвести проблему на физический компьютер под управлением Ubuntu 14.04 LTS (хотя команда не имеет какие - либо другие эффекты, потому что швейцарская французская раскладка я использую уже есть Y и Z в таком положении), и изменяя 0-2,4-5,8,12к 0-127в команде, кажется, решить Это. Я не совсем понимаю, почему она зависает с другой командой, но я интуитивно понимаю, что указанные диапазоны ключей не соответствуют существующим в таблице ключей, таким образом, отменяется определение состояния всех ключей, когда включен Caps Lock (при выполнении этой команды также создается проблема: echo -e keymaps 0-2,4-5,8,12 | loadkeys). Не уверен, что это ошибка или предполагаемая функция.

Да, это работает. Спасибо и извините за задержку. Juergen 8 лет назад 0
Но мой вопрос все еще не полностью отвечен: как я могу отладить это? В частности: Как найти разницу в состоянии консоли до и после сброса? Juergen 8 лет назад 0

Похожие вопросы