Прилипание кнопки Backtick (серьезный акцент)

У меня Ubuntu 12.04 работает на виртуальной машине Virtual Box в моей 32-битной системе Windows 7. Он работал отлично, за исключением того, что кнопка backtick / tilde придерживается (не физически).

Когда я нажимаю кнопку возврата, она повторяется до тех пор, пока не будет нажата другая кнопка ввода. Поэтому, если я нажимаю пробел, когда повторяется обратный тик, он останавливается, но если я нажимаю сдвиг, когда он повторяется, обратный тик превращается в тильду, и тильда продолжает повторяться, пока я не отпущу клавишу Shift (в этот момент это снова и снова повторю)

Такое поведение прилипания происходит только с ключом backtick, и только в моей виртуализации Ubuntu, а не в Windows.

Я попробовал клавиатуру моего ноутбука и внешнюю клавиатуру USB, и проблема возникает на обоих. Обе клавиатуры, которые я пробовал, имеют японскую раскладку 106/109, но я использую их с английским (США) профилем 101. Когда я ссылаюсь на клавишу обратного вызова выше, я имею в виду, где она находится на американском макете.

Если я использую японский профиль, ключ в этом месте (местоположение обратного удара США) все еще остается, но он больше не отображается как ключ обратного удара.

Есть какие-нибудь мысли о том, что может быть причиной этого и возможных решений?

Я много искал, но пока не нашел никакой помощи. Любая помощь очень ценится.

Дополнительная информация: Я загрузил Linux с USB-ключа и обнаружил, что у него нет этой проблемы с застрявшим ключом. Так что, похоже, что-то с Virtual Box.

3
задан 26 September 2012 в 08:01

1 ответ

Я знаю об этой проблеме. У меня есть ноутбук с Windows, купленный в Японии, и я столкнулся с проблемой застревания тильды.

Как вы знаете, клавиша тильды используется в японских окнах для переключения IME на японском языке, а на японских клавиатурах есть маркировка клавиши для этого эффекта.

Я немного углубился в проблему, но потерял мотивацию. Краткое изложение моих скудных выводов в основном таково:

  • VirtualBox в окне виртуальной машины не фиксирует обычные события Windows WM_KEY. Скорее, он регистрирует низкоуровневую клавиатуру . Ищите вхождения LowLevelKeyboardProc в в этом исходном файле VirtualBox .

  • Я подозреваю, что в японской Windows из-за своей особой роли ключ тильды не генерирует событие up при отпускании ключа. Поскольку VirtualBox необходимо точно симулировать коды сканирования для виртуализированной системы, похоже, что тильда удерживается.

  • Несмотря на то, что я смог отслеживать события, поступающие в окна VirtualBox, используя Spy ++, низкоуровневые события не видны. Пользовательский интерфейс конфигурации VirtualBox содержит обычные ключевые события, но окна машины - абсолютно ничего. Кажется, что даже горячие клавиши пользовательского интерфейса для самого VirtualBox (не предназначенного для машины) обрабатываются через этот низкоуровневый хук.

Таким образом, проверка этой гипотезы потребует написания примера программы, которая таким же образом перехватывает события клавиатуры и показывает, что не существует соответствующего «вверх» для «вниз» для клавиши тильды. Несмотря на то, что у меня есть Visual Studio, и это не сложно, это слишком много усилий для решения этой глупой проблемы.

В любом случае, несмотря на незавершенное расследование, я маловероятно, что это проблема Ubuntu.

0
ответ дан 26 September 2012 в 08:01

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

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