До недавнего времени я все понимал, пока не наткнулся на проблему со скан-кодами. во всех доках режим 2 стандартный. Но все пишут разные скан-коды. Например: ESC у одних 0x1-0x81, у других 0x76-0xf0 0x76. Как разобраться
у Microsoft написано что по умолчанию набор 1. а у меня клава набор 2 по умолчанию и скан для esc 0x1-0x81
Посмотрел на IBM у них вообще esc 0x8-0x28 как сделать универсальный драйвер, чтоб он сам понимал какая раскладка?
ты не понял . я на своей клаве включил набор 2 и у меня esc 0x1 а не 0x76. и на всех сайтах пишут по разному. у одних по умолчанию набор 1, у других 2. Третии вообще что скан коды преобразуются для совместимости из AT(2) в XT(1). и они наверно правы. Но как узнать в каком режиме клава (1,2 или 3) или вообще вэмуляции.
Ага только там не сказанно к какому набору принадлежит. Там написанно что это относится к XT, а он был до AT это был первый 1 набор. У IBM где-то про это тоже написанно. Вобще автор писал книжку в спешки. Так что особо ей я не доверяю.
Зато пока искал нарыл доки на тачпад и трекбол от ibm. Да походу режим определяется по keyboard ids. - http://www.scs.stanford.edu/09wi-cs140/pintos/specs/kbd/scancodes-9.html#keyboardid
Нет. В регистре команд (controller command byte) не путать с портом команд. Bit6 : PC compatible mode Default is 1, means the scan code translation is on.
Суть процесса: в клаве присутствует собственный контроллер (когда-то 8048, сейчас, ессно, аналоги). Он теоретически способен выдавать скан-коды в наборах 1, 2, 3 и по дефолту генерирует 2 (АТ). Но. 8042 (который на маме в чипсете) занимается преобразованием этих сканов в набор XT (т.е. 1). Совместимость и все такое. Вот в его command byte, как правильно указал Pavia, надо эту лабуду выключить и будет вам 2 набор. 8048 управляется через 60h (туда посылать команды и данные). 8042 управляется через 64h (команды) и 60h (данные команд, результаты выполнения). зы Как показывают тесты, моя клава (митсуми классик) вообще неспособна генерить что-либо, кроме 2 набора, т.е. включение set 1/3 ни к чему не приводит. Это я к тому, что клава может уметь самый минимум из того, что написано в доках. Кроме того, 8042 может эмулировать/скрывать/отключать отдельные "фичи" клавы, т.е. команды до 8048 могут вообще не доходить или доходить измененными и т.п.
Спасибо. с этим я уже разобрался. Нашел хороший сайт. Там про разные клавы. но наткнулся еще на одну фишку. Некоторые клавы имеют дополнительные LEDS. Встречали ли Вы такие в наше время? Я видел только один раз лет 7 назад. И как определить что они есть? Ведь Keyboard id в основном возвращает тип(сколько кнопок 84,101,122) клавы.
вот этот сайт http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html А есть у кого-нибудь книга - Gary J Konzak PC 8042 Controller, ISBN 0-929392-21-3. помогите найти
А никак. Как, впрочем, и дополнительные мультимедийные кнопки. Это зависит от производителя, и только он знает, как работать со своими нестандартными примочками. С другой стороны - много ли таких клав? Не думаю. Так нафига их вообще пытаться определить?
Я с тобой не соглашусь. только что проверил: отключил acpi через порты выключил XLAT(6 бит) поставил режим сканкодов 2 И все клавиши были как должны быть в таблице, при отпускании +F0-c Но клавиши mute volume + - выдают коды нажатия одни, а отпускания какие-то не понятные(без F0-c и не c+80h) Как быть. я их не нашел не в одной таблице сканкодов