Чтение/Запись в порты

Тема в разделе "WASM.WIN32", создана пользователем XPiS, 30 мар 2006.

  1. XPiS

    XPiS New Member

    Публикаций:
    0
    Регистрация:
    30 мар 2006
    Сообщения:
    13
    Есть у меня в ноутбуке клавиша Fn. Очень нужно сделать например сочетание Fn+E. Перехватываю с помощью хуков и DLL весь ввод - клавиша упорно туда не попадает. Потом нашел в спецификации:



    The following pseudo code shows how to get back the status of the Fn key.



    DISABLE INTERRUPTS

    WRITE 0x8E TO PORT 0xE4

    READ byte FROM PORT 0xE5

    ENABLE INTERRUPTS



    The byte held in the variable byte indicates the status of the Fn key.



    Вот исходник для линукса:



    /*

    * Read the Fn key status

    */

    static int tosh_fn_status(void)

    {

    unsigned char scan;

    unsigned long flags;



    if (tosh_fn!=0) {

    scan = inb(tosh_fn);

    } else {

    save_flags(flags);

    cli();

    outb(0x8e, 0xe4);

    scan = inb(0xe5);

    restore_flags(flags);

    }



    return (int) scan;

    }



    Интуитивно понятно. НО как это сделать в Windows?

    Как мне перехватить эту клавишу?
     
  2. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Аналогично, но с использованием драйвера. Попробуй взять за основу приложенный (хм, как-бы его по политкорректней назвать) фильтр клавиатуры с использованием драйвера (Работает только с PS/2 клавиатурами, не с USB, и только на NT системах)

    [​IMG] 1330304001__KbdSpy.rar
     
  3. XPiS

    XPiS New Member

    Публикаций:
    0
    Регистрация:
    30 мар 2006
    Сообщения:
    13
    А нельзя на С примера? и такой вопрос: можно ли такое написать как драйвер пользовательского режима (DLL)