ZKEY - эмулятор клавиатуры
-
Если не секрет , какими?Мы не часть этого мира , мы его творцы
Да не то чтобы секрет, только зачем обнадёживать людей если работа ещё далека от завершения.
Было бы удобнее, если бы программа сама могла определить режим ввода с клавиатуры(scan\ascii) для приложения, которому будут посылаться сообщения о нажатии клавиш. Насколько я понимаю, сейчас это сделать нельзя.
Можно выводить в буфер SysFn9. Тогда надо будет добавить в kernel.asm:
Можно выводить в буфер SysFn9. Тогда надо будет добавить в kernel.asm:
Code: Select all
sys_cpuusage:
; .................................................................
; Event mask (+71)
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask]
stosd
+ ; Keyboard mode (+75)
+ mov al, dword [ecx*8 + SLOT_BASE + APPDATA.keyboard_mode]
+ stosb
pop esi
pop edi
; .................................................................
Ну так я добавлю? И ZKey будет автоматически определять режим ввода.
Только в ZKey такая проблема:
То есть, сейчас start_draw_window пропускается и старая кнопка не удаляется.
Там, где я добавлю свой код, я буду удалять, а остальное я трогать не буду:
Только в ZKey такая проблема:
Code: Select all
draw_window:
test byte [red_type], 1
jnz @f
test byte [red_type], 2
jnz .draw_switch_button
start_draw_window 100,370,600,210,0x14224466,labelt
Там, где я добавлю свой код, я буду удалять, а остальное я трогать не буду:
Code: Select all
still:
call get_receiver_window_slot_number
+ call get_receiver_window_keyboard_mode
+ call set_keyboard_mode
+ ; delete_switch_button
+ mov eax, 8
+ mov edx, 0x80700000
+ int 0x40
+ call draw_window.draw_switch_button
Code: Select all
.draw_switch_button:
mov eax, 6
mul byte [keyboard_mode]
add eax, SwitchText
stdcall draw_button, 513,28,46,20,106,0x00700000,eax,6,TEXTCOLOR ; Scan/ASCII switch
@@:
.draw_indicators_area:
call lights_on
+ xor al, al
+ xchg al, [red_type]
mov byte [red_type], 0
+ test al, 2
+ jnz .skip_end_draw_window
end_draw_window
+ .skip_end_draw_window:
Добавляй, но желательно доступными способами убедиться, что не вызовет проблем. Хотя теоретически все приложения выделяют полный размер под буфер.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
В документации написано:Mario_r4 wrote:Хотя теоретически все приложения выделяют полный размер под буфер.
======================================================================
============= Функция 9 - информация о потоке выполнения. ============
======================================================================
Параметры:
* eax = 9 - номер функции
* ebx = указатель на буфер размера 1 Кб
А еще там:
Но иногда программисты смотрят в код ядра и видят, что остальная область не используется. Понятно, что это ССЗБ, но тем не менее бывает.
Code: Select all
* В данный момент используется только часть буфера размером
71 = 0x47 байта. Тем не менее рекомендуется использовать буфер
размером 1 Кб для будущей совместимости, в будущем могут быть
добавлены некоторые поля.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
А в kernel.asm:Mario_r4 wrote:А еще там:
Код:
* В данный момент используется только часть буфера размером
71 = 0x47 байта.
То есть, 75 на самом деле.; Event mask (+71)
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask]
stosd
Добавил автопереключение режима ввода с клавиатуры #4263.
Who is online
Users browsing this forum: No registered users and 0 guests