Page 2 of 2

Re: Эмулятор клавиатуры

Posted: Fri Sep 11, 2009 1:43 pm
by chaykin
Если не секрет , какими?

Re: Эмулятор клавиатуры

Posted: Sat Sep 19, 2009 7:38 pm
by Asper
Да не то чтобы секрет, только зачем обнадёживать людей если работа ещё далека от завершения.

Re: ZKEY - эмулятор клавиатуры

Posted: Thu Jul 18, 2013 5:02 pm
by 0CodErr
Было бы удобнее, если бы программа сама могла определить режим ввода с клавиатуры(scan\ascii) для приложения, которому будут посылаться сообщения о нажатии клавиш. Насколько я понимаю, сейчас это сделать нельзя.
Можно выводить в буфер 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   
; .................................................................

Re: ZKEY - эмулятор клавиатуры

Posted: Wed Nov 20, 2013 10:19 pm
by 0CodErr
Ну так я добавлю? И ZKey будет автоматически определять режим ввода.

Только в 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
То есть, сейчас start_draw_window пропускается и старая кнопка не удаляется.
Там, где я добавлю свой код, я буду удалять, а остальное я трогать не буду:

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:  

Re: ZKEY - эмулятор клавиатуры

Posted: Wed Nov 20, 2013 10:32 pm
by Mario_r4
Добавляй, но желательно доступными способами убедиться, что не вызовет проблем. Хотя теоретически все приложения выделяют полный размер под буфер.

Re: ZKEY - эмулятор клавиатуры

Posted: Wed Nov 20, 2013 10:39 pm
by 0CodErr
Mario_r4 wrote:Хотя теоретически все приложения выделяют полный размер под буфер.
В документации написано:
======================================================================
============= Функция 9 - информация о потоке выполнения. ============
======================================================================
Параметры:
* eax = 9 - номер функции
* ebx = указатель на буфер размера 1 Кб

Re: ZKEY - эмулятор клавиатуры

Posted: Wed Nov 20, 2013 10:50 pm
by Mario_r4
А еще там:

Code: Select all

  * В данный момент используется только часть буфера размером
    71 = 0x47 байта. Тем не менее рекомендуется использовать буфер
    размером 1 Кб для будущей совместимости, в будущем могут быть
    добавлены некоторые поля.
Но иногда программисты смотрят в код ядра и видят, что остальная область не используется. Понятно, что это ССЗБ, но тем не менее бывает.

Re: ZKEY - эмулятор клавиатуры

Posted: Wed Nov 20, 2013 11:01 pm
by 0CodErr
Mario_r4 wrote:А еще там:
Код:
* В данный момент используется только часть буфера размером
71 = 0x47 байта.
А в kernel.asm:
; Event mask (+71)
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask]
stosd
То есть, 75 на самом деле.

Re: ZKEY - эмулятор клавиатуры

Posted: Thu Nov 21, 2013 12:30 am
by 0CodErr
Добавил автопереключение режима ввода с клавиатуры #4263.