Dungeons game: fix keyboard input handling
git-svn-id: svn://kolibrios.org@5492 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b55ad6401a
commit
8c98d2a737
@ -734,6 +734,21 @@ proc main_loop
|
|||||||
endp
|
endp
|
||||||
; ============================================================================ ;
|
; ============================================================================ ;
|
||||||
|
|
||||||
|
; ============================================================================ ;
|
||||||
|
; < eax = key scancode (1 byte) ;
|
||||||
|
; ============================================================================ ;
|
||||||
|
macro wait_for_scancode
|
||||||
|
{
|
||||||
|
local .wait
|
||||||
|
|
||||||
|
.wait:
|
||||||
|
mcall 2
|
||||||
|
test al, al
|
||||||
|
jnz .wait
|
||||||
|
|
||||||
|
shr eax, 8
|
||||||
|
}
|
||||||
|
|
||||||
; ============================================================================ ;
|
; ============================================================================ ;
|
||||||
; < eax = key scancode / 0 - no keys ;
|
; < eax = key scancode / 0 - no keys ;
|
||||||
; ============================================================================ ;
|
; ============================================================================ ;
|
||||||
@ -750,8 +765,10 @@ proc get_key
|
|||||||
|
|
||||||
cmp eax, 0E1h
|
cmp eax, 0E1h
|
||||||
jne @f
|
jne @f
|
||||||
mcall 2
|
|
||||||
mcall 2
|
wait_for_scancode
|
||||||
|
wait_for_scancode
|
||||||
|
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
jmp .exit
|
jmp .exit
|
||||||
|
|
||||||
@ -761,8 +778,9 @@ proc get_key
|
|||||||
|
|
||||||
cmp eax, 0E0h
|
cmp eax, 0E0h
|
||||||
jne @f
|
jne @f
|
||||||
mcall 2
|
|
||||||
shr eax, 8
|
wait_for_scancode
|
||||||
|
|
||||||
mov ecx, eax
|
mov ecx, eax
|
||||||
or eax, 0E000h
|
or eax, 0E000h
|
||||||
mov ebx, 128
|
mov ebx, 128
|
||||||
@ -794,6 +812,7 @@ proc get_key
|
|||||||
mov [PressedKeys + ebx * 4], edx
|
mov [PressedKeys + ebx * 4], edx
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
|
;DEBUGF DEBUG_FINE, 'get_key: %x\n', eax:4
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
; ============================================================================ ;
|
; ============================================================================ ;
|
||||||
|
Loading…
Reference in New Issue
Block a user