МЭФК ( KOS.dll )

Projects yet to be implemented in working code
  • Функция 2 - получить код нажатой клавиши.
    Spoiler:Забирает код нажатой клавиши из буфера.
    Параметры:
    * eax = 2 - номер функции
    Возвращаемое значение:
    * если буфер пуст, возвращается eax=1
    * если буфер непуст, то возвращается al=0, ah=код нажатой клавиши,
    биты 16-23 содержат сканкод нажатой клавиши в режиме ASCII,
    в режме сканкодов биты обнулены.
    биты 23-31 обнулены
    * если есть "горячая клавиша", то возвращается
    al=2, ah=сканкод нажатой клавиши (0 для управляющих клавиш),
    старшее слово регистра eax содержит состояние управляющих клавиш
    в момент нажатия горячей клавиши
    ..................

    Замечания:
    * Существует общесистемный буфер нажатых клавиш размером 120 байт,
    организованный как очередь.
    * Существует ещё один общесистемный буфер на 120 "горячих клавиш".
    * При вызове этой функции приложением с неактивным окном
    считается, что буфер нажатых клавиш пуст.
    ............................
    Нужен фрагмент кода реализующих СКАНКОДЫ (именно сканкоды, а не ascii).
    А то по описанию очень сложно понять : обнулённые биты.... какие-то "горячие клавиши", что это вообще такое?!... буфер на 120.... еще один буфер на 120 "горячих клавиш".....
    Горячие клавиши, это те, что с доп.кодом EXT ?

    Или может кто-то сможет объяснить "человеческим" языком как это реализовать в функцию 2, если на выходе процедуры обрабатывающей клавиши (в МЭФК), у меня уже есть KOSkey(сканкод) , Ext(доп.код) ,fUPDOWN (флаг нажата/отжата) (ну при желании если нужно и WINKey(код из процедуры формы(виндовый код)), хотя зачем это).
    Может имея готовые такие данные как KOSkey , Ext ,fUPDOWN проще "склепать" результатирующий выход eax (функции номер 2) и не заморачиваться на каких-то буферах ?

    вот это viewtopic.php?f=33&t=3202&p=63466#p63466 я так понял, реализация ascii ?
  • Если функцией 66.1 установить режим "сканкоды", то просто al = 1, ah = сканкод.
    Если функцией 66.4 установить горячую клавишу, то при её нажатии al = 2, ah = сканкод, eax >> 16 = состояние управляющих клавиш (shift, ctrl, alt).
    Иначе al = 1, ah = ASCII код, eax >> 16 = сканкод.
  • Pathoswithin wrote:Если функцией 66.1 установить режим "сканкоды", то просто al = 1, ah = сканкод.
    Если функцией 66.4 установить горячую клавишу, то при её нажатии al = 2, ah = сканкод, eax >> 16 = состояние управляющих клавиш (shift, ctrl, alt).
    Иначе al = 1, ah = ASCII код, eax >> 16 = сканкод.
    Если это всё охарактеризовать двумя словами, то эти слова: НУ, БЛИН! :-( :-)
    Я в шоке! Чувствую, что застрял надолго!
    А как программа ScanCode вообще реализована ?! Она что "мечит" по переключениях режимов ?... ну мало ли какую я клавишу нажму, она ведь не знает заранее "горячую" иль "не горячую"?!... или я чего-то не так понимаю?! А ScanCode исходник есть ?... на свн или где ? Разобраться можно ? или по исходнику, не лучше чем сейчас разберусь!? :-)
  • Горячие клавиши, это клавиши уведомление о нажатии которых приложение получает даже если оно не активно. Каждое приложение может назначить свой список горячих клавиш. Например панель обрабатывает такие горячие клавиши как Win для запуска меню, Ctrl+Alt+F12 для запуска end, Alt+F4 для завершения активного приложения. В сборке есть приложение mykey, которое может запускать с параметрами указаное пользователем приложение с помощью нажатия определенной клавиши или комбинации клавиш, при этом само приложение mykey может быть неактивно и свернуто.
  • ALEXS1983 wrote:Неудобство заключается в том, что скомпилированную программу, нельзя сразу же из компилятора FASM запустить и посмотреть результат выполнения написанного кода. Также отсутствие возможности, с пошаговой «прокруткой» программы, наблюдением за изменением переменных и результатом вывода на экран при пошаговой «прокрутки» программы и прочее. Для новичков, и не только новичков, это очень немаловажно!
    Ну так не надо использовать виндовые программы. В KolibriOS есть редактор Tinypad и отладчик mtdbg. Под KlbrInWin могут и не работать, естественно.
    Сделаем мир лучше!
  • ALEXS1983 wrote: На данный момент основной «штопор» у меня, это использование модуля в Visual Studio 6 и в C++Builder 6. Если кого не затруднит, попробуйте использовать данный модуль в какой-то среде, (не только вышеперечисленных), и отпишите как это делается, а лучше выложите, готовый пример, шаблон или черновик.
    Кто нибудь пробовал этот модуль в Visual Studio 6 и в C++Builder 6 или в других средах программирования ?
  • В чем смысл затеи? Писать под KolbiriOS на Delphi? Была такая тема, я на ней сдулся.
  • Freeman wrote:В чем смысл затеи? Писать под KolbiriOS на Delphi?
    Смысл затеи (был!) в том, чтобы прикрепив модуль к чему угодно, ( к чему только можно прикрепить DLL, - Фасм, СИ еще чего-то) писать программы (в частности в винде) используя модуль как визуализатор, а не просто получать готовый запускаемый файл который можно запускать лишь в КОС! Понял весь смысл ?
    Ну вот допустим прикрутил ты модуль к MS6 (или еще какой-то сишке ) и "клепай" себе программы для КОС запуская и тестируя и пошагово проверяй и дебагером-MS6 пользуйся, да и результат видно с помощью длл-модуля. Так пишешь программу до полной готовности, не прибегая к проверки программы в самой КОС. Удобно бы было ?! Правда ?
  • Who is online

    Users browsing this forum: No registered users and 3 guests