программирование клавиатуры

Discussion in 'WASM.OS.DEVEL' started by abcd008, Jun 2, 2010.

  1. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    До недавнего времени я все понимал, пока не наткнулся на проблему со скан-кодами.
    во всех доках режим 2 стандартный. Но все пишут разные скан-коды.
    Например: ESC у одних 0x1-0x81, у других 0x76-0xf0 0x76.
    Как разобраться
     
  2. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Смотри оригинальные доки от IBM на PS/2
    Правильный второй.
     
  3. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    у Microsoft написано что по умолчанию набор 1.
    а у меня клава набор 2 по умолчанию и скан для esc 0x1-0x81
     
  4. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    даже в книге программирование на аппаратном уровне скан-коды esc 0x1-0x81
     
  5. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    Посмотрел на IBM у них вообще esc 0x8-0x28

    как сделать универсальный драйвер, чтоб он сам понимал какая раскладка?
     
  6. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    abcd008
    Очки протри. У них ESC.
    набор 1 0x1-0x81,
    набор 2 0x76-0xf0 0x76.
    набор 3 0x08-0xf0 0x08.
     
  7. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Выши было от IBM.
    У майкрософт Escape
    набор 1 0x01-0x81
    набор 2 0x76-0xF0 0x76
     
  8. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    ты не понял . я на своей клаве включил набор 2 и у меня esc 0x1 а не 0x76.

    и на всех сайтах пишут по разному. у одних по умолчанию набор 1, у других 2.
    Третии вообще что скан коды преобразуются для совместимости из AT(2) в XT(1).
    и они наверно правы. Но как узнать в каком режиме клава (1,2 или 3) или вообще вэмуляции.
     
  9. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Ага только там не сказанно к какому набору принадлежит. Там написанно что это относится к XT, а он был до AT это был первый 1 набор. У IBM где-то про это тоже написанно.
    Вобще автор писал книжку в спешки. Так что особо ей я не доверяю.
     
  10. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    Зато пока искал нарыл доки на тачпад и трекбол от ibm.

    Да походу режим определяется по keyboard ids. - http://www.scs.stanford.edu/09wi-cs140/pintos/specs/kbd/scancodes-9.html#keyboardid
     
  11. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    abcd008
    А контроллер 8042 на что настроен? На эмуляцию или нет?
     
  12. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    а как его настраивают? он вроде всегда одинаково работает
     
  13. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Нет.
    В регистре команд (controller command byte) не путать с портом команд.
    Bit6 : PC compatible mode Default is 1, means the scan code translation is on.
     
  14. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    я правильно понял. если бит 1 то сканкод как в XT
    если 0 то как в AT.
    заранее спасибо
     
  15. Vic3Dexe

    Vic3Dexe New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2009
    Messages:
    53
    Суть процесса: в клаве присутствует собственный контроллер (когда-то 8048, сейчас, ессно, аналоги). Он теоретически способен выдавать скан-коды в наборах 1, 2, 3 и по дефолту генерирует 2 (АТ).
    Но.
    8042 (который на маме в чипсете) занимается преобразованием этих сканов в набор XT (т.е. 1). Совместимость и все такое. Вот в его command byte, как правильно указал Pavia, надо эту лабуду выключить и будет вам 2 набор.
    8048 управляется через 60h (туда посылать команды и данные). 8042 управляется через 64h (команды) и 60h (данные команд, результаты выполнения).

    зы Как показывают тесты, моя клава (митсуми классик) вообще неспособна генерить что-либо, кроме 2 набора, т.е. включение set 1/3 ни к чему не приводит. Это я к тому, что клава может уметь самый минимум из того, что написано в доках. Кроме того, 8042 может эмулировать/скрывать/отключать отдельные "фичи" клавы, т.е. команды до 8048 могут вообще не доходить или доходить измененными и т.п.
     
  16. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    Спасибо. с этим я уже разобрался. Нашел хороший сайт.
    Там про разные клавы. но наткнулся еще на одну фишку. Некоторые клавы имеют дополнительные
    LEDS.
    Встречали ли Вы такие в наше время? Я видел только один раз лет 7 назад.
    И как определить что они есть? Ведь Keyboard id в основном возвращает тип(сколько кнопок 84,101,122) клавы.
     
  17. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    вот этот сайт http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html

    А есть у кого-нибудь книга - Gary J Konzak PC 8042 Controller, ISBN 0-929392-21-3.
    помогите найти
     
  18. Vic3Dexe

    Vic3Dexe New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2009
    Messages:
    53
    А никак. Как, впрочем, и дополнительные мультимедийные кнопки. Это зависит от производителя, и только он знает, как работать со своими нестандартными примочками. С другой стороны - много ли таких клав? Не думаю. Так нафига их вообще пытаться определить?
     
  19. Pavia

    Pavia Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 17, 2003
    Messages:
    2,409
    Location:
    Fryazino
    Коды для мультимедийных клавиш задокументированы. А если клава USB то нет ничего не возможного.
     
  20. abcd008

    abcd008 New Member

    Blog Posts:
    0
    Joined:
    Feb 8, 2009
    Messages:
    616
    Я с тобой не соглашусь. только что проверил:
    отключил acpi через порты
    выключил XLAT(6 бит)
    поставил режим сканкодов 2

    И все клавиши были как должны быть в таблице, при отпускании +F0-c
    Но клавиши mute volume + - выдают коды нажатия одни, а отпускания какие-то не понятные(без F0-c и не c+80h)

    Как быть. я их не нашел не в одной таблице сканкодов