Отношения раскладки клавиатуры и xmodmap

Это возможно. На самом деле можно совместно использовать область подкачки между совершенно другими операционными системами, пока Вы инициализируете область подкачки, когда Вы загружаетесь. Это раньше было относительно характерно для пространства свопа акций между Linux и Windows, назад когда это представило значительную часть Вашего жесткого диска.

Два ограничения приходят на ум:

  • Ose не могут работать одновременно (который Вы могли бы хотеть сделать с виртуальными машинами).
  • Вы не можете быть в спящем режиме одно из Ose при выполнении другого.

12
14.02.2016, 02:17
1 ответ

Существует два слоя здесь, КОД КЛАВИШИ к отображению KEYSYM и KEYSYM к текстовому отображению. Существует больше слоев при подсчете ядра которое должно отобразить Клавиатуру AT scancodes на КОД КЛАВИШИ XT-стиля или Клавиатуру USB код HID к КОДУ КЛАВИШИ. КОД КЛАВИШИ является просто 8-разрядным целым числом без знака, которое ядро Операционной системы передает серверу X11. Это может варьироваться между Операционными системами, такими как Linux и Солярис. На Linux эти КОДЫ КЛАВИШИ обычно являются тем же числом, используемым на старых клавиатурах компьютера XT. Более новые компьютеры с В, PS/2 или клавиатуры USB обычно просто отображают те клавиатуры на старый код XT для ключа для хранения жизни простой.

Необработанные коды клавиатуры, представляют ли они быть XT, В, PS/2 или USB физическое местоположение на клавиатуре. Клавиатура XT только отправляет единственное 8-разрядное число на нажатии или выпуске ключа. Q включают американскую/британскую клавиатуру XT, отправляет номер 16. На французской клавиатуре тот же самый физический ключ маркирован a, но это все еще отправляет 16. Это - более высокие слои в операционной системе, которые присваивают ему реальное значение. Когда клавиша отпускается на клавиатуре XT, тот же код клавиши отправляется плюс 128. Для этого примера, когда q нажимается, отправляются 16, но на выпуске, отправляется номер 142 (16+128). Клавиатуры AT используют scancodes, которые являются серией чисел и могут стать довольно длинными. Ключевые выпуски добавляют дополнительные коды. Например, scancode для Паузы является E1, 1D, 45, E1, 9D, C5. Большинство Операционных систем включая DOS, Windows, Linux, FreeBSD и BIOS вся карта scancodes в намного более простой XT-стиль scancodes. Это также сохраняет легче поддерживать более новые клавиатуры, которые используют различные коды, такие как Клавиатуры USB, которые отправляют коды HID. Все коды отображаются на том же непротиворечивом множестве кодов Операционной системой перед X11, или приложение видит их.

X11 незнаком с этой частью процесса, это просто получает КОД КЛАВИШИ от ядра и применяет его собственное отображение для преобразования того КОДА КЛАВИШИ в KEYSYM. Xmodmap является стандартным инструментом для управления тем отображением. Большая часть поведения отображения клавиатуры настраивается, но существует несколько особых случаев, таких как Num Lock, Переключатель режимов и Caps Lock / Блокировка Сдвига, которые трудно кодируются в X11. Другие аспекты как Сдвиг на самом деле настраиваются. Любой ключ может быть отображен для действия как сдвиг, в отличие от Переключателя режимов или Num Lock.

КОДЫ КЛАВИШИ представляют физические ключи, отправленные ядром Операционной системы. Каждый КОД КЛАВИШИ может отобразиться на 8 возможных KEYSYMs. Только 4 используют и иногда называют уровнями 1-4. Уровень 1 указывает KEYSYM, который печатается, когда никакие модификаторы не активны. Это часто строчные буквы и цифры. Модификаторами являются КОДЫ КЛАВИШИ, которые изменяют KEYSYM, сгенерированный другими КОДАМИ КЛАВИШИ, когда модификатор активен (нажатый или включенный.) Кодами клавиши модификатора также управляют через Xmodmap. Уровень 2 указывает KEYSYM, который будет отправлен, когда модификатор сдвига нажимается. Уровень 3 активируется каждый раз, когда Переключатель режимов KEYSYM был нажат. Уровень 4 активируется, когда и клавиша Shift и Переключатель режимов активны.

После того как KEYSYM был сгенерирован, это может быть интерпретировано непосредственно, но чаще всего будет преобразовываться для отправки текстовых сообщений. Не все KEYSYMs превращаются в текст или могут только влиять на будущий KEYSYM. Одним примером является Shift_L, конечно, который не имеет никакого текстового представления, но существует также много KEYSYMs, которые используются для Создания другого символа. Список их в моей системе находится под /usr/share/X11/locale/en_US.UTF-8/Compose. Одним таким примером является dead_acute KEYSYM, который при нажатии попытается преобразовать следующий KEYSYM в острую букву с диакритическим знаком. Существует стандартное отображение для того, чтобы превратить KEYSYMs в Unicode.

Теперь, когда все это было сказано, обратите внимание, что Xmodmap является устаревшим и заменяется XKB, который намного более сложен. Это влияет, как КОДЫ КЛАВИШИ отображаются на KEYSYMs, но не, как ядро генерирует КОДЫ КЛАВИШИ, ни как KEYSYMs преобразованы в текст или составлены, который является все еще тем же. XKB может быть отключен, восстановив поведение Xmodmap. Это также имеет слой совместимости для поддержки Xmodmap, но это может иметь проблемы, поскольку это не абсолютно совместимо. Правила XKB находятся под /usr/share/X11/xkb/ и намного более сложны. Существует некоторая хорошая документация в другом месте относительно того, как она генерирует раскладки клавиатуры для отображения КОДОВ КЛАВИШИ к KEYSYMs.

Что касается консоли Linux, это имеет свои собственные раскладки клавиатуры, которые хранятся в /usr/share/keymaps и загруженный loadkeys команда. Когда в BIOS и более ранних этапах загрузчика, включая GRUB2, отображение клавиатуры - то, к чему числу BIOS решает отобразить ключ.

24
27.01.2020, 19:55
  • 1
    Спасибо за большое объяснение и новую информацию. Вы знаете, какие приложения запущены в процессе начальной загрузки (выскочка или initscript), который принимает решение по клавиатуре и что происходит при входе в систему на этапе, я могу выбрать расположение. Какая программа взаимодействует с ним и где это хранится в файловой системе? После входа в систему xmodmap или xkb перезапишет раскладку по умолчанию, выбранную при процессе входа в систему? ответвление –  xralf 03.05.2011, 16:47
  • 2
    Контурная карта ядра, как я сказал, загружается loadkeys одним из init сценариев. grep loadkeys /etc/init.d/* показывает файл keymap.sh. X11 имеет свой собственный keymaping, который был традиционно загружен Xmodmap, работающим из одного из сценариев запуска Xsession. В наше время, причем XKB используется вместо Xmodmap, значение по умолчанию keymaping установлено или в Xorg.conf через различные опции Xkb или через HAL. Однажды или Gnome или менеджер по оформлению KDE загружаются, они могут загрузить свое собственное расположение через setxkbmap команда. Настольная среда пользователя могла бы также установить другое расположение на входе в систему. –  penguin359 04.05.2011, 08:10
  • 3
    я попробовал команду grep loadkeys /etc/init.d/* и locate keymap.sh и ничто не было найдено. Файл Xorg.conf не был найден также. Это зависит от моей версии Ubuntu, которая является 10.04? –  xralf 04.05.2011, 09:00

Теги

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