Dual monitor setup gives wrong aspect ratio

Bug #448963 reported by Ramalho
32
This bug affects 6 people
Affects Status Importance Assigned to Milestone
Wizardpen
Confirmed
Medium
Gerard Krol

Bug Description

Hello,

I'm using the wizardpen with a dual monitor setup (latest drivers from PPA, via HAL/fdi).
The tablet is working smoothly -- sensitivity/buttons/mouse/Gimp/Inkscape/Blender/etc -- except for the aspect ratio along my two monitors (same size/resolution, using TwinView), i.e., when drawing circles I get ellipses instead.

I've tried playing with KeepShape ( <merge key="input.x11_options.KeepShape" type="string">on</merge> ) on the fdi file with no success. Xorg.0.log doesn't mention any KeepShape option at all.

Is there a way to make my tablet keep the aspect ratio along both monitors or restrict the tablet to one of them?

Thanks.

Revision history for this message
Ramalho (g-ramalho) wrote :
Revision history for this message
Gerard Krol (gerard-) wrote :

The wizardpen driver doesn't support KeepShape (yet?). You can try setting ScreenX and ScreenY to the resolution of the monitor you want to use. Let me know if that works.

Changed in wizardpen:
importance: Undecided → Medium
Revision history for this message
Gerard Krol (gerard-) wrote :

My goal is to get a "KeepShape" option, which is enabled by default and correctly supports multiple monitors into 0.9

Changed in wizardpen:
milestone: none → 0.8
milestone: 0.8 → 0.9
assignee: nobody → Gerard Krol (gerard-)
status: New → Confirmed
summary: - Dual monitor problem
+ Dual monitor setup gives wrong aspect ratio
Revision history for this message
Fabrice NEYRET (fabrice-neyret-inria) wrote :

I have implemented an extention to wizardpen that exactly solved that:
I added a config flag biscreen = 0 (usual behavior) , 1 (map tablet on left screen), 2 (map tablet on right screen).

How can I integrate it in the distrib ?
These are really few lines of code, I can easily email them to somebody more responsible and aware about packaging than I am.
Mail me to Fabrice.Neyret AT inria.fr

Regards,

Fabrice

Revision history for this message
Wladimir J. van der Laan (laanwj) wrote :

Fabrice: can you please attach your patch here, it'd be very useful for me at least. I'd like to restrict the pen to one monitor at a time.

Revision history for this message
Fabrice NEYRET (fabrice-neyret-inria) wrote :

See my patch below. The code editing was easy, but I don't know anything about packaging and reinserting into community project, so it would be cool that somebody who knows do the trick. (I had multiple individual request, I guess updating the official code would be really usefull).

Fabrice

Here is the detail:

....................................................................................
I added a simple extention allowing to use dual-screen (with one single large Desktop): rather than deforming the tablet-to-desktop mapping caused by the different aspect ratio (which shows very impractical in practice), I added a configuration variable 'biscreen' which, if set to 1 or 2, only maps the tablet on the left or right screen (which fit to the common usage: one gimp on one side and the remainder on the other). Value 0 correspond to the nowaday behavior.

....................................................................................
My modifications, based on version 0.6.0.2:
....................................................................................

* wizardpen.h:
   in "struct WizardPenPrivateRec":
     ADD:

       int screenflag;

* wizardpen.c:
    in "WizardPenPreInit() ":
      right before "// increment setting"
        ADD:

    s = xf86FindOptionValue(local->options, "BiScreen");
    if (s && strlen(s) > 0) {
    priv->screenFlag = atoi(s);
    xf86Msg(X_CONFIG, "%s: BiScreen = %d\n", local->name, priv->screenFlag);

* in "USBReadInput() "
       right before "if (1)"
         ADD:

     if (priv->screenFlag) {
            report_x /= 2; /* half of the bi-screen */
            if (priv->screenFlag==2) report_x += screenInfo.screens[0]->width/2;
    }
        if (1)

* in "ConvertProc() "
     right before "return TRUE"
       ADD:
         if (priv->screenFlag) {
            *x /= 2; /* half of the bi-screen */
            if (priv->screenFlag==2) *x += screenInfo.screens[0]->width/2;
    }

* in "ReverseConvertProc () "
    right before " valuators[]= "
       ADD:
          if (priv->screenFlag) {
        if (priv->screenFlag==2) x -= screenInfo.screens[0]->width/2;
         x *= 2; /* half of the bi-screen */
      }

enjoy !

Revision history for this message
Martin Owens (doctormo) wrote :

Hey Fabrice, you need to make either a diff patch or a bazaar branch containing your changes.

http://developer.ubuntu.com/packaging/html/fixing-a-bug.html

Revision history for this message
Ken Causey (bx0-ozn-zwn) wrote :

I have the same issue with dual screens and I appreciate Fabrice's solution but I have to wonder if it isn't somewhat short-sighted. I can see a use for a much more general solution that doesn't assume simply two monitors side by side.

I'm thinking that what might be best is a set of four floating point numbers to indicate the 'percentage' of the display in each direction to which the tablet should be mapped: starting and ending x values and starting and ending y values. Each value would have a valid range of 0.0 to 1.0 where, for example an x value of 0.0 is the far left edge of the virtual screen and 1.0 is the far right.

Thoughts?

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.