Mysule pod Linuxem
VT a X



Problem podpory mysi lze rozdelit v zasade na dva: pod konzoli (virtualni terminaly 1..63) a pod X. Seriova mys se standartne pripojuje na seriovy port /dev/ttyS0 nebo /dev/ttyS1. Aby se predeslo komplikacim pri zmene portu ci zjednodusila manipulace pri zmene, je v adresari /dev soft link z mouse na nektere fyzicke zarizeni (u busmouse mysi to nemusi byt seriovy port). Takto lze pouzivat i neseriove ci nestandartni mysi. Prikladem bud microsoft busmouse. Z pohledu aplikaci se potom pouziva primo zarizeni /dev/mouse. priklad:
ls -l /dev/mouse

lrwxrwxrwx   1 root     root            5 May 22 01:27 mouse -> ttyS0
Ale pozor, je mozna mala komplikace pri pouzivani dvemi aplikacemi zaroven : pokud z aplikace A pouzijete /dev/mouse jez ukazuje na /dev/ttyS0 , zamkne se pristup ostatnich aplikaci pouze pro zarizeni /dev/mouse a nikoli /dev/ttyS0 !!!. Pak se vam muze stat ze spustite treba minicom (modemovy program) a ten zkusi otevrit /dev/ttyS0 coz se mu povede (stejny problem jako u /dev/mouse je u /dev/modem. )
Takze: pokud budete chtit pouzivat zarizeni /dev/mouse , nastavte logicky link mouse tak, aby ukazoval na skutecny ovladac zarizeni mysi ( ttyS[0..3] ) a dejte si pozor abyste nepouzili toto skutecne zarizeni ( ttyS[neco]) z jineho programu. Existuje sice cesta jak zamknout obe dve (/dev/mouse a /dev/ttyS[neco] ci co) zarizeni ale ja si to nepamatuju.

Jak vlastne mysoidnost funguje (kdyz uz funguje, pod X i VT):

Predpokladejme ze mate funkcni mys pod konzoli (virtualni terminaly 1..63). Pokud si spustena aplikace zazada o pouziti mysi, je ji mys pridelena v ramci VT a to asi tak stejnym zpusobem jako v dosu (muze cist souradnice X,Y mysi a tlacitka).
Prikladem je Midnight Commander, kde mys funguje stejne jako treba v Nortonovi pod dosem. Pokud vsak aplikace zajem o mys nema (a v jadre mate zkompilovanu podporu pro COPY&PASTE mysi (v novejsich jadrech snad standartne) - pro VT) muzete podrzenim leveho tlacitka a oznacenim casti textu provest na tomto textu funkci COPY a potom treba i v jinem VT provest PASTE prostrednim tlacitkem (u 2 tlacitkovych mysi mozna kombinaci L+P). Pokud uz mate oznaceny text (je zobrazen inverzne) tak lze pravym tlacitkem mysi nastavit novy konec (delku) oznaceneho bloku.

Pod X se da navic na takto oznaceny text kouknout pres clipboard( xclipboard ).


