Autore Topic: Leggere l'azione di una penna su un Tablet  (Letto 1326 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Leggere l'azione di una penna su un Tablet
« il: 10 Agosto 2012, 03:50:05 »
Con la revisione #5024, è possibile leggere mediante Gambas l'azione della penna su un Tablet, intercettandone gli eventi.

Sulla base dei messaggi di Minisini ho cercato di farne una breve descrizione nella nostra Wiki:
http://www.gambas-it.org/wiki/index.php/Guide_della_comunit%C3%A0#Tavoletta_grafica_e_Gambas
« Ultima modifica: 18 Agosto 2012, 18:27:08 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #1 il: 10 Agosto 2012, 08:40:28 »
Forse mi son perso qualche puntata, ma sarebbe anche interessante sapere come ha fatto ad usare gambas su di un tablet :)

O forse il termine tablet e' inteso come 'tavoletta grafica' ?  :-\
« Ultima modifica: 10 Agosto 2012, 09:09:32 da milio »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #2 il: 10 Agosto 2012, 16:21:11 »
Forse mi son perso qualche puntata, ma sarebbe anche interessante sapere come ha fatto ad usare gambas su di un tablet :)

O forse il termine tablet e' inteso come 'tavoletta grafica' ?  :-\


La questione del Tablet con Gambas è tutta iniziata con la domanda di un programmatore, il quale ha accennato al "Wacom tablet".
Minisini nella sua risposta ha inserito anche questa parte finale:
«I have no idea if it works. Maybe I will buy a Wacom tablet, I don't know. But now I'm waiting for your returns!»

Pertanto, sono portato a supporre  :-\ che si intendano più in generale le tavolette grafiche. Vi sono tra l'altro due proprietà della rinnovata classe "Pointer", che sono quelle riferite all'inclinazione ed alla pressione della penna sulla tavoletta.
Leggo nella pagina del sito ufficiale della Wacom: «Insieme alla penna Wacom sensibile alla pressione e all’inclinazione,.....». Quindi suppongo  :-\ che si tratti di tavolette grafiche.
« Ultima modifica: 10 Agosto 2012, 16:30:47 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #3 il: 13 Agosto 2012, 19:07:45 »
Le wacom sono tavolette grafiche, per cui dei device di puntamento che vengono interfacciate, attualmente, tramite porta usb. Anticamente erano su seriale...


Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #4 il: 13 Agosto 2012, 19:18:18 »
vengono interfacciate, attualmente, tramite porta usb.
Sarebbe stimolante in modo... diabolico  :devil: magari provare ad intercettare ed interpretare  :specchio: i dati grezzi provenienti da quella tavoletta !  :coder:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #5 il: 14 Agosto 2012, 09:33:28 »
Tocca vedere se i produttori dei questi device hanno pubblicato il protocollo...  :-\

Come sappiamo, molto dell'hardware in giro è tenuto segreto o soggetto a pesanti limitazioni (merito di windoz...).

Comunque, non mi sono mai interessato a questo campo, ma è probabile che ci sia in giro ci sia già del software (driver) per linux. Magari è possibile prendere spunto e basi da lì...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #6 il: 15 Agosto 2012, 21:18:07 »
Qualcuno ha già fatto delle prove al riguardo:

«Hi,

After some days waiting for the delivery I got new wacom bamboo pen.

I was doing some test using the attached project and I got some crash
(project and IDE).

I you move the tablet pen to the screen limits then you got a signal 22 and
a segment fault. You got it when you are running the app and when you are
in the IDE too. When the IDE crash you can see 'core' was generated (but I
don't know where is it to attach to this mail).

Other issue is Pointer.Rotation got the same value every time -14.0625

XTilt and YTilt values are always 0 (maybe this wacom tablet doesn't
support this...)

Type and Pressure work fine.

And interesting thing is when tablet is being registered, PositionX and
PositionX are float and when mouse is registered are integers values.
»


Minisini risponde:
« 1) Please: can you recompile gb.qt4 component with no optimization?

$ cd <gambas sources>/trunk/gb.qt4
$ make clean
$ make "CFLAGS=-O0 -g -ggdb" "CXXFLAGS=-O0 -g -ggdb"
$ sudo make install

2) Then send me the backtrace of the crash again.

3) If possible, can you try your program with gb.gtk instead of gb.qt4
to compare what you get? Same crash, other crashes, no crash, other
event data...

Thanks!

--
Benoît Minisini
»
« Ultima modifica: 15 Agosto 2012, 21:29:27 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #7 il: 16 Agosto 2012, 21:32:46 »
Bene, discussione da tenere sotto controllo...  :ok:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #8 il: 17 Agosto 2012, 02:32:58 »
Bene, discussione da tenere sotto controllo...  :ok:

C'è stato successivamente un susseguirsi di messaggi frai i due, alla fine Minisini ha effettuato qualche correzione al codice relativo a quella funzionalità, ed il tizio ha detto che ora funziona.

Sembra, però, che rimanga ancora un nodo da sciogliere con gb.gtk:
«Now I don't understand why your pen is detected with the GIMP that uses
GTK+, and not by gb.gtk...

--
Benoît Minisini
»

