Subversion Repositories Kolibri OS

Rev

Rev 1474 | Rev 1495 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1474 Rev 1494
Line 55... Line 55...
55
;;
55
;;
56
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
56
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 57... Line 57...
57
 
57
 
Line 58... Line 58...
58
include 'macros.inc'
58
include 'macros.inc'
Line 59... Line 59...
59
 
59
 
Line 60... Line 60...
60
$Revision: 1474 $
60
$Revision: 1494 $
Line 4458... Line 4458...
4458
        mov     [esp+36], ecx
4458
        mov     [esp+36], ecx
4459
        mov     [esp+24], ecx
4459
        mov     [esp+24], ecx
4460
.smbl2:
4460
.smbl2:
4461
        ret
4461
        ret
Line -... Line 4462...
-
 
4462
 
-
 
4463
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
4464
;; 66 sys function.                                                ;;
-
 
4465
;; in eax=66,ebx in [0..5],ecx,edx                                 ;;
-
 
4466
;; out eax                                                         ;;
-
 
4467
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
4468
iglobal
-
 
4469
align 4
-
 
4470
f66call:
-
 
4471
           dd sys_process_def.1   ; 1 = set keyboard mode
-
 
4472
           dd sys_process_def.2   ; 2 = get keyboard mode
-
 
4473
           dd sys_process_def.3   ; 3 = get keyboard ctrl, alt, shift
-
 
4474
           dd sys_process_def.4
-
 
4475
           dd sys_process_def.5
-
 
4476
endg
-
 
4477
 
Line 4462... Line 4478...
4462
 
4478
 
-
 
4479
 
-
 
4480
 
-
 
4481
sys_process_def:
-
 
4482
	dec	ebx
4463
 
4483
	cmp	ebx,5
-
 
4484
	jae	.not_support	;if >=6 then or eax,-1
Line 4464... Line -...
4464
 
-
 
4465
sys_process_def:
4485
 
-
 
4486
        mov     edi, [CURRENT_TASK]
-
 
4487
	jmp	dword [f66call+ebx*4]
Line -... Line 4488...
-
 
4488
 
4466
        mov     edi, [CURRENT_TASK]
4489
.not_support:
4467
 
4490
	or	eax,-1
Line 4468... Line 4491...
4468
        dec     eax             ; 1 = set keyboard mode
4491
	ret
Line 4469... Line -...
4469
     jne   no_set_keyboard_setup
-
 
4470
 
-
 
4471
     shl   edi,8
-
 
4472
     mov   [edi+SLOT_BASE + APPDATA.keyboard_mode],bl
4492
 
4473
 
-
 
4474
     ret
4493
.1:
4475
 
4494
     shl   edi,8
4476
   no_set_keyboard_setup:
-
 
4477
 
4495
     mov   [edi+SLOT_BASE + APPDATA.keyboard_mode],cl
4478
        dec     eax             ; 2 = get keyboard mode
-
 
4479
     jne   no_get_keyboard_setup
4496
 
4480
 
-
 
4481
     shl   edi,8
-
 
4482
     movzx eax, byte [SLOT_BASE+edi + APPDATA.keyboard_mode]
-
 
4483
 
-
 
4484
     mov   [esp+36],eax
-
 
4485
 
-
 
4486
     ret
4497
     ret
4487
 
4498
 
4488
   no_get_keyboard_setup:
4499
.2:				; 2 = get keyboard mode
4489
 
4500
     shl   edi,8
4490
        dec     eax             ; 3 = get keyboard ctrl, alt, shift
4501
     movzx eax, byte [SLOT_BASE+edi + APPDATA.keyboard_mode]
4491
     jne   no_get_keyboard_cas
4502
     mov   [esp+32],eax
4492
 
4503
     ret
4493
;     xor   eax,eax
4504
;     xor   eax,eax
4494
;     movzx eax,byte [shift]
-
 
-
 
4505
;     movzx eax,byte [shift]
4495
;     movzx ebx,byte [ctrl]
4506
;     movzx ebx,byte [ctrl]
4496
;     shl   ebx,2
4507
;     shl   ebx,2
4497
;     add   eax,ebx
4508
;     add   eax,ebx
4498
;     movzx ebx,byte [alt]
-
 
4499
;     shl   ebx,3
4509
;     movzx ebx,byte [alt]
4500
;     add   eax,ebx
-
 
