775,7 → 775,7 |
mov al, 0xF3 ; set repeat rate & delay |
call kb_write |
call kb_read |
mov al, 00100010b ; 24 500 ;00100100b ; 20 500 |
mov al, 0 ; 30 250 ;00100010b ; 24 500 ;00100100b ; 20 500 |
call kb_write |
call kb_read |
;// mike.dld [ |
826,7 → 826,6 |
|
call [draw_pointer] |
call checkbuttons |
call main_loop_sys_getkey |
call checkwindows |
; call check_window_move_request |
call checkmisc |
2271,11 → 2270,8 |
rep movsd |
ret |
|
sysfn_lastkey: ; 18.12 = get all key pressed with ALT |
mov eax,[last_key_press] |
mov al,[keyboard_mode_sys] |
mov [esp+36],eax |
mov [last_key_press],0 |
sysfn_lastkey: ; 18.12 = return 0 (backward compatibility) |
and dword [esp+36], 0 |
ret |
|
sysfn_getversion: ; 18.13 = get kernel ID and version |
2324,8 → 2320,6 |
;// mike.dld, 2006-29-01 ] |
window_minimize db 0 |
sound_flag db 0 |
last_key_press dd 0 |
keyboard_mode_sys db 0 |
endg |
|
iglobal |
2340,15 → 2334,6 |
UID_MENUETOS=1 ;official |
UID_KOLIBRI=2 ;russian |
|
main_loop_sys_getkey: |
cmp [0xf400],byte 0 |
je .finish |
movzx eax,byte [0xf401] |
shl eax,8 |
mov [last_key_press],eax |
.finish: |
ret |
|
sys_cachetodiskette: |
; pushad |
; cmp eax,1 |
2516,6 → 2501,7 |
|
sys_getkey: |
mov [esp+36],dword 1 |
; test main buffer |
mov ebx, [0x3000] ; TOP OF WINDOW STACK |
movzx ecx,word [0xC000 + ebx * 2] |
mov edx,[0x3004] |
2538,28 → 2524,28 |
mov ebx, 0xF401 |
call memmove |
pop eax |
mov [last_key_press],eax |
|
mov eax,[kb_state] |
and al,110000b |
cmp al,100000b |
je .yes_win_key |
cmp al,10000b |
je .yes_win_key |
mov eax,[last_key_press] |
jmp .no_win_key |
; cmp ah,232 |
; je .yes_win_key |
; cmp ah,233 |
; jne .no_win_key |
.yes_win_key: |
mov eax,1 |
.no_win_key: |
.ret_eax: |
mov [esp+36],eax |
ret |
.finish: |
; test hotkeys buffer |
mov ecx, hotkey_buffer |
@@: |
cmp [ecx], ebx |
jz .found |
add ecx, 8 |
cmp ecx, hotkey_buffer+120*8 |
jb @b |
ret |
.found: |
mov ax, [ecx+6] |
shl eax, 16 |
mov ah, [ecx+4] |
mov al, 2 |
and dword [ecx+4], 0 |
and dword [ecx], 0 |
jmp .ret_eax |
|
|
align 4 |
|
sys_getbutton: |
4395,26 → 4381,23 |
|
|
sys_process_def: |
mov edi, [0x3000] |
|
cmp eax,1 ; set keyboard mode |
dec eax ; 1 = set keyboard mode |
jne no_set_keyboard_setup |
|
mov edi,[0x3000] |
shl edi,8 |
add edi,0x80000+0xB4 |
mov [edi],bl |
mov [edi+0x800B4],bl |
|
ret |
|
no_set_keyboard_setup: |
|
cmp eax,2 ; get keyboard mode |
dec eax ; 2 = get keyboard mode |
jne no_get_keyboard_setup |
|
mov edi,[0x3000] |
shl edi,8 |
add edi,0x80000+0xB4 |
movzx eax, byte [edi] |
movzx eax, byte [0x800B4+edi] |
|
mov [esp+36],eax |
|
4422,7 → 4405,7 |
|
no_get_keyboard_setup: |
|
cmp eax,3 ; get keyboard ctrl, alt, shift |
dec eax ; 3 = get keyboard ctrl, alt, shift |
jne no_get_keyboard_cas |
|
; xor eax,eax |
4444,10 → 4427,75 |
|
no_get_keyboard_cas: |
|
dec eax |
jnz no_add_keyboard_hotkey |
|
mov eax, hotkey_list |
@@: |
cmp dword [eax+8], 0 |
jz .found_free |
add eax, 16 |
cmp eax, hotkey_list+16*256 |
jb @b |
mov dword [esp+36], 1 |
ret |
.found_free: |
mov [eax+8], edi |
mov [eax+4], ecx |
movzx ebx, bl |
lea ebx, [hotkey_scancodes+ebx*4] |
mov ecx, [ebx] |
mov [eax], ecx |
mov [ebx], eax |
mov [eax+12], ebx |
jecxz @f |
mov [ecx+12], eax |
@@: |
and dword [esp+36], 0 |
ret |
|
no_add_keyboard_hotkey: |
|
dec eax |
jnz no_del_keyboard_hotkey |
|
movzx ebx, bl |
lea ebx, [hotkey_scancodes+ebx*4] |
mov eax, [ebx] |
.scan: |
test eax, eax |
jz .notfound |
cmp [eax+8], edi |
jnz .next |
cmp [eax+4], ecx |
jz .found |
.next: |
mov eax, [eax] |
jmp .scan |
.notfound: |
mov dword [esp+36], 1 |
ret |
.found: |
mov ecx, [eax] |
jecxz @f |
mov edx, [eax+12] |
mov [ecx+12], edx |
@@: |
mov ecx, [eax+12] |
mov edx, [eax] |
mov [ecx], edx |
xor edx, edx |
mov [eax+4], edx |
mov [eax+8], edx |
mov [eax+12], edx |
mov [eax], edx |
mov [esp+36], edx |
ret |
|
no_del_keyboard_hotkey: |
ret |
|
|
sys_ipc: |
cmp eax,1 ; DEFINE IPC MEMORY |
jne no_ipc_def |