|
|
| (8 intermediate revisions not shown) |
| Line 1: |
Line 1: |
| | Random tidbits of information about projects I'm hacking on... | | Random tidbits of information about projects I'm hacking on... |
| | | | |
| - | ==multi-point-touch==
| + | * [[User:Jketreno/multi-point-touch|Multi-Point-Touch on MeeGo]] |
| - | During the MeeGo Conference I gave a presentation on multi-point-touch support on MeeGo ([http://conference2010.meego.com/session/multi-touch-meego-hardware-user overview and video] [http://conference2010.meego.com/sites/all/files/sessions/meego-conference-2010-multi-point-touch.odp slides]). As mentioned during that presentation, to add multi-point-touch to Qt applications running on top of MeeGo 1.1 requires a few changes.
| + | * [[User:Jketreno/content|Improving MeeGo Content Management]] |
| - | | + | * [[User:Jketreno/scaling|A Density Independent UI on MeeGo]] |
| - | The feature in MeeGo's bugzilla which is tracking the status of inclusion can be found [http://bugs.meego.com/show_bug.cgi?id=11625 here].
| + | * [[User:Jketreno/theme-assets|Theme Assets]] |
| - | | + | * [[User:Jketreno/meego-image-resize|MeeGo Image Resize script]] |
| - | As you will find in the comments on that bug, since the MeeGo Conference last year, work has continued to move forward. The components that need to be changed in current (as of early January 2011) MeeGo systems are now all available in MeeGo Trunk.
| + | |
| - | | + | |
| - | If you are running an older image, you need to update to the latest version of Qt in Trunk (build version stamp 4.7.1-4 or newer), xorg-x11-drv-mtev (remove xf86-input-mtev if you have it), and mtdev.
| + | |
| - | | + | |
| - | '''NOTE''': If you had previously install the multipointtouchplugin, you need to remove it via one of these methods:
| + | |
| - | zypper remove multipointtouchplugin
| + | |
| - | or
| + | |
| - | rm /usr/lib/qt4/plugins/libmultipointtouchplugin.so
| + | |
| - | If you do not remove that plugin, touch will not work correctly with the XInput2.0 enabled version of Qt.
| + | |
| - | | + | |
| - | ===touch doesn't work on my system===
| + | |
| - | If you have updated to the latest version of Qt and the mtev X Input driver and find that the cursor tracks your finger, but you can't tap/release on anything, chances are your kernel driver is not correctly following the multi-touch-protocol.txt. The most common error is for the driver to not be sending a final SYN_MT_REPORT and then a SYN_REPORT at the end of the event sequence when the last contact is removed from the display, which results in the stack thinking a contact is still being made (and so no release is ever sent) From the kernel's multi-touch-protocol.txt document:
| + | |
| - | | + | |
| - | If the driver reports one of BTN_TOUCH or ABS_PRESSURE in addition to the
| + | |
| - | ABS_MT events, the last SYN_MT_REPORT event may be omitted. Otherwise, the
| + | |
| - | last SYN_REPORT will be dropped by the input core, resulting in no
| + | |
| - | zero-contact event reaching userland.
| + | |
| - | | + | |
| - | ===enabling a native application===
| + | |
| - | Prior to having patches to Qt to add XInput2.0 support, applications had to load a plugin that would connect to the X event queue and process the XInput2.0 events. That is no longer necessary and applications will now just work.
| + | |
| - | | + | |
| - | ===enabling a QML application===
| + | |
| - | For gestures, you should use the qml-gesturearea project from qt-labs to add multi-point touch gestures to your QML applications.
| + | |
| - | | + | |
| - | ===qml-gesturearea===
| + | |
| - | As Frederik Gladhorn indicated during [http://conference2010.meego.com/session/gestures-qt his talk] at the MeeGo Conference in Dublin, the folks over at Qt have been working on an improved QML GestureArea component.
| + | |
| - | | + | |
| - | You can pull and play with what they're cooking as follows:
| + | |
| - | git clone git://gitorious.org/qt-labs/qml-gesturearea.git
| + | |
| - | git clone git://gitorious.org/qt-labs/qml-gestures-examples.git
| + | |
| - | If you are building qml-gesturearea with a version of Qt prior to 4.7.1, you may need to patch it to get it to build:
| + | |
| - | cd qml-gesturearea
| + | |
| - | sed -i -e 's,q->timeout(),700,g' qdeclarativegesturerecognizers.cpp
| + | |
| - | qmake
| + | |
| - | make && sudo make install
| + | |
| - | | + | |
| - | ===multiple input device support===
| + | |
| - | Qt is configured to listen to pointer (mouse) events the first core pointer provided by X. Additional core pointers are ignored. Touch events are received from any touch device bound to the first core pointer, as well as any touch devices which are floating (not bound to any core pointer)
| + | |
| - | | + | |
| - | ===core pointer===
| + | |
| - | If you do nothing, X will default to binding an input device to the first Core Pointer. This means that the touch screen will default to control the cursor --as you move your finger around, mouse events will be generated, the cursor will move, etc.
| + | |
| - | | + | |
| - | You can use the xinput utility to "float" the touch device. On the Lenovo S10, running 'xinput list' shows something like the following:
| + | |
| - | | + | |
| - | ⎡ Virtual core pointer id=2 [master pointer (3)]
| + | |
| - | ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
| + | |
| - | ⎜ ↳ Cando Corporation Cando 10.1 Multi Touch Panel with Controller id=13 [slave pointer (2)]
| + | |
| - | ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)]
| + | |
| - | ...
| + | |
| - | | + | |
| - | Looking at the above, you can see the touch device (Cando Corporation...) is device id 13. To float that input device, run:
| + | |
| - | | + | |
| - | xinput float 13
| + | |
| - | | + | |
| - | '''NOTE:''' If you don't have xinput, you can install it on MeeGo by running:
| + | |
| - | zypper install xorg-x11-utils-xinput
| + | |
| - | | + | |
| - | Once you float the input device, it will no longer move the mouse pointer. To reattach it, run:
| + | |
| - | xinput reattach 13 2
| + | |
| - | '2' is the device ID for the 'Virtual core pointer' you are reattaching the device to.
| + | |
| - | | + | |
| - | To keep X from connecting a device to the core pointer when starting the system, you can add:
| + | |
| - | Option "SendCoreEvents" "false"
| + | |
| - | to the InputClass section for the device, for example you can place the following in /usr/share/X11/xorg.conf.d as 60-cando.conf:
| + | |
| - | Section "InputClass"
| + | |
| - | Identifier "Cando Multi Touch Panel"
| + | |
| - | MatchVendor "Cando"
| + | |
| - | MatchDevicePath "/dev/input/event*"
| + | |
| - | Driver "mtev"
| + | |
| - | Option "SendCoreEvents" "false"
| + | |
| - | EndSection
| + | |
| - | | + | |
| - | ===meego packages you may need===
| + | |
| - | To perform the above steps on this wiki, a new MeeGo installation may need a few utilities and packages installed:
| + | |
Random tidbits of information about projects I'm hacking on...