Intanto ho chiesto al tizio di poter porre come allegato un suo programma wacom-test, che tra l'altro ha reso già pubblico nella mailing list a seguito del suo dialogo con Minisini. Sto attendendo l'assenso. In caso positivo lo allegherò qui.
« Ultima modifica: 17 Agosto 2012, 02:35:33 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #9 il: 17 Agosto 2012, 14:38:04 »
Minisini fa sapere che sta apportando qualche variazione alla nuova funzionalità in questione, invitando il tizio a effettuare anch'egli di conseguenza alcune modifiche al suo programma test:

«Before I want to change the "tablet" events interface.

You must know that in GTK+, you must explicitely tell him which widget
gets "extended" (i.e. tablet) events. With Qt this is not required.
Hence the "UseTablet" property.

I finally want to define special events for "tablets":
- PointerPress
- PointerRelease
- PointerMove

--> That should allow me to remove the UseTablet property.

Note that there are two special events too (named "proximity in" and
"proximity out"), but they are handled differently in Qt and GTK+, so I
must think before implementing them.

And I want to make Pointer.X and Pointer.Y relative to the control
receiving the events (like Mouse.X and Mouse.Y), and make
Pointer.ScreenX and Pointer.ScreenY properties too for the global
coordinates.

So you will have to update your example after I have made the changes,
and then I will put it with the other Gambas examples.

Regards,

--
Benoît Minisini
»
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #10 il: 17 Agosto 2012, 14:45:22 »
Bene, l'autore del programma test per scrivere su una tavoletta grafica mediante la nuova funzionalità di Gambas, da me contattato, ha acconsentito cortesemente a pubblicarlo anche su questo forum:
«Sure! You can use this test.

I attach the last version with some improvements.

Regards,
Ricardo
»

lui si chiama, Ricardo Díaz Martín.

Il programma prevede la possibilità di essere usato anche con il classico topastro.

Con una successiva nota Ricardo mi fa sapere che, non appena Minisini avrà effettuato le ulteriori modifiche, apporterà anch'egli le conseguenti variazioni al suo applicativo-test, e ci darà la versione quindi successiva.
Inoltre, Minisini inserirà quell'applicativo addirittura negli esempi di Gambas.

Gli iscritti al forum possono scaricare l'ultima versione del programmino test di Ricardo, nel messaggio più giù.
« Ultima modifica: 18 Agosto 2012, 21:35:38 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #11 il: 17 Agosto 2012, 21:16:58 »
Giunge altro messaggio da Minisini:
« Hi again,

1) In revision #5051, I have updated the Tablet event management:

- Finally I decided to keep the DrawingArea tablet property. But I
renamed it 'Tablet' instead of 'UseTablet'.

- So there is no special events. Just MouseDown, MouseUp and MouseMove.

- Pointer absolute coordinates are now returned in Pointer.ScreenX and
Pointer.ScreenY properties.

- Pointer.X and Pointer.Y return the pointer coordinates relative to the
control receiving the events.

2) I have modified gb.gtk so that it enables all detected XInput pointer
devices (they are all disabled by default apparently). Does it change
something when you use your example with gb.gtk?

I have a strange idea anyway if it does not work: using the GIMP device
configuration file to configure the devices! But the user will have to
install GIMP and configure XInput devices from it. A bit weird, isn't it?

3) I'd like to put your project in the Gambas examples, but it has a few
problems. Can you fix them?

- Controls should be made private to the form.

- It is useless and slower to write 'Me.MyControl' to access MyControl
from its form. Just write 'MyControl'.

- Can you use the Paint class instead of the Draw class? The Paint class
can draw things anti-aliased at floating-point coordinates.

Thanks in advance.

--
Benoît Minisini
»
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #12 il: 18 Agosto 2012, 21:29:01 »
Ricardo, l'autore del programma test, ha rilasciato una nuova versione:

« I attach new version using Paint class... »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #13 il: 19 Agosto 2012, 16:29:24 »
Nella mia qualità di Ambasciatore  :rotfl: vi trasmetto di seguito un messaggio di Minisini sempre relativo all'oggetto di questa discussione:

« Hi,

Since revision #5057, Gambas handles "tablet" events, both in gb.gtk and
gb.qt4.

I made a new example named "Tablet", inspired by a project of Ricardo
Díaz Martín, to show that.

During the development, I fixed many inconsistencies in mouse event
management between gb.gtk and gb.qt4. So if you encounter any
regression, please tell me!

Normally, if you don't do strange mouse things (like doing some stuff
only if the left and middle button are pressed at the same time...), you
shouldn't notice anything.

Regards,

--
Benoît Minisini
»

Fra le altre cose, Minisini, come vi avevo preannunciato, dice di aver dunque inserito un nuovo programma/esempio (sulla base di quello di Ricardo Diaz) in Gambas proprio afferente alla gestione di una tavoletta grafica.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Leggere l'azione di una penna su un Tablet
« Risposta #14 il: 22 Agosto 2012, 01:25:21 »
Non ho una tavoletta grafica, ad eccezione di quella del bagno, ma l'aggiunta di questo evento mi piace.

Sicuramente ci saranno dei ritorni, dopotutto è cosa nuova per gambas, ma confido in un veloce aggiustamento.

Quello che non ho capito, e forse non c'era proprio scritto, è dove è stato inserito questo evento (Form,...).