На самом деле это почти не связано с аппаратной частью клавиатуры. Клавиатуры USB и PS/2 в этом отношении работают одинаково. В оборудовании нет ничего , что делало бы так -так называемые "клавиши-модификаторы" особенными. Любая клавиша , за одним исключением, может быть клавишей-модификатором или нет.
То, что является клавишей-модификатором, определяется раскладкой клавиатуры , используемой в программном обеспечении в операционной системе. Аппаратное обеспечение просто отправляет то, что действует (, замалчивая детали протокола ввода USB HID, фактически представляющего собой растровое изображение нажатых в данный момент клавиш, которое частично закодировано во внутреннюю -внешнюю форму, чтобы сохранить ее короткой )ключ вниз и ключевые события.
Например, в раскладке клавиатуры FreeBSD можно найти такие строки, как эта:
# alt # scan cntrl alt alt cntrl lock # code base shift cntrl shift alt shift cntrl shift state # ------------------------------------------------------------------ … 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O … 042 lshift lshift lshift lshift lshift lshift lshift lshift O … 054 rshift rshift rshift rshift rshift rshift rshift rshift O … 056 lalt lalt lalt lalt lalt lalt lalt lalt O … 083 del '.' '.' '.' '.' '.' boot boot N …
029, 042, 054 и 056 — это коды клавиатуры (, приведенные в общую систему из номеров использования USB HID и номеров скан-кодов PS/2 ), но это lctrl
, lshift
, rshift
иlalt
действия на карте, определяющие эти клавиши как клавиши-модификаторы. Определите их с другими действиями и переместите эти действия в другое место, как это действительно делают некоторые из -из -карт -коробки FreeBSD, а совершенно другие ключи являются модификаторами.
(Исключением из правила является клавиша Fn , которая является единственным модификатором, реализованным аппаратно. Он реализован полностью аппаратно и вообще не виден программным обеспечением . Он даже не генерирует никаких событий по сети. На самом деле есть еще один аппаратный модификатор. Это не ключ. Это состояние светодиода NumLock.)
Действие , когда оно является действием модификатора, таким как это, изменяет текущее состояние модификатора ,который (просто говоря )представляет собой набор флагов, записанных в операционной системе, которые фиксируют, какие модификаторы в данный момент «включены». Как видно из заголовков столбцов на карте клавиатуры, текущее состояние модификатора — с точки зрения флагов «включено» для состояний «shift», «altgr», «control» и «alt» — влияет на действие дальнейшие нажатия клавиш сопоставляются.
В строке с кодом ключа 083, который выгравирован . del на цифровой клавиатуре, вы можете видеть, что только если текущее состояние модификатора не ниже «alt cntrl», сопоставленное действие будет boot
.
Драйверы клавиатуры активируют действия-модификаторы при получении события нажатия клавиши или отпускания клавиши . Однако другие действия вступают в силу только после нажатия клавиши нажатия или автоповтора . Так обстоит дело, например, с действием boot
. Только если происходит нажатие клавиши или автоповтор для клавиши 083 и , текущее состояние модификатора уже "alt cntrl"/"alt cntrl shift", происходит действие boot
.
Из этого должно быть очевидно, что для перевода текущего состояния модификатора операционной системы в это состояние, в первую очередь, действия lalt
и lctrl
/ rctrl
должны уже произойти . ], с помощью первого нажатия клавиш, которые им назначены. (Система FreeBSD также позволяет модификатор блокировать в дополнение к обычной системе модификаторов сдвигов , хотя только две раскладки клавиатуры из -из -поля -использовать их вообще. Стандарт клавиатуры ISO также допускает защелки-модификаторы , но FreeBSD не предоставляет этот механизм.)
FreeBSD, как я уже сказал, является здесь примером. Но большинство операционных систем с устройствами PS/2 или USB HID,от MS/PC -DOS (, где текущим состоянием модификатора является хорошо -известный байт в памяти )до Windows NT (, где раскладки клавиатуры представляют собой библиотеки DLL режима ядра -, содержащие код и данные ), работают примерно так.
console-fb-realizer
. справочные страницы набора инструментов nosh. atkbd
. Справочные страницы FreeBSD. kbdmap
. §5. Справочные страницы FreeBSD. Пытаюсь решить эту проблему самостоятельно. Понижение версии nvidia может решить проблему со звуком. Но тогда вам также придется понизить версию ядра (или, по крайней мере, я сделал ), так как ваш дисплей снова сломается, если вы этого не сделаете. Моя проблема в том, что Steam не работает после понижения версии. Ниже приведена команда, которая должна работать для понижения версии.sudo pacman -U /var/cache/pacman/pkg/nvidia-440.36-5-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-utils-440.36-1-x86_64.pkg.tar.xz /var/cache/pacman/pkg/linux-5.4.2.arch1-1-x86_64.pkg.tar.xz
Кроме того, передача звука через что-либо, кроме вашего графического процессора, должна избежать проблемы (, такой как наушники напрямую на материнскую плату, по крайней мере, в моем случае это работает ).
Возникла та же проблема: временное решение откатывается к следующим пакетам
nvidia
nvidia-utils
lib32-nvidia-utils
linux
linux-headers
У меня была такая же проблема с моей видеокартой GTX1060 6 ГБ после обновления моей системы.
К счастью, я устанавливаю драйвер Nvidia LTS для Arch Linux, после чего он возвращается в нормальное состояние, если вы попробуете сделать это следующим образом.
$ sudo pacman -S nvidia-lts
После этого перезагрузите систему. Удачи!