/programs/network/vncc/gui.inc |
---|
28,7 → 28,7 |
cmp [status], STATUS_CONNECTING |
ja @f |
mov ebx, 25 shl 16 + 14 |
mov ebx, 25 shl 16 + 24 |
xor ecx, ecx |
mov edx, serverstr |
mov esi, userstr-serverstr |
/programs/network/vncc/keymap.inc |
---|
19,19 → 19,13 |
mcall 26, 2, 2, keymap_shift+128 |
mcall 26, 2, 3, keymap_alt+128 |
mov esi, keymap+128 |
mov edi, keymap |
mov ecx, 128 |
call convert_keymap |
mov esi, keymap_shift+128 |
mov edi, keymap_shift |
mov ecx, 128 |
call convert_keymap |
mov esi, keymap_alt+128 |
mov edi, keymap_alt |
mov ecx, 128 |
call convert_keymap |
ret |
39,83 → 33,50 |
convert_keymap: |
push edi |
lea esi, [edi+128] |
mov ecx, 128 |
xor eax, eax |
.loop: |
lodsb |
cmp al, 0x08 ; Backspace |
jne @f |
mov ax, 0x08ff |
jmp .next |
@@: |
cmp al, 0x09 ; Tab |
jne @f |
mov ax, 0x09ff |
jmp .next |
@@: |
cmp al, 0x0d ; Enter |
jne @f |
mov ax, 0x0dff |
jmp .next |
@@: |
cmp al, 0x1b ; Escape |
jne @f |
mov ax, 0x1bff |
jmp .next |
@@: |
cmp al, 0x34 ; Insert |
jne @f |
mov ax, 0x63ff |
jmp .next |
@@: |
cmp al, 0xb6 ; Delete |
jne @f |
mov ax, 0xffff |
jmp .next |
@@: |
cmp al, 0xb4 ; Home |
jne @f |
mov ax, 0x50ff |
jmp .next |
@@: |
cmp al, 0xb5 ; End |
jne @f |
mov ax, 0x57ff |
jmp .next |
@@: |
cmp al, 0xb8 ; PgUp |
jne @f |
mov ax, 0x55ff |
jmp .next |
@@: |
cmp al, 0xb7 ; PgDown |
jne @f |
mov ax, 0x56ff |
jmp .next |
@@: |
cmp al, 0xb0 ; Left |
jne @f |
mov ax, 0x51ff |
jmp .next |
@@: |
cmp al, 0xb2 ; Up |
jne @f |
mov ax, 0x52ff |
jmp .next |
@@: |
cmp al, 0xb3 ; Right |
jne @f |
mov ax, 0x53ff |
jmp .next |
@@: |
cmp al, 0xb1 ; Down |
jne @f |
mov ax, 0x54ff |
jmp .next |
@@: |
shl ax, 8 |
.next: |
stosw |
dec ecx |
jnz .loop |
pop edi |
; Fill in some keysyms for non-ascii keys |
mov word[edi+01*2], 0x1bff ; Escape |
mov word[edi+14*2], 0x08ff ; Backspace |
mov word[edi+15*2], 0x09ff ; Tab |
mov word[edi+28*2], 0x0dff ; Enter |
mov word[edi+29*2], 0xe3ff ; Left control key |
mov word[edi+42*2], 0xe1ff ; Left shift |
mov word[edi+54*2], 0xe2ff ; Right shift |
mov word[edi+56*2], 0xe9ff ; Left alt key |
mov word[edi+59*2], 0xbeff ; f1 |
mov word[edi+60*2], 0xbfff ; f2 |
mov word[edi+61*2], 0xc0ff ; f3 |
mov word[edi+62*2], 0xc1ff ; f4 |
mov word[edi+63*2], 0xc2ff ; f5 |
mov word[edi+64*2], 0xc3ff ; f6 |
mov word[edi+65*2], 0xc4ff ; f7 |
mov word[edi+66*2], 0xc5ff ; f8 |
mov word[edi+67*2], 0xc6ff ; f9 |
mov word[edi+68*2], 0xc7ff ; f10 |
mov word[edi+71*2], 0x50ff ; home |
mov word[edi+72*2], 0x52ff ; up |
mov word[edi+73*2], 0x55ff ; pg up |
mov word[edi+75*2], 0x51ff ; left |
mov word[edi+77*2], 0x53ff ; right |
mov word[edi+79*2], 0x57ff ; end |
mov word[edi+80*2], 0x54ff ; down |
mov word[edi+81*2], 0x56ff ; pg down |
mov word[edi+82*2], 0x63ff ; insert |
mov word[edi+83*2], 0xffff ; delete |
mov word[edi+87*2], 0xc8ff ; f11 |
mov word[edi+88*2], 0xc9ff ; f12 |
mov word[edi+91*2], 0xebff ; left super |
ret |
/programs/network/vncc/vncc.asm |
---|
159,11 → 159,11 |
key: |
mcall 66, 3 |
mov ebx, eax |
mov ebx, eax ; get modifier keys |
mcall 2 |
cmp ah, 224 ; ext |
je mainloop ;; TODO |
mcall 2 ; get key scancode |
cmp ah, 224 ; extended keycode? |
je .extended |
xor al, al |
test ah, 0x80 ; key up? |
172,20 → 172,39 |
@@: |
mov byte[KeyEvent.down], al |
shr eax, 7 |
and eax, 0x000000fe |
movzx eax, ah |
test ebx, 100000b ; alt? |
jz @f |
add eax, 512 |
jz .no_alt |
mov ax, [keymap_alt+eax*2] |
jmp .key |
@@: |
.no_alt: |
test ebx, 11b ; shift? |
jz @f |
add eax, 256 |
@@: |
jz .no_shift |
mov ax, [keymap_shift+eax*2] |
jmp .key |
.no_shift: |
test ebx, 10000000b ; numlock ? |
jz .no_numlock |
cmp al, 71 |
jb .no_numlock |
cmp al, 83 |
ja .no_numlock |
mov ah, [keymap_numlock+eax-71] |
xor al, al |
jmp .key |
.extended: ; extended keys always use regular keymap |
mcall 2 |
shr eax, 8 |
jz mainloop |
.no_numlock: |
mov ax, [keymap+eax*2] |
.key: |
mov ax, [keymap+eax] |
test ax, ax |
jz mainloop |
mov word[KeyEvent.key+2], ax |
DEBUGF 1, "Sending key: 0x%x\n", ax |
mcall send, [socketnum], KeyEvent, 8, 0 |
192,6 → 211,7 |
jmp mainloop |
mouse: |
; DEBUGF 1, "Sending pointer event\n" |
222,6 → 242,12 |
include_debug_strings |
keymap_numlock: |
db '7', '8', '9', '-' |
db '4', '5', '6', '+' |
db '1', '2', '3' |
db '0', '.' |
HandShake db "RFB 003.003", 10 |
ClientInit db 0 ; not shared |
323,9 → 349,9 |
mouse_dd dd 0 |
update_framebuffer dd 0 |
URLbox edit_box 235, 70, 10, 0xffffff, 0x6f9480, 0, 0, 0, 65535, serveraddr, mouse_dd, ed_focus, 0, 0 |
USERbox edit_box 200, 90, 10, 0xffffff, 0x6f9480, 0, 0, 0, 127, username, mouse_dd, ed_focus, 0, 0 |
PASSbox edit_box 200, 90, 30, 0xffffff, 0x6f9480, 0, 0, 0, 127, password, mouse_dd, ed_pass, 0, 0 |
URLbox edit_box 235, 70, 20, 0xffffff, 0x6f9480, 0, 0, 0, 65535, serveraddr, mouse_dd, ed_focus, 0, 0 |
USERbox edit_box 215, 90, 10, 0xffffff, 0x6f9480, 0, 0, 0, 127, username, mouse_dd, ed_focus, 0, 0 |
PASSbox edit_box 215, 90, 30, 0xffffff, 0x6f9480, 0, 0, 0, 127, password, mouse_dd, ed_pass, 0, 0 |
serverstr db "server:" |
userstr db "username:" |