Visualizzazione post con etichetta Mouse. Mostra tutti i post
Visualizzazione post con etichetta Mouse. Mostra tutti i post

mercoledì 3 giugno 2015

Rallentare la velocità del mouse


Ho un simpatico mouse ROCCAT Kone+, che linux mi riconosce tranquillamente.


Il comando lsusb ad esempio fornisce la seguente riga:
Bus 002 Device 005: ID 1e7d:2d51 ROCCAT Kone+ Mouse
Non ho installato nessun driver particolare, come ad esempio suggerito in questa pagina che contiene il driver ufficiale per linux. La pagina indica come attivare la gestione delle macro e delle funzioni avanzate con questo mouse, ma per adesso non ho intenzione di usarle.

L'unico problema con il driver di default è che la velocità del mouse risulta troppo elevata, rendendo il puntatore difficile da controllare quando si vogliono selezionare aree dello schermo o controlli grafici troppo piccoli.

Per poter ottenere una velocità adeguata, ho dovuto seguire la guida indicata in questa pagina, che suggerisce di effettuare dei tentativi di soglie di sensibilità con i comandi:
  • xinput list: per trovare l'id del mouse da usare nei comandi successivi
  • xinput list-props mouseId: per trovare l'elenco dei parametri del mouse configurabili 
  • xinput set-prop mouseId paramId valore: per attivare il valore di un parametro
Una volta trovato il valore corretto, è possibile renderlo attivo per ogni avvio del pc, andando ad aggiungere una sezione nel file /etc/X11/xorg.conf, nel mio caso  per rallentare il puntatore del mouse ho dovuto aggiungere in coda le seguenti righe:

Section "InputClass"
    Identifier "Roccat"
    MatchProduct "ROCCAT ROCCAT Kone[+]" # Product name from xinput list.
    Option "ConstantDeceleration" "3" # The same value as xinput.
EndSection


domenica 27 settembre 2009

Atlantide Media Center: Video Streaming

Gli utlimi aggiornamenti riguardo al media center scritto in python sono:
  • ho contattato il creatore dell'immagine che inizialmente avevo impostato come sfondo, per sapere se potevo usarla in via 'ufficiale'. L'autore, gentilissimo e bravissimo, mi ha risposto che i diritti di quell'immagine sono già venduti (buon per lui). Dopo una infruttuosa ricerca su internet, ho deciso di farmene una da me. Con Gimp ho quindi creato questo sfondo, che mi sembra adeguato.
  • ho attivato la visualizzazione del canale demoscene.tv alla tv! Da shell bisogna lanciare il seguente comando:
    mplayer -vc vp6 -framedrop -fs http://91.121.4.152:PORTA
    se PORTA = 8000: streaming in alta risoluzione (qui da me spesso si blocca)
    se PORTA = 8074: streaming in bassa risoluzione (meglio)
    se PORTA = 8072: streaming in bassa risoluzione del canale OldSchool! Amiga rulez! :)
  • ho impostato i movimenti all'interno del menù mediante i bottoni del mouse con il seguente codice:
    if event.type == MOUSEBUTTONDOWN:
    #sx
    if event.button == 1:
    command = lCurrentMenu[iItemSelected][1]
    globals()[command]()
    #cx
    #elif event.button == 2:
    #dx
    elif event.button == 3:
    sys.exit(0)
    #su
    elif event.button == 4:
    iItemSelected -= 1
    #giu
    elif event.button == 5:
    iItemSelected += 1

lunedì 1 giugno 2009

Freevo & il topo

Non avendo ancora acquistato un telecomando per controllare freevo, mi sono inventato un modo per poter usare in alternativa il mouse.

Ho appositamente creato una pagina nel wiki di freevo, nella quale descrivo come si configura.

Quello che non ho indicato, ma che potrebbe essere utile farlo in un altra pagina del wiki, è come lanciare freevo dopo che la fase di avvio del mediabox è terminata.

Ho deciso infatti di non eseguire automaticamente freevo, visto che potrei avere bisogno del media box solo come server (mldonkey o file) e non per vedere un film. Inoltre, l'esecuzione di freevo incrementa l'uso della CPU dal 3 al 30% (in modalità idle!), per cui in ottica di risparmio energetico e di durata di componenti hardware ho deciso di lanciarlo solo in caso di necessità.

