Protokol mysi PS/2

Pavel Hudecek pavelhudecek
Středa Březen 17 12:01:29 CET 2004


> Nasel jsem i prislusne misto ve zdrojacich kernelu Linuxu, ale tam to
vypada,
> ze PS/2 mys je obsluhovana radicem klavesnice, takze driver ziskava
> uz jenom upravene informace, podobne jako z klavesnice.

Ano presne tak to je, funguje normalne pres porty klavesnice, jen
radic klavesnice pri te prilezitosti generuje preruseni mysi...

Pomerne neprakticke je, ze generuje preruseni kvuli kazdemu
bytu zvlast a tak se dost spatne poznava, ktery je prvni.

Kdysi jsem se pokousel psat vlastni operacni system a tak
zasilam kousek, ktery obsluhuje PS/2 mys:

dwo equ dword ptr
k1 equ 1024
k393 equ 393*k1
msSwp   equ 408*k1
msX   equ ds:[k393]
msY   equ ds:[k393+4]
msCur   equ dwo ds:[k393+8]
msCurVel equ dwo ds:[k393+12]
msStav   equ dwo ds:[k393+16]  ;b0-31: Tl 0,1,2,3,4,5,6,7, +on/-off
msCteni  equ   ds:[k393+20]  ; B0 poradi cteneho cisla, B123 cisla

itr44: pushad    ; PS/2 Mys
 push ds
 mov ax,4*8
 mov ds,ax
 in al,60h
 mov ecx,msCteni
 cmp cl,1
 jnz short iMsDal
 test al,8
 jnz short iMsDal
 pop ds
 popad
 iretd
iMsDal: cmp cl,3
 jz short iMsVse
 and ecx,3
 mov msCteni[ecx],al
 inc byte ptr msCteni
 pop ds
 popad
 iretd
iMsVse: mov msCteni[3],al
 mov al,msCteni[1]
 call iMsZjistiStisk
 mov ah,msCteni[3] ; 1
 mov al,msCteni[2] ; 3
 call msMove    ; msMove je procedura pohybyjici s kursorem
 mov msCteni[0],byte ptr 1
 pop ds
 popad
 iretd

Pro pripadne DOSove stouraly poznamenavam, ze indexovat lze libovolnym
registrem, jen musi byt 32bitovy. Dokonce jsou mozne i takovehle
silenosti:

mov gs:[eax*4+ebx-1000000],byte ptr 231

Jinak v dnesni dobe, kdy vsechny normalni operacni systemy disponuji
wokennim rozhrannim, bych doporucoval spise vyuzit funkci OS (a zejmena
udalosti) k tomu urcenych. Ma to zretelne vyhody, protoze kdyz si napisete
vlastni rozhranni, tak se muzete dockat neprijemneho prekvapeni, kdyz
to s nejakym klonem HW nebude chodit, protoze jste o jeho existenci
nemeli tuseni. Pokud pouzijete rozhranni systemu, je jistota, ze toto bude
chodit samo i bez vaseho pricineni s pomoci ovladacu od vyrobce.

Ponekud odlisna je ovsem situace, kdyz chcete mysi ovladat jednocip...

H.

------
http://www.diametral.cz






Další informace o konferenci Hw-list