User Tools

Site Tools


touch

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
touch [2014/02/19 15:35]
daschuer [Mixxx Right click solution]
touch [2014/02/19 17:22]
rryan cleanups
Line 1: Line 1:
 ====== Problem ====== ====== Problem ======
  
-Mixxx 1.11 don'​t ​works very well on touch screen ​devices. This was reported in some bugs like +Mixxx 1.11 doesn'​t ​work very well on touchscreen desktop ​devices. This was reported in some bugs like 
    
   * [[https://​bugs.launchpad.net/​mixxx/​+bug/​1152572|#​1152572 MultiTouch compatibility and features]] ​   * [[https://​bugs.launchpad.net/​mixxx/​+bug/​1152572|#​1152572 MultiTouch compatibility and features]] ​
Line 7: Line 7:
   * [[https://​bugs.launchpad.net/​mixxx/​+bug/​1217733|#​1217733 right-click solution or replacement needed for touchscreens]]   * [[https://​bugs.launchpad.net/​mixxx/​+bug/​1217733|#​1217733 right-click solution or replacement needed for touchscreens]]
  
-These bug reports ​are containing ​many details and further ​lings, but are cluttered due to the post style. So here now brief overview.+These bug reports ​contain ​many details and further ​links, but are cluttered due to the post style. So here is a brief overview:
  
 ===== OS level touch to mouse solution ===== ===== OS level touch to mouse solution =====
  
-All three OS's are offering ​a native ​touch to mouse converter. It is required to be able to use legacy ​application ​which are not able to receive original ​touch events. ​The right click is generated by some kind gesture. It is only a single pointing device emulated to achieve maximum compatibility. Unfortunately these solutions are optimized for common standard widgets. Mixxx on the other side does not use standard widgets. The Mixxx widgets are designed to behave as close possible like hardware Midi controls. ​   +All three desktop OSs have a native mouse emulator for touchscreens for using legacy ​applications ​which do not handle ​touch events ​directlyUsually ​right clicks are generated by some kind of gesture ​or key combination. It is only a single pointing device emulated to achieve maximum compatibility. ​
-The main difference here is that Mixxx buttons are emitting without delay on the push event while normal GUI buttons are emitting on release event. This way we have not time to detect a right click gesture without delaying the left click.+
  
-Here an overview ​to the different native right click solutions:+Unfortunately these solutions are optimized for widgets that take effect on release. Since Mixxx widgets can be configured to emit on down-press, these solutions are not immediately usable. We do not have time to detect a right click gesture without delaying the left click. 
 + 
 +Here is an overview ​of the different native right click solutions:
  
 **Windows 8**  **Windows 8** 
-  * Right click = Releasing ​after long push +  * Right click = Release ​after long push 
  
 **Ubuntu** ​ **Ubuntu** ​
   * Right click = long push  ​   * Right click = long push  ​
   * Right click = Two finger click    * Right click = Two finger click 
-  + 
-**iOs**  +**OS X** 
-  * Right click = long push+  * Right click = two finger tap 
 +  * Right click = control button + click
  
  
 ===== Mixxx Right click solution ===== ===== Mixxx Right click solution =====
  
-  * To finger ​tab -> will issue the left click as well because you can' tap simultaneously ​+  * Two finger ​tap -> will issue the left click as well because you can'tap simultaneously ​
   * Drag out -> will issue the left click as well   * Drag out -> will issue the left click as well
   * Hold (Long press) -> will issue the left click as well   * Hold (Long press) -> will issue the left click as well
   * Context Menu button Or Shift+F10 -> you cannot focus a button without left click   * Context Menu button Or Shift+F10 -> you cannot focus a button without left click
-  * Ctrl+Click/Tab -> works :-)+  * Ctrl+Click/Tap -> works :-)
  
  
-Since the Mixxx buttons behaves like Midi buttons, a natural ​solution for the right click problem is to introduce a shift button ​like we can find on many DJ controllers as well+solution for the right click problem is to introduce a shift button ​-- similar to how OS X emulates right clicks.
  
-In https://​github.com/​mixxxdj/​mixxx/​pull/​76 ​was the  new "​[Controls]",​ "​touch_shift"​ Control Object ​introduced ​which can be connected to a GUI Shift Button, a keyboard key or a controller button. Once this is = 1.0, the connected button is pressed, all touch tabs will be interpreted as right clicks. ​+https://​github.com/​mixxxdj/​mixxx/​pull/​76 ​introduces a "​[Controls]",​ "​touch_shift"​ Control Object which can be connected to a GUI button, a keyboard key or a controller button. Once this is >0, all touch taps will be interpreted as right clicks. ​
  
 This allows us to issue right and left clicks without additional latency to detect a gesture. This allows us to issue right and left clicks without additional latency to detect a gesture.
  
-Please note: We have already discussed a way to generalize the shift key in Mixxx. We might will remove "​[Controls]",​ "​touch_shift"​ once this is introduce.+Please note: We have already discussed a way to generalize the shift key in Mixxx. We might remove "​[Controls]",​ "​touch_shift"​ once this is introduced.
  
  
 ===== Multi touch ===== ===== Multi touch =====
  
-All legacy widgets only support one pointing device. A second point might produces ​failure. Consequently the native touch to mouse solutions only support single touch. Once it is active the Application ​does not receive any touch events. This works for all legacy applications,​ but we loose the benefit of multi touch. ​+All legacy widgets only support one pointing device. A second point might produce ​failure. Consequently the native touch to mouse solutions only support single touch. Once it is active the application ​does not receive any touch events. This works for all legacy applications,​ but we lose the benefit of multi touch. ​
  
 The Qt4 solution relies on that. This means, if you enable touch for a single widget, the native touch to mouse solution is disabled. This way we have nice multi touch support on Mixxx'​s buttons but no touch at all for the library. ​ The Qt4 solution relies on that. This means, if you enable touch for a single widget, the native touch to mouse solution is disabled. This way we have nice multi touch support on Mixxx'​s buttons but no touch at all for the library. ​
Line 56: Line 58:
 See In https://​github.com/​mixxxdj/​mixxx/​pull/​76 this fallback solution only supports a single pointing device to be compatible with all legacy widgets. ​ See In https://​github.com/​mixxxdj/​mixxx/​pull/​76 this fallback solution only supports a single pointing device to be compatible with all legacy widgets. ​
  
-Normally, widgets will loose a button ​pressed state when loosing ​the focus. This is normal ​behaviour ​if we have a single pointing device. The widget implementation expects it and may rely on it.+Normally, widgets will lose their pressed state when losing ​the focus. This is normal if we have a single pointing device. The widget implementation expects it and may rely on it.
  
-If we need to control ​more widgets at the same timethe pressed state must not removed wit the focus. In this case we have no mouse emulation, but real multi touch support. This was Implemented ​on the widget itself. ​+If we need to control ​multiple ​widgets at the same time the pressed state should ​not be tied to focus. In this case we have no mouse emulation, but real multi touch support. This was implemented ​on the widget itself. ​
  
 So you will find both solutions in https://​github.com/​mixxxdj/​mixxx/​pull/​76 So you will find both solutions in https://​github.com/​mixxxdj/​mixxx/​pull/​76
-1.) A single point touch mouse emulation for all widgets in MixxxApplication. The touch point behaves exactly like a Mouse+1.) A single point touch mouse emulation for all widgets in MixxxApplication. The touch point behaves exactly like a mouse
-2.) A real multi touch solution in WWidget. It is still using Mouse events, but the widgets are prepared. This solution is not effected ​by the focus.+2.) A real multi touch solution in WWidget. It is still using mouse events, but the widgets are prepared. This solution is not affected ​by the focus.
  
  
touch.txt · Last modified: 2014/02/19 17:22 by rryan