4501
 
4510
;     shl   ebx,3
Line 4502... Line -...
4502
 ;// mike.dld [
-
 
4503
     mov   eax, [kb_state]
-
 
4504
 ;// mike.dld ]
-
 
4505
 
-
 
4506
     mov   [esp+36],eax
4511
;     add   eax,ebx
4507
 
4512
.3:				;3 = get keyboard ctrl, alt, shift
4508
     ret
4513
 ;// mike.dld [
4509
 
4514
     mov   eax, [kb_state]
4510
   no_get_keyboard_cas:
4515
 ;// mike.dld ]
4511
 
4516
     mov   [esp+32],eax
4512
        dec     eax
4517
     ret
4513
        jnz     no_add_keyboard_hotkey
4518
 
4514
 
4519
.4:
4515
        mov     eax, hotkey_list
4520
        mov     eax, hotkey_list
4516
@@:
4521
@@:
4517
        cmp     dword [eax+8], 0
4522
        cmp     dword [eax+8], 0
4518
        jz      .found_free
4523
        jz      .found_free
4519
        add     eax, 16
4524
        add     eax, 16
4520
        cmp     eax, hotkey_list+16*256
4525
        cmp     eax, hotkey_list+16*256
4521
        jb      @b
4526
        jb      @b
4522
        mov     dword [esp+36], 1
4527
        mov     dword [esp+32], 1
4523
        ret
4528
        ret
4524
.found_free:
4529
.found_free:
4525
        mov     [eax+8], edi
4530
        mov     [eax+8], edi
4526
        mov     [eax+4], ecx
4531
        mov     [eax+4], edx
4527
        movzx   ebx, bl
4532
        movzx   ecx, cl
4528
        lea     ebx, [hotkey_scancodes+ebx*4]
4533
        lea     ecx, [hotkey_scancodes+ecx*4]
4529
        mov     ecx, [ebx]
4534
        mov     edx, [ecx]
Line 4530... Line -...
4530
        mov     [eax], ecx
-
 
4531
        mov     [ebx], eax
-
 
4532
        mov     [eax+12], ebx
-
 
4533
        jecxz   @f
-
 
4534
        mov     [ecx+12], eax
4535
        mov     [eax], edx
4535
@@:
4536
        mov     [ecx], eax
4536
        and     dword [esp+36], 0
4537
        mov     [eax+12], ecx
4537
        ret
4538
        jecxz   @f
4538
 
4539
        mov     [edx+12], eax
4539
no_add_keyboard_hotkey:
4540
@@:
4540
 
4541
        and     dword [esp+32], 0
4541
        dec     eax
4542
        ret
4542
        jnz     no_del_keyboard_hotkey
4543
 
4543
 
4544
.5:
4544
        movzx   ebx, bl
4545
        movzx   ebx, cl
4545
        lea     ebx, [hotkey_scancodes+ebx*4]
4546
        lea     ebx, [hotkey_scancodes+ebx*4]
4546
        mov     eax, [ebx]
4547
        mov     eax, [ebx]
4547
.scan:
4548
.scan:
4548
        test    eax, eax
4549
        test    eax, eax
4549
        jz      .notfound
4550
        jz      .notfound
4550
        cmp     [eax+8], edi
4551
        cmp     [eax+8], edi
4551
        jnz     .next
4552
        jnz     .next
4552
        cmp     [eax+4], ecx
4553
        cmp     [eax+4], edx
4553
        jz      .found
4554
        jz      .found
4554
.next:
4555
.next:
Line 4569... Line 4570...
4569
        xor     edx, edx
4570
        xor     edx, edx
4570
        mov     [eax+4], edx
4571
        mov     [eax+4], edx
4571
        mov     [eax+8], edx
4572
        mov     [eax+8], edx
4572
        mov     [eax+12], edx
4573
        mov     [eax+12], edx
4573
        mov     [eax], edx
4574
        mov     [eax], edx
4574
        mov     [esp+36], edx
4575
        mov     [esp+32], edx
4575
        ret
-
 
4576
 
-
 
4577
no_del_keyboard_hotkey:
-
 
4578
     ret
4576
        ret
Line 4579... Line -...
4579
 
-
 
4580
 
4577
 
Line 4581... Line 4578...
4581
align 4
4578
align 4
Line 4582... Line 4579...
4582
 
4579