forked from KolibriOS/kolibrios
Primitive keyboard support for Synergy client.
git-svn-id: svn://kolibrios.org@4376 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
3f96e2dfdf
commit
d655103a9d
@ -38,7 +38,6 @@ include '../../network.inc'
|
|||||||
|
|
||||||
start:
|
start:
|
||||||
|
|
||||||
cld
|
|
||||||
mov edi, path ; Calculate the length of zero-terminated string
|
mov edi, path ; Calculate the length of zero-terminated string
|
||||||
xor al, al
|
xor al, al
|
||||||
mov ecx, 1024
|
mov ecx, 1024
|
||||||
@ -49,6 +48,7 @@ start:
|
|||||||
movsb
|
movsb
|
||||||
|
|
||||||
mcall 68, 11
|
mcall 68, 11
|
||||||
|
mcall 66, 1, 1
|
||||||
|
|
||||||
stdcall dll.Load, @IMPORT
|
stdcall dll.Load, @IMPORT
|
||||||
test eax, eax
|
test eax, eax
|
||||||
@ -111,6 +111,7 @@ start:
|
|||||||
call [con_write_asciiz]
|
call [con_write_asciiz]
|
||||||
|
|
||||||
mcall 40, EVM_STACK
|
mcall 40, EVM_STACK
|
||||||
|
mcall 10
|
||||||
|
|
||||||
login:
|
login:
|
||||||
call wait_for_data
|
call wait_for_data
|
||||||
@ -118,14 +119,14 @@ login:
|
|||||||
push buffer_ptr + 4
|
push buffer_ptr + 4
|
||||||
call [con_write_asciiz]
|
call [con_write_asciiz]
|
||||||
|
|
||||||
cmp dword [buffer_ptr], 11 shl 24
|
cmp dword [buffer_ptr], 11 shl 24 ; length of string
|
||||||
jne login
|
jne error
|
||||||
cmp dword [buffer_ptr + 4], 'Syne'
|
cmp dword [buffer_ptr + 4], 'Syne'
|
||||||
jne login
|
jne error
|
||||||
cmp word [buffer_ptr + 8], 'rg'
|
cmp word [buffer_ptr + 8], 'rg'
|
||||||
jne login
|
jne error
|
||||||
cmp byte [buffer_ptr + 10], 'y'
|
cmp byte [buffer_ptr + 10], 'y'
|
||||||
jne login
|
jne error
|
||||||
|
|
||||||
push str2
|
push str2
|
||||||
call [con_write_asciiz]
|
call [con_write_asciiz]
|
||||||
@ -184,6 +185,18 @@ mainloop:
|
|||||||
cmp dword [edi + 4], 'CIAK' ; resolution changed?
|
cmp dword [edi + 4], 'CIAK' ; resolution changed?
|
||||||
je .ciak
|
je .ciak
|
||||||
|
|
||||||
|
; cmp dword [edi + 4], 'DMWM' ; mouse wheel moved
|
||||||
|
; je .dmwm
|
||||||
|
|
||||||
|
cmp dword [edi + 4], 'DKDN' ; Key pressed
|
||||||
|
je .dkdn
|
||||||
|
|
||||||
|
cmp dword [edi + 4], 'DKUP' ; key up
|
||||||
|
je .dkup
|
||||||
|
|
||||||
|
cmp dword [edi + 4], 'DKRP' ; key auto repeat
|
||||||
|
je .dkrp
|
||||||
|
|
||||||
push str3
|
push str3
|
||||||
call [con_write_asciiz]
|
call [con_write_asciiz]
|
||||||
|
|
||||||
@ -217,7 +230,8 @@ mainloop:
|
|||||||
|
|
||||||
|
|
||||||
.calv:
|
.calv:
|
||||||
mcall send, [socketnum], calv, calv.length, 0 ; looks like ping-pong event
|
mcall send, [socketnum], calv, calv.length, 0 ; keepalive
|
||||||
|
|
||||||
jmp .next
|
jmp .next
|
||||||
|
|
||||||
|
|
||||||
@ -239,11 +253,12 @@ mainloop:
|
|||||||
bswap edx
|
bswap edx
|
||||||
mcall 18, 19, 4
|
mcall 18, 19, 4
|
||||||
mcall send, [socketnum], cnop, cnop.length, 0 ; reply with NOP
|
mcall send, [socketnum], cnop, cnop.length, 0 ; reply with NOP
|
||||||
push str4
|
|
||||||
call [con_write_asciiz]
|
|
||||||
jmp .next
|
jmp .next
|
||||||
|
|
||||||
.cout:
|
.cout:
|
||||||
|
; TODO: hide cursor
|
||||||
|
push str8
|
||||||
|
call [con_write_asciiz]
|
||||||
jmp .next
|
jmp .next
|
||||||
|
|
||||||
.dmdn:
|
.dmdn:
|
||||||
@ -251,8 +266,6 @@ mainloop:
|
|||||||
or [mousestate], eax
|
or [mousestate], eax
|
||||||
mcall 18, 19, 5, [mousestate]
|
mcall 18, 19, 5, [mousestate]
|
||||||
mcall send, [socketnum], cnop, cnop.length, 0 ; reply with NOP
|
mcall send, [socketnum], cnop, cnop.length, 0 ; reply with NOP
|
||||||
push str5
|
|
||||||
call [con_write_asciiz]
|
|
||||||
jmp .next
|
jmp .next
|
||||||
|
|
||||||
.dmup:
|
.dmup:
|
||||||
@ -261,19 +274,39 @@ mainloop:
|
|||||||
and [mousestate], eax
|
and [mousestate], eax
|
||||||
mcall 18, 19, 5, [mousestate]
|
mcall 18, 19, 5, [mousestate]
|
||||||
mcall send, [socketnum], cnop, cnop.length, 0 ; reply with NOP
|
mcall send, [socketnum], cnop, cnop.length, 0 ; reply with NOP
|
||||||
push str5
|
|
||||||
call [con_write_asciiz]
|
|
||||||
jmp .next
|
jmp .next
|
||||||
|
|
||||||
.ciak:
|
.ciak:
|
||||||
jmp .next
|
jmp .next
|
||||||
|
|
||||||
|
; .dmwm:
|
||||||
|
; jmp .next
|
||||||
|
|
||||||
|
.dkdn:
|
||||||
|
movzx edx, word[edi + 8 + 4] ; key button
|
||||||
|
rol dx, 8
|
||||||
|
mcall 72, 1, 2 ; send key
|
||||||
|
jmp .next
|
||||||
|
|
||||||
|
.dkrp:
|
||||||
|
movzx edx, word[edi + 8 + 6]
|
||||||
|
rol dx, 8
|
||||||
|
mcall 72, 1, 2 ; send key
|
||||||
|
jmp .next
|
||||||
|
|
||||||
|
.dkup:
|
||||||
|
movzx edx, word[edi + 8 + 4]
|
||||||
|
rol dx, 8
|
||||||
|
add edx, 128
|
||||||
|
mcall 72, 1, 2 ; send key
|
||||||
|
|
||||||
|
jmp .next
|
||||||
|
|
||||||
error:
|
error:
|
||||||
push str_err
|
push str_err
|
||||||
call [con_write_asciiz]
|
call [con_write_asciiz]
|
||||||
|
|
||||||
; call [con_gets]
|
wait_for_key:
|
||||||
|
|
||||||
call [con_getch2]
|
call [con_getch2]
|
||||||
|
|
||||||
mcall close, [socketnum]
|
mcall close, [socketnum]
|
||||||
@ -287,14 +320,23 @@ exit:
|
|||||||
|
|
||||||
wait_for_data:
|
wait_for_data:
|
||||||
mcall recv, [socketnum], buffer_ptr, BUFFERSIZE, 0
|
mcall recv, [socketnum], buffer_ptr, BUFFERSIZE, 0
|
||||||
cmp eax, -1
|
inc eax
|
||||||
je wait_for_data
|
jz error
|
||||||
|
dec eax
|
||||||
|
jz closed
|
||||||
|
|
||||||
cmp eax, 8
|
cmp eax, 8
|
||||||
jb wait_for_data ; FIXME
|
jb wait_for_data ; FIXME
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
closed:
|
||||||
|
|
||||||
|
push str_cls
|
||||||
|
call [con_write_asciiz]
|
||||||
|
|
||||||
|
jmp wait_for_key
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; data
|
; data
|
||||||
@ -305,10 +347,10 @@ str7 db 'Connected!',10,0
|
|||||||
str2 db 10,'Handshake received',10,0
|
str2 db 10,'Handshake received',10,0
|
||||||
str3 db 'Unsupported command: ',0
|
str3 db 'Unsupported command: ',0
|
||||||
newline db 10,0
|
newline db 10,0
|
||||||
str4 db 'mouse moved',10,0
|
str6 db 'Entering screen',10,0
|
||||||
str5 db 'mouse buttons changed',10,0
|
str8 db 'Leaving screen',10,0
|
||||||
str6 db 'Enter screen',10,0
|
|
||||||
str_err db 'Uh-Oh.. some error occured !',10,'Press any key to quit.',0
|
str_err db 'Uh-Oh.. some error occured !',10,'Press any key to quit.',0
|
||||||
|
str_cls db 'Server disconnected',10,0
|
||||||
|
|
||||||
screeninfo:
|
screeninfo:
|
||||||
dd (screeninfo.length - 4) shl 24
|
dd (screeninfo.length - 4) shl 24
|
||||||
@ -341,7 +383,7 @@ mousestate dd 0
|
|||||||
sockaddr1:
|
sockaddr1:
|
||||||
dw AF_INET4
|
dw AF_INET4
|
||||||
.port dw 0
|
.port dw 0
|
||||||
.ip dd 192 + 168 shl 8 + 1 shl 16 + 115 shl 24
|
.ip dd 0
|
||||||
rb 10
|
rb 10
|
||||||
|
|
||||||
filename db '.ini', 0
|
filename db '.ini', 0
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[local]
|
[local]
|
||||||
name = karaboeia
|
name = kolibrios
|
||||||
|
|
||||||
[remote]
|
[remote]
|
||||||
ip = 192.168.1.115
|
ip = 192.168.1.118
|
||||||
port = 24800
|
port = 24800
|
||||||
|
Loading…
Reference in New Issue
Block a user