forked from KolibriOS/kolibrios
auto switch keyboard mode
git-svn-id: svn://kolibrios.org@4263 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
4f0860e3e7
commit
a8de84cc11
@ -25,6 +25,9 @@ C_KEYCOLOR equ 0x00344556 ; Control button color
|
|||||||
L_KEYCOLOR equ 0x00258778 ; Lock button color
|
L_KEYCOLOR equ 0x00258778 ; Lock button color
|
||||||
TEXTCOLOR equ 0x00FFFFFF ; Button caption color
|
TEXTCOLOR equ 0x00FFFFFF ; Button caption color
|
||||||
|
|
||||||
|
ASCII_KEYMAP_SIZE equ 128
|
||||||
|
PROCINFO_SIZE equ 1024
|
||||||
|
PROCINFO_BUFF equ ascii_keymap + ASCII_KEYMAP_SIZE
|
||||||
|
|
||||||
STARTAPP:
|
STARTAPP:
|
||||||
mov ecx, 1 ; to send scancodes.
|
mov ecx, 1 ; to send scancodes.
|
||||||
@ -164,12 +167,19 @@ draw_window:
|
|||||||
mul byte [keyboard_mode]
|
mul byte [keyboard_mode]
|
||||||
add eax, SwitchText
|
add eax, SwitchText
|
||||||
stdcall draw_button, 513,28,46,20,106,0x00700000,eax,6,TEXTCOLOR ; Scan/ASCII switch
|
stdcall draw_button, 513,28,46,20,106,0x00700000,eax,6,TEXTCOLOR ; Scan/ASCII switch
|
||||||
|
|
||||||
|
xor al, al
|
||||||
|
xchg al, [red_type]
|
||||||
|
test al, 2
|
||||||
|
jnz .skip_end_draw_window ; if we draw switch button without redraw window then end_draw_window not need
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
.draw_indicators_area:
|
.draw_indicators_area:
|
||||||
call lights_on
|
call lights_on
|
||||||
|
|
||||||
mov byte [red_type], 0
|
|
||||||
end_draw_window
|
end_draw_window
|
||||||
|
|
||||||
|
.skip_end_draw_window:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
get_zkey_window_slot_number:
|
get_zkey_window_slot_number:
|
||||||
@ -184,7 +194,14 @@ set_event_mask:
|
|||||||
|
|
||||||
still:
|
still:
|
||||||
call get_receiver_window_slot_number
|
call get_receiver_window_slot_number
|
||||||
|
call get_receiver_window_keyboard_mode ; return in ecx keyboard_mode for set_keyboard_mode
|
||||||
|
call set_keyboard_mode
|
||||||
|
; delete_switch_button
|
||||||
|
mov eax, 8
|
||||||
|
mov edx, 0x80700000
|
||||||
|
int 0x40
|
||||||
|
mov byte [red_type], 2
|
||||||
|
call draw_window.draw_switch_button
|
||||||
|
|
||||||
mov eax, 10 ; Wait for an event in the queue.
|
mov eax, 10 ; Wait for an event in the queue.
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -369,6 +386,14 @@ get_receiver_window_slot_number:
|
|||||||
@@:
|
@@:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
get_receiver_window_keyboard_mode:
|
||||||
|
mov eax, 9
|
||||||
|
mov ebx, PROCINFO_BUFF
|
||||||
|
mov ecx, [receiver_window]
|
||||||
|
int 0x40
|
||||||
|
movzx ecx, byte [ebx + 75]
|
||||||
|
ret
|
||||||
|
|
||||||
;************************************
|
;************************************
|
||||||
;* input: edx = code of the key *
|
;* input: edx = code of the key *
|
||||||
;************************************
|
;************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user