Считывание позиционного кода клавиши

Тема в разделе "WASM.BEGINNERS", создана пользователем OHO, 19 апр 2009.

  1. OHO

    OHO New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2009
    Сообщения:
    5
    Если кто знает, то подскажите, пожалуйста. Чем отличается сканкод клавиши от позиционного кода клавиши? И как считать позиционный код?
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    А что такое позиционный код применительно к клавиатурам ПК? Что-то не слышал, чтобы сей термин употреблялся...
     
  3. OHO

    OHO New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2009
    Сообщения:
    5
    Каждое нажатие или отпускание клавиши вызывает прерывание. Программа, обслуживающая это прерывание, читает scan-код и преобразует его в два байта. Первый байт содержит символьный ASCII код, а второй - позиционный код. Первый байт получается преобразованием позиционного кода клавиши по определённой процедуре в зависимости от состояния клавиш Shift, Alt, Ctrl, Caps Lock и Num Lock, от режима латиница или кириллица и от раскладки клавиатуры в символьный (ASCII) код. Для специальных клавиш, например функциональный или клавиш управления курсором, код ASCII равен нулю. Это позволяет программе различать обычные печатные символы и нажатия других клавиш.
    Так вот и остается вопрос, а как же этот позиционный код считать?
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    А, вот о чём речь... До меня и не дошло, сразу мысля в дебри полезла (насчёт физического положения клавиши в матрице). Помнится, функции BIOS сообщают как раз двухбайтовый код клавиши -- как раз ASCII-код и этот самый позиционный, причём в случае спецклавиш вроде стрелок ASCII-код будет равен нулю. Так что можно глянуть эти функции (мне самому сейчас смотреть затруднительно, потому что на выезде, а не дома). Ну а если речь о Винде, то глянуть, в каком именно виде она передаёт код нажатой клавиши в событиях, связанных с клавиатурой.
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    http://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx
     
  6. SL7549

    SL7549 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2009
    Сообщения:
    17
    вероятно позиционный код это код клавиши без учета регистра и раскладки (то есть было нажато shift+ш в русской раскладке то этот код будет "i", а ascii код - "Ш", а если например нажато было Num1 то этот код будет специальный код этой клавиши, а ascii код будет или "1" или 0x00 в зависимости от num lock'а). позиционный код из scan кода получается по специальной таблице (в гугле нашелся пример таблицы http://www.cyberdengi.com/FoundationsOfAssembler/Scan.html)
     
  7. OHO

    OHO New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2009
    Сообщения:
    5
    ok, спасибо