[keybd_event]-помогите эмулировать аппаратное поднятие клавишы

Тема в разделе "WASM.BEGINNERS", создана пользователем devillsd, 20 мар 2008.

  1. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Есть небольшая но прикольная игрушка,называеться она Platypus...
    Так вот в ней чтобы быстро стрелять надо быстро жать клавишу...
    Задача програмно сэмулировать НАЖТИЕ и !!ПОДНЯТИЕ!! клавишы...
    Прилагаю свой код(за клавишу фаер взял пробел)...
    Есть ещё небольшая загвоздка если нажимать клавиши через ASCll-игра эти нажатия вообще не видит, поэтому пытался через скан-код(пробел-039h-опустить/039h+80h-поднять)
    вышло так что кнопка опускаеться и залипает, тоесть скан-код опускания у меня заработал а вот поднимания почемуто нет....может я не правильно приплюсовал??(039h+080h=0b9h)
    Вобщем задача такова
    с какими параметрами написать keybd_event чтобы сэмулировать аппаратное !!!ПОДНЯТИЕ!!! клавиши,допустим пробел....
    Возможно есть какето другие АПИ или способы это зделать прошу выкладивать...Заранее спасибо!
     
  2. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Я просто поражаюсь...неужели форум не посещяют хорошие программисты...три топика создал...ответов нет!!!
    UP умные люди,отзовитесь! Может я плохо вопросы задаю???
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    devillsd
    Ну что Вы кричите-то? Умные люди на такие вопросы могут и не отвечать в связи с тем, что на форуме уже не раз обсуждалось. Зато такие чайники, как я, могут и в очередной раз повторить. :)
    В общем попробуйте небольшую задержку перед поднятием клавиши поставить: invoke Sleep,100, например.
    Кстати, в указании скан-кода нет необходимости.
     
  4. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    И со слипом не работает...а смысл в скан-коде.....Если я вызываю кей ивент без скан кода игра невидет ни нажатия ни отпускания, если же вызываю кей-ивент со скан кодом видет тлько нажатие....продолжаем тему...
     
  5. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    4-тый раз отвечаю на свой вопрос....Ошыбка моя была в том что я перепутал клавы
    Клава XT посылает скан-код поднятой клавишы так скан-код+080h, а клава AT посылает в старшем байте "FO" + скан код.....
    Реализовал поднятие так....
    .data
    fo db "FO",0
    ..............
    mov ah,fo
    mov al,039h
    invoke keybd_event,32,eax,KEYEVENTF_KEYUP,NULL


    А теперь подскажите какими ещё способами(покороче) возможно заести в старшый бит буквенную информацыю а в нижний цифренную....
     
  6. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    devillsd

    Кстати - вопрос имеет однин побочный момент - поднятие клавиши на аппаратном уровне нереализуемо. Нажатие да вполне можно реализовать (повторить последний скан код), а вот скан кода поднятия после этого нет. Уровень работы с контроллером клавиатуры напрямую, через порты.
     
  7. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    devillsd
    Ты форум с чатом перепутал. Иногда и неделю приходится ждать ответа.
    Именно поэтому такие простые вопросы нет смысла задавать - они
    уже разжеваны 100 раз и ответы ищутся через поисковики. Ну правда новичкам
    тяжело определить степень трудности... Но увидев при поиске слово FAQ -
    верный признак, что хорошие программисты на этот вопрос уже ответили.
    Поэтому увидев 10000 ответов, я всегда добавляю слово FAQ.