Login automatico

La prima cosa da fare è quella di impostare il login automatico: si compila il semplice file dal nome autologin.c contentente:
int main() { execlp( "login", "login", "-f", "nomeutente", 0); }
dove al posto di nomeutente si mette l'utenza con cui si vuole effettuare l'accesso automatico.

Poi si modifica il file /etc/event.d/tty1 (/etc/init/tty1.conf) in modo che risulti simile a questo:


start on stopped rc2
start on stopped rc3
start on stopped rc4
start on stopped rc5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /sbin/getty -n -l /usr/local/sbin/autologin 38400 tty1
dove /usr/local/sbin/autologin è il programma compilato poco sopra.


Segnalazione di boot terminato

Nel file .bashrc, eseguito automaticamente nel passo precedente, si mette alla fine la seguente sequenza di comandi:
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
beep
./mousem
fi
Con beep si intende un comando che esegue un suonetto, disponibile nella fattispecie eseguendo "sudo apt-get install beep" da terminale. Se non si sente il suonetto, probabilmente è disabilitato nel file /etc/modprobe.d/blacklist, riabilitarlo commentando la riga "blacklist pcspkr".


Lancio di freevo a schermo spento

Il comando mousem del passo precedente è un altro applicativo scritto in c da compilare
#include <stdio.h>
#include <gpm.h>
#include <unistd.h>

int my_handler(Gpm_Event *event, void *data) {
switch(event->buttons) {
case 1:
printf("tasto dx\n");
break;
case 2:
printf("tasto cx\n");
break;
case 4:
printf("\a\n");
execl("/home/zac/vai.sh", "vai.sh", (char *)0);
break;
}
return 0;
}

int main() {
Gpm_Connect conn;
int c;
conn.eventMask = ~0; /* Want to know about all the events */
conn.defaultMask = 0; /* don't handle anything by default */
conn.minMod = 0; /* want everything */
conn.maxMod = ~0; /* all modifiers included */

if(Gpm_Open(&conn, 0) == -1)
printf("Cannot connect to mouse server\n");

printf("mouse menù\n");

gpm_handler = my_handler;
while((c = Gpm_Getc(stdin)) != EOF)
printf("%c", c);
Gpm_Close();
return 0;
}
Questo programma associa al tasto sinistro del mouse l'esecuzione di un programma a nostra scelta, nella fattispecie lo script vai.sh che contiene:
#!/bin/sh
xinit
./mousem
che esegue il server x, e quando si esce da freevo rilancia automaticamente il programma che ascolta il mouse.


martedì 6 gennaio 2009

Trust Mouse Optical Wireless in Linux

La mia pigra navigazione sul divano o intense sessioni a Wesnoth sul letto sono da oggi attività più semplici grazie ad un comodo mouse ottico wireless per il portatile acquistato per la befana. Un cavo in meno attorno al notebook è veramente una gran comodità, così come l'alta sensibilità di movimento e la morbidezza data dal sensore ottico.

L'unica attenzione da porre è quella verso il ricevitore USB che sporge (di 2 cm), per cui in caso di movimenti o cuscini appoggiati si potrebbe piegare (certo che uno come quello qua sotto risolverebbe sicuramente questo problema!)

Inserite le batterie (magari ricaricabili, da 1,5V e non da 1,2!) ed infilato il ricevitore USB, il comando dmesg mostra il seguente output:
usb 4-1: new low speed USB device using uhci_hcd and address 2
usb 4-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver hiddev
input: MLK Trust Mouse 15313 as /devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/input/input11
input,hiddev96,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse 15313] on usb-0000:00:1d.3-1
usbcore: registered new interface driver usbhid
/build/buildd/linux-2.6.24/drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
Una cosa fastidiosa che salta subito all'occhio è la completa assenza di un bottone dello spegnimento del mouse, per cui il laser rimane accesso anche a pc spento, con conseguente spreco di energia...

La confezione indica che il raggio di applicazione della comunicazione radio è di 8 metri, per cui nell'ottica media center lo si potrebbe usare addirittura come telecomando! Vanno comunque configurati i due bottoni aggiuntivi attivabili col pollice. Prendendo spunto dalla ricerca effettuata in questo vecchio post, verifico se nel frattempo sono state implementate soluzioni migliori.