Tohle cele se dela v VT spustenim programu gpm , coz je v podstate demon jez prijima sled seriovych dat a poskytuje nejakym zpusobem informaci o souradnici mysi.
gpm je v Slackware v baliku `` gpm '' na zakladni serii disku A (diska3)
Jeho parametrem je typ mysi (protokolu) a zarizeni ktere ma pouzivat. Prakticky priklad:
gpm -t msc /dev/ttyS0
spusti mys v modu microsoft (2 tlacitka) na zarizeni /dev/ttyS0 (COM1).
gpm -t ms /dev/mouse
spusti mys v modu mousesystems (3 tlacitka) na zarizeni /dev/mouse coz je link na skutecne pouzite zarizeni.
Tento prikaz se typicky spousti z nejakeho skriptu po bootu ( /etc/rc.d/rc.local ). Pro dalsi info doporucuji manualovou stranku ( man gpm ).
Zde jako priklad muj soubor rc.local :
#! /bin/sh
# Put any local setup commands in here
# Running gpm
echo Setting volume
/usr/bin/setmixer vol 40
echo "Running gpm..."
gpm -t ms & 
#echo NASTAVUJU swapfile
#/sbin/swapon /DOS2/swapfile
echo Nastavuju rychlost klavesnice na 30,250
/sbin/kbdrate -r 30 -d 250
#nastav 115200 na COM2
/bin/setserial /dev/ttyS1 spd_vhi
#nastav multiple 8 sektoru
/sbin/hdparm -m 32 -u 1 -W 1 -X 34 /dev/hda
#green vypinani monitoru
/sbin/green_set ON
#blanking 15 minut
/bin/setterm -blank 15
#start news
echo News server disabled in rc.local
#/usr/lib/news/etc/rc.news
#start dynamicke swapovani
echo Adding dynamic swapfile
/sbin/swapd -d /DISK3 -i 2 -s 4M -l 4M -u 5M
#cdrom
echo Mounting cdrom under /cdrom
/bin/cdr
echo Starting httpd
/usr/sbin/httpd


Mys pod X je zvlast problem, protoze X server nevyuziva sluzeb programu gpm a dela si vsechno sam.
Po startu si X server precte svuj konfig soubor (vetsinou /var/X11R6/lib/XF86Config pro Xfree 3.1.1 a vyssi (nebo jeho personalni obdobu v domacim adresari uzivatele) kde v sekci mouse najde v podstate to same co se musi rici gpm. Specielne existuji tyto prikazy ci klicova slova:
Protocol {Microsoft,MouseSystems,Logitech ...} - typ protokolu seriovych mysi
Emulate3Buttons - pro 2 tlacitkove mysi lze stisknutim obou (L+P) cuflu zaroven emulovat prostredni tlacitko.
Manualova stranka je
man XF86Config
Ukazka z meho /var/X11R6/lib/XF86Config souboru pro 2tl. mys:

# **********************************************************************
# Pointer section
# **********************************************************************

Section "Pointer"
#    Protocol    "MouseSystems"
    Protocol	"Microsoft"
    Device      "/dev/ttyS0"

# When using XQUEUE, comment out the above two lines, and uncomment
# the following line.

#    Protocol	"Xqueue"

# Baudrate and SampleRate are only for some Logitech mice

#    BaudRate	9600
#    SampleRate	150

# Emulate3Buttons is an option for 2-button Microsoft mice

    Emulate3Buttons

# ChordMiddle is an option for some 3-button Logitech mice

#    ChordMiddle

#RTS,DTR - nastavuje snad prislusne signaly na portu nebo co

#ClearDTR
#ClearRTS

EndSection

# **********************************************************************
# Monitor section
# **********************************************************************

atakdale...


Pokud narazite na problemy v X, prvni zkontrolujte:


Jaky je rozdil mezi /dev/cua[neco] a /dev/ttyS[neco]

V podstate jde o stejny seriovy port u obou specialnich souboru zarizeni, ale lisi se zpusobem otevirani. Pokud budete pracovat na nejakem ULTRIXu, tak budete muset pouzivat pro neco /dev/cua jinak pro linux doporucuji /dev/ttyS[neco].


Mala rada pro odzkouseni jestli seriova mys vubec neco dela.

Spustte si minicom -o (emulator terminalu po seriove lince, jako telix pod dosem), nastavte mu zarizeni seriovy port vasi mysi a spravnou rychlost (1200 Bd, nektere Logitech mysi mohou jet snad i rychleji) a zkuste s mysi zahejbat. Mely by se vypisovat kraviny - indikuje ze funguje preruseni.
Urcitym specifickym priznakem tohoto testu se da zjistit, jestli neni mys spustena na portu, jehoz IRQ je jiz obsazeno - pak se pri hejbani mysi vypisuje obcas 1 znak - asi po 10 s (interval po kterem jadro sahne na port a preventivne si jeden znak precte).


Zpatky na hlavni stranku