In effetti è così, come indicato in questo post di ubuntuforums. Ho eseguito le istruzioni fino allo step 5, ma ho avuto difficoltà nel capire quale voce del file di configurazione /etc/X11/imwheel/imwheelrc attiva la funzione indetro e avanti di firefox con i tasti pollice. Per effettuare i test si modificano i file di configurazione e si lancia la riga messa nel file amouse.desktop, tipicamente imwheel -k -b "0 0 0 0 8 9". Alla fine ho creato il mio file ~/.imwheelrc contenente:
".* - Mozilla Firefox"
None,Thumb1,Control_L|KP_Subtract
None,Thumb2,Control_L|KP_Add

Da verificare se il bug di imwheel si ripresenta o meno, visto che nel post sopraindicato pare che sia preso in considerazione nello step 3.

sabato 8 settembre 2007

Configurazione del mouse e dei tasti aggiuntivi

Update del 9 gennaio 2009: questo post è stato reso obsoleto da questo più recente.

Il mouse che uso assieme al portatile è il MI-2500 Optical Mouse della Trust:


Il mouse è dotato dell'indispensabile rotellina centrale, e di due tasti laterali.

Per far funzionare la rotellina centrale e riconoscere i tasti laterali a xorg, bisogna modificare il file xorg.conf in questo modo:

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mouse1"
Option "Protocol" "ExplorerPS/2"
Option "Buttons" "7"
Option "ZAxisMapping" "4 5"
EndSection

Questa configurazione è stata ottenuta effettuando degli esperimenti e verificando il risultato con il programma xev, che serve a vedere se funzionano tutti i bottoni e che codice evento forniscono.

Nel mio caso ho ottenuto la seguente mappa:

Da notare che se nel xorg.conf è presente la riga
Option "Device" "/dev/input/mice"
la rotellina centrale è mappata sui valori 4 e 5 anzichè 6 e 7; inoltre, se è impostato questo device la rotellina non funziona, sia mettendo ZAxisMapping "4 5" che "6 7".

Per capire con quali /dev/input fare gli esperimenti, ho lanciato il comando
cat /dev/input/[mouse]
Se muovendo il mouse si generano caratteri spuri, vuol dire che il device è usabile.

UPDATE: Ho appena scoperto che il mouse USB viene mappato all'avvio alcune volte come /dev/input/mouse1, altre su mouse2...

Soluzione definitiva: mettere come riferimento /dev/input/mice nel file xorg.conf. (così come era all'inizio...(?))


Tasti Laterali

Innanzi tutto dobbiamo avere un'idea di cosa far fare ai tasti laterali; nel mio caso pensavo di mettere la funzionalità di ingrandimento e rimpicciolimento del font nelle pagine mostrate da Firefox.

Per poter usare in maniera utile i tasti laterali, bisogna installare imwheel.

Nel file di configurazione che imwheel installa:
/etc/X11/imwheel/imwheelrc
ho messo questa configurazione:
"^Firefox-bin$"
None,Thumb1,Control_L|KP_Subtract
None,Thumb2,Control_L|KP_Add
Questo indica a imwheel di inviare i comandi di Control++ e Control+- alla finestra comandata dall'applicazione chiamata firefox-bin. Quei comandi servono proprio ad ingrandire e rimpicciolire i font nel browser.

Inoltre nel file /etc/X11/imwheel/startup.conf ho inserito la riga:
IMWHEEL_START=1
in modo che imwheel parta automaticamente all'avvio di xorg.


UPDATE:

Ho notato che anche per altre applicazioni ha senso fare lo zoom con i tasti laterali del mouse, come ad esempio il document viewer di default di gnome evince;
ho quindi aggiunto al file /etc/X11/imwheel/imwheelrc le righe:

"^evince$"
None,Thumb1,Control_L|KP_Subtract
None,Thumb2,Control_L|KP_Add

e ho lanciato il comando imwheel -k che automaticamente riavvia il programma imwheel rendendo effettiva la nuova configurazione.

UPDATE del 6 gennaio 2009:
Purtroppo c'è un fastidioso bug che rende scomodo l'uso di imwheel, per cui è necessario trovare una soluzione alternativa (o risolvere il bug!)