Onboard not working with wacom driver

Bug #1297692 reported by tuxiano
70
This bug affects 12 people
Affects Status Importance Assigned to Milestone
Onboard
Fix Released
Medium
Unassigned
onboard (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

If I choose the wacom driver instead of the evdev driver in:

 /usr/share/X11/xorg.conf.d/10-evdev.conf

the touchscreen works in general fine, but it is not posibible to type on the onscreen keyboard.

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: onboard 1.0.0-0ubuntu2
ProcVersionSignature: Ubuntu 3.13.0-19.40-generic 3.13.6
Uname: Linux 3.13.0-19-generic x86_64
ApportVersion: 2.13.3-0ubuntu1
Architecture: amd64
CurrentDesktop: Unity
Date: Wed Mar 26 09:27:31 2014
EcryptfsInUse: Yes
InstallationDate: Installed on 2014-01-11 (73 days ago)
InstallationMedia: Ubuntu 12.04.3 LTS "Precise Pangolin" - Release amd64 (20130820.2)
SourcePackage: onboard
UpgradeStatus: Upgraded to trusty on 2014-03-23 (2 days ago)

Revision history for this message
tuxiano (tuxiano) wrote :
tuxiano (tuxiano)
summary: - Onboar not working with wacom driver
+ Onboard not working with wacom driver
Revision history for this message
marmuta (marmuta) wrote :

Thanks, for the bug report. Could you please attach your /usr/share/X11/xorg.conf.d/10-evdev.conf?
And post the output of:
$ xinput

There's a possible workaround: open preferences (onboard-settings) and set Keyboard->Advanced->Input event source to "GTK". Does that help?

Changed in onboard:
status: New → Incomplete
importance: Undecided → Medium
Revision history for this message
tuxiano (tuxiano) wrote :

Hi,

I tried the workaround, but I does not help. Please find attached the information you asked for.

xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Wacom ISDv4 90 Pen stylus id=11 [slave pointer (2)]
⎜ ↳ eGalax_eMPIA Technology Inc. PCAP MultiTouch Controller touch id=12 [slave pointer (2)]
⎜ ↳ Wacom ISDv4 90 Pen eraser id=15 [slave pointer (2)]
⎜ ↳ Microsoft Bluetooth Mobile Keyboard 6000 id=16 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    ↳ Power Button id=6 [slave keyboard (3)]
    ↳ Video Bus id=7 [slave keyboard (3)]
    ↳ Power Button id=8 [slave keyboard (3)]
    ↳ Sleep Button id=9 [slave keyboard (3)]
    ↳ USB 2.0 Camera id=10 [slave keyboard (3)]
    ↳ Eee PC WMI hotkeys id=13 [slave keyboard (3)]
    ↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]

Best regards

Revision history for this message
marmuta (marmuta) wrote :

Sorry for the delay, I've tried the wacom driver with a couple of devices here, but so far wasn't lucky enough to reproduce your problem. When it worked at all, I was able to type with Onboard too.

I can see one more possibility: would you please try setting Preferences->Keyboard->Advanced->Touch input to "none"?

If that does nothing, when you say it is not possible to type, is there any response at all from Onboard? Is there any hint of taps/clicks being registered, keys highlighted? Does the cursor image change when you cross the keyboard's frame? Are any other applications affected?

Revision history for this message
marmuta (marmuta) wrote :

The results of these would be really helpful too:

xsetwacom --list >ep121.txt
xinput list-props 11 12 15 >>ep121.txt
xinput test-xi2 2 >>ep121.txt

The last line opens a little window. Just tap it a few times somewhere in the middle, then close it and attach ep121.txt here.

It appears that wacom controlled devices can announce touch support (have an XITouchClass), but then don't actually send touch events. I can see this happening here with a touch pad. Onboard doesn't mind there, but on a touch-screen it depends on touch events being sent - that is, unless touch support was disabled in preferences. I'm quite curious about the results of changing the setting from comment #4 now. Take you time, though; no pressure intended.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Hi,

sorry for chiming in, but I see the very same problem on my Laptop (Lenovo X220t Tablet) with a Wacom (mutli-)touchpad. It is not Ubuntu what I am using, though---I am on Arch. Neither Gtk nor Xinput works as Input Even Source. With the former nothing happens at all, but with the latter I get a lot of these messages, when Onboard is started from the terminal:

Gdk-CRITICAL **: gdk_device_get_axis_use: assertion 'index_ < device->axes->len' failed

This happens with both "single" and "multi" selected as Touch Input. When having "none" selected, I get no reaction at all. I can produce characters by clicking on them with the mouse, though.

I attached the output from the commands you asked tuxiano for in #5 as ep121_2.txt, just in case they might be useful.

Hopefully, my issue is related to this bug report. I am sorry if not.

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in onboard (Ubuntu):
status: New → Confirmed
Revision history for this message
marmuta (marmuta) wrote :

Thanks for chiming in, Tom. It could be the same problem, but I can't really tell yet. Are you using Onboard 1.0.1 from the community repo? The warnings are most likely unrelated, but I'll keep them in mind. I've seen them before but no more since some time into Ubuntu 13.10.

Your device reports as XIDependentTouch like my touch pad, meaning the Touch Input setting would be ignored. Onboard ought to just use the regular (emulated) pointer events then, like it does here. I have no good idea yet where this fails. Bear with me, I guess we need to keep digging.

Please paste this into your terminal again, all lines at once. If you can, make sure you used the touch screen last, not the mouse, before you run this.

(killall onboard; \
xsetwacom --list; xsetwacom --list | cut -f 2 | cut -d " " -f2 | xargs xinput list-props; \
xinput; \
xinput list --long; \
xinput test-xi2 2) &>X220t_xinput.txt

Again, tap the little window a few times somewhere in the middle, close it and attach X220t_xinput.txt here. The list of devices was missing before and there was some confusion about which id is what device.

Then please collect debug output from Onboard. Turn the Input event source setting back to "XInput" before, because the Gtk path doesn't log pointer events.

(killall onboard; onboard -ddebug) &>X220t_onboard_debug.txt

Once the keyboard shows, tap a few of its keys (any keys really), quit Onboard and attach X220t_onboard_debug.txt here. I'm looking for lines containing "TouchInput: listening to" and "TouchInput: device event".

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Yes, I am using Onboard 1.0.1 from Arch's community repo. The file X220t_xinput.txt is attached to this comment and X220t_onboard_debug.txt to the next one. The latter contains the lines you are looking for. For both files I touched the display about five times, for Onboard of course on keys.

Another bit that might be of interest: I am using i3 as a window manager. This is a tiling window manager and I've seen already several application having troubles with tiling window managers in general. Onboard doesn't look like it has, though---it renders correctly. Nevertheless, I will test Onboard in a non-tiling window manager tonight.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :
Revision history for this message
marmuta (marmuta) wrote :

I've tried i3 here and Onboard doesn't seem to bother. When Window->force-to-top is off it even gets tiled, but I can still type with all devices. The fact that you can type with a mouse would speak against i3 being an issue too.

Thanks for the logs, they helped quite a bit. So the XIDepedentTouch device isn't the screen, it's the Synaptics touch pad. The actual touch screen reports as XIDirectTouch. Both event sources, XInput and Gtk, should then decide this is a GDK_SOURCE_TOUCHSCREEN. However, as I suspected in #5, there are no touch events coming from the wacom driver.

I learned that in order to get touch events, wacom's gesture support has to be disabled. In your case that's
xsetwacom --set "Wacom ISDv4 E6 Finger touch" Gesture off
or
xsetwacom --set 11 Gesture off

But, unfortunately this seems to stop core pointer events too. I do get raw touch events, but the cursor doesn't move. Perhaps you have better luck on the real touch screen, but the gesture support actually seems useful, better keep it.

That leaves fixing Onboard. It's clear now that the "Touch input" setting has to be "none" since "single" and "multi" _require_ touch events on a touch screen. We might need to blacklist wacom devices to automate this, but for now leave it at "none".

Since "none" still leaves Onboard unresponsive for you, and the incoming events are fine, I suspect something is wrong with the event processing code. I can't pinpoint it yet though, so I'll pepper Onboard with more debug output.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Thanks for testing all this and having a look at the logs! Indeed, I can get Onboard to react to me touching the screen after disabling gesture support as you suggested. Of course, I like to keep it in general, but this is an interesting bit of information. Also, I was still able to move the mouse with my fingers when gesture support was disabled.

Choosing, 'none', 'single' or 'multi' for "Touch Input" didn't make any difference here. So I am afraid I don't get your point about the requirement of setting it to 'none' fully. I guess you mean, that I need to set it to 'none' when I don't want gesture support to be disabled?

Please let me know if I can of further help. Compiling and testing Onboard myself should be doable for me.

Revision history for this message
marmuta (marmuta) wrote :

That's good news. Does multi-touch work too when you set touch input to 'multi-touch'? For example, hold Shift with one finger and tap any letter with another. Your screen says it can handle two touches.

Yes, I'd be great if you tried to run Onboard from source. I'd still like to figure out why it does nothing when wacom gestures are on and touch-input is 'none'.

The tedious part is getting the dependencies. base-devel and bzr for sure, but I don't have a full recipe for Arch, unfortunately. The debian packages are listed in the build-depends section in debian/control. If you get stuck let me know, I planned to install a fresh Arch partition anyway.

bzr branch lp:onboard
cd onboard
./setup.py build

It runs from the source directory, no need to install.
./onboard

When you got it running, make sure event source is 'XInput', touch-input is 'none' and the wacom gestures are on. Then
killall onboard; ./onboard -d event &>X220t_onboard_debug2.txt

The 'event' debug level is new and should print a lot more than before.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Marmuta, sorry for the delay. I am still trying to fix all declaration-after-statement errors (because the gcc call of distutils uses "-Werror=declaration-after-statement" here). I couldn't convince gcc with "-std=c99" to not complain about it). Do you have a special trick for this?

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Using the crude hack "export CFLAGS = "-Wno-error" allowed me to compile Onboard. However, I am not able to start it:

(onboard:17096): GLib-GIO-ERROR **: Settings schema 'org.onboard.typing-assistance.word-suggestions' does not contain a key named 'learning-behavior-paused'
[1] 17096 trace trap (core dumped) ./onboard

Using your debug switch I get the following output in the specified file:

2014-04-05 11:35:58,991:INFO:Config: gsettings schema for 'org.gnome.Mousetweaks' is not installed
2014-04-05 11:35:58,994:INFO:ClickSimulator: 'CSMousetweaks0' selected for mousetweaks up to version 3.8.
2014-04-05 11:35:58,996:INFO:ConfigUtils: Looking for system defaults in ['/home/tom/.config/onboard/onboard-defaults.conf', '/etc/xdg/onboard/onboard-defaults.conf', '/home/tom/dev/onboard/onboard-defaults.conf', '/etc/onboard/onboard-defaults.conf']
2014-04-05 11:35:58,996:INFO:ConfigUtils: No system defaults found.

(onboard:17212): GLib-GIO-ERROR **: Settings schema 'org.onboard.typing-assistance.word-suggestions' does not contain a key named 'learning-behavior-paused'

Revision history for this message
marmuta (marmuta) wrote :

Ah, sorry, I did add a new key to the gsettings schema since 1.0.1. You can update the schema with
sudo cp data/org.onboard.gschema.xml /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Alright, thanks for your help. I've got it running and attached the file. Like you suggested, source was 'XInput', 'Touch input' was 'none' and gesture support off.

Revision history for this message
marmuta (marmuta) wrote :

Thank you and good job getting it to run. It'll hopefully be easier next time, I'm going to add build instructions for Arch and Mageia to the README.

One slight problem, gesture support should be on, that's the default for the wacom driver. I hope this is the reason why there are no events from the touch screen device 11 in the log. The previous log still had them.

Here's the full procedure in command-line form, just paste everything at once:

gsettings set org.onboard.keyboard input-event-source XInput
gsettings set org.onboard.keyboard touch-input none
xsetwacom --set "Wacom ISDv4 E6 Finger touch" Gesture on
killall onboard; ./onboard -d event &>X220t_onboard_debug3.txt

Then tap a few of onboard's keys with the touch screen, and quit it (CTRL-C is fine).

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Great that you'll add build instructions to the README.

It is strange, however, that gesture support was reported to be off. I run the same command as you suggested above before the last run. I hope this time it is alright, at least xsetwacom's "--get" reports it is on.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :
Revision history for this message
Alberto Salvia Novella (es20490446e) wrote :

It affects a non-essential hardware component (removable network card, camera, web-cam, music player, sound card, power management feature, printer...).

Changed in onboard (Ubuntu):
importance: Undecided → Medium
status: Confirmed → Triaged
Changed in onboard:
status: Incomplete → Confirmed
Revision history for this message
marmuta (marmuta) wrote :

Well, there are no events from device 11. The first log X220t_onboard_debug.txt was the only one that had them. I can see you using the track point in X220t_onboard_debug2.txt, so this can't be a general problem for all devices.
Maybe try to reboot, the xsetwacom command should only affect the current session. Then without using xsetwacom at all directly run
killall onboard; ./onboard -d event &>X220t_onboard_debug4.txt
tap some of onboard's keys with the touch screen and quit.

When you run
grep "dev_id=" X220t_onboard_debug4.txt
there should be lines with dev_id=11. The number could change after reboot, but it would always be higher than 2.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Okay, after a reboot there are entries with dev_id=10. I attached the log to this comment.

Revision history for this message
marmuta (marmuta) wrote :

Yep, that did it and it looks better than expected actually. So were you able to type this time? I can see f, d, d, h...left Alt being hit.

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Yes, sorry for note mentioning this before. I could actually type. Multi-touch (like Shift+letter), however, was not possible. So you already changed something?

Revision history for this message
marmuta (marmuta) wrote :

Just to be sure I understand, you can type with Onboard since the reboot, only multi-touch doesn't work? However multi-touch did work before, around comment #13?

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Yes, I can type with Onboard since the reboot and yes, multi-touch does not work in Onboard. I didn't test multi-touch before. So I don't know whether it was working around comment #13.

In general multi-touch seems to work on my system. I just tested with "Ginn" and I could scroll and pinch zoom on some applications. Therefore I assume, it works in principal, but not with Onboard.

Revision history for this message
marmuta (marmuta) wrote :

Ok, good, typing working without multi-touch is what I hoped for. Same situation here. Odds are there's no deeper problem with the event handling then after all. I guess we should have rebooted earlier.

Concerning multi-touch, as I understand it, you have two choices:
1) Keep wacom gestures on (the default). You'll get to scroll and pinch zoom, but there's no multi-touch possible with Onboard.
2) Turn wacom gestures off. No more nice gestures, but you should get multi-touch in Onboard (TBD). Applications or the desktop environment may provide their own gestures though. A two finger drag on Onboard should move the keyboard for example.

Case 1) still doesn't allow typing with default settings, but I'm working on a fix.

Revision history for this message
marmuta (marmuta) wrote :

Alright, I think I'm done. Try it, please.

Update the source and rebuild:
bzr pull
./setup.py build

I've fixed the warnings on Arch, so you shouldn't need CFLAGS anymore, but
if the build fails you may still have to
rm -rf scripts/__pycache__

Then return onboard to defaults (XInput, multi-touch):
gsettings reset org.onboard.keyboard input-event-source
gsettings reset org.onboard.keyboard touch-input

1) Make sure gestures are still enabled, start onboard and just see if you can type with the touch-screen.
xsetwacom --get "Wacom ISDv4 E6 Finger touch" Gesture
    -> should return "on"
killall onboard; ./onboard

2) Turn gestures off and see if typing still works. Try multi-touch, here too, please.
xsetwacom --set "Wacom ISDv4 E6 Finger touch" Gesture off
killall onboard; ./onboard

If you have trouble typing at first, please reboot once and retry.

Revision history for this message
Francesco Fumanti (frafu) wrote :

Revision 1799 of Onboard is now available in our Snapshots PPA for saucy and trusty:
https://launchpad.net/~onboard/+archive/snapshots

Revision history for this message
Tom Kazimiers (tom+kaz) wrote :

Marmuta, sorry for the delay and thanks for your efforts! Building Onboard worked without any problems. And indeed, I again had problems to type first and had to reboot. However, afterwards it worked. More specifically:

1) With gestures on I could type, but multi-touch wasn't working. Like in my first post I get these messages on every key press:

(onboard:2331): Gdk-CRITICAL **: gdk_device_get_axis_use: assertion 'index_ < device->axes->len' failed

2) With gestures off, I could type and multi-touch works (yeah!). I don't see any error message like in 1)

So it is like you stated in #28: Either I have gestures and no multi-touch in Onboard or the other way round. This apparently is a problem with Wacom and nothing Onbard can change. I think I'll go for multi-touch in Onboard here and disable gestures. For testing multi-touch, I just used Shift+<letter>.

Again, thank you very much. I consider my problem as fixed.

Revision history for this message
Alisher (alif) wrote :

Last snapshot did not work for me. And after starting onboard left click work as right click.

Revision history for this message
Alisher (alif) wrote :

oh, sorry. I choose Xinput instead gtk, and it works. Thank you.

Revision history for this message
marmuta (marmuta) wrote :

@Tom, excellent, we made it. Thank you very much too, I couldn't have done it without your help.

@Alisher, thank you for confirming so quickly. The Gtk source is meant to work too actually, though I have yet to fully test the latest changes with it. I'll do that.

FYI, the reason the XInput event source even exists is Bug #905636. Apart from that, XInput and Gtk are supposed to behave (almost) the same.

marmuta (marmuta)
Changed in onboard:
status: Confirmed → Fix Committed
Revision history for this message
Thibaud Vantalon (thibaud-vantalon) wrote :

Hello,

great, I was going to report the issue, but it seems I do not need. Great work, thank you.

I just wanted to add a smal remark regarding the gesture option of wacom driver. It seems the gesture option is depreciated. If you want to learn more about it you can read http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=Multitouch.

The only way around I found is to use touchegg, which is developed for synaptics driver but have a partial support for evdev ones. The trick for wacom driver on the link above does not work on my machine.

bye

Revision history for this message
tuxiano (tuxiano) wrote :

Hi,

thank you very much for your effort to resolve this issue. I have version 1.0.1-0ppa~trusty3 installed and it actually works great :-)

There is still a little issue left, onboard does not work in combination with the wacom driver, when I try to log in (unity-greeter). After I logged in, onboard works as expected.

Best regards,

Marko

Revision history for this message
marmuta (marmuta) wrote :

Hi tuxiano, our stable PPA, currently at 1.0.1-0ppa~trusty3, doesn't have the wacom fix yet. There'll be a 1.0.2 soon that has it, but at the moment you can get the fix only from our snapshot PPA at
https://launchpad.net/~onboard/+archive/snapshots

In short, get 1.0.1+1799-0ppa~trusty1or later to fix typing in lightdm. Then, in the user session, return the setting Preferences->Keyboard->Advanced->Touch input to 'multi-touch'. This can be done from command line too:
gsettings reset org.onboard.keyboard touch-input

The reason you can type at all is probably that you still have Preferences->Keyboard->Advanced->Touch input set to 'none', as I asked you to do in #4. If you have the snapshot 1.0.1+1799-0ppa~trusty1 installed you don't need this workaround anymore.

Revision history for this message
tuxiano (tuxiano) wrote :

Hi marmuta, the snapshot version works great.

Best regards

Revision history for this message
Sergey Sventitski (sergey-sventitski-deactivatedaccount-deactivatedaccount) wrote :

lenovo x201t user here with clean ubuntu 14.04 this patch has fixed my issue, thanks

Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (8.1 KiB)

This bug was fixed in the package onboard - 1.1.0-0ubuntu1

---------------
onboard (1.1.0-0ubuntu1) vivid; urgency=low

  * Request for sponsorship for new upstream release (LP: #1415041)
  * debian/control:
    - Raise Standards-Version to 3.9.6
    - Add xdg-utils to Recommends
  * debian/copyright:
    - Edit emails to add small protection against email harvesting
    - Update years information
  * debian/onboard.install:
    - Add the usr/share/onboard/settings_auto_show_dialog.ui file
  * debian/patches:
    - Remove patch to add support for MATE (now upstream)
    - Remove patch to fix the auto-start issue (now upstream)
    - Update add_defaults_for_ubuntu.patch with values for this release
  * debian/rules:
    - Remove shebang rewrite from override_dh_python3
    - Add no-guessing-deps to override_dh_python3
  * Word suggestions:
    - Add possibility to learn word sequences, but no new words
    - Add removal of words from current user language model on long press
    - Add removal of a word in current context only
    - Add tool to extract letter frequencies from a given language model
    - Use slash as word separator in the path component of URLs
    - Improve word suggestions after a wrap to a second line in gnome-terminal
    - Better handle interaction with the awesome bar's URL completion of firefox
    - Fix synchronisation between libreoffice writer and text document
    - Fix insertion of word separators consisting of more than one character
    - Delete selected text before inserting suggestions into Gtk-3 widgets
    - Fix memory leak in predict calls
    - Improve robustness of language model loading by handling word counts <= 0
    - Have the checkmodels tool check for valid n-gram frequency fields
    - Fix and improve broken doctest for _get_word_to_spell_check()
    - Remove "th" from the English system language models
    - Increase the number of words in the German system language models
    - Fix traceback when migrating user language model with LANG=C
    - Always use "Other Languages" as name for submenu of languages menu
    - Move second separator in language menu to correct position
  * Auto-show and auto-hide:
    - Add hiding of Onboard keyboard on physical key-press for XInput
    - Add setting for the time to stay hidden after physical key-press
    - Add possibility to turn off repositioning on auto-show (LP #1402212)
    - Centralize auto-show code to make it available for future views
    - Correctly register at-spi listeners on startup
    - Correctly disconnect events on exit
    - Fix auto-show on cursor movement in single-line text entries
  * XEmbedding in unity-greeter and gnome-screensaver:
    - Enable hide button in unity-greeter; needs restart until greeter assists
    - Add a toggle to system defaults to enable the background image
    - Read filename of background in greeter's shema in unity-greeter
    - Ignore xembed-unity-greeter-offset-x on small screens
    - Increase xembed aspect change range (LP: #1297695)
    - Add the color of the background bar to system defaults
    - Fix loading of desktop backgrounds with non-ascii filenames
    - Fix black bars problem
    - Fix background ...

Read more...

Changed in onboard (Ubuntu):
status: Triaged → Fix Released
marmuta (marmuta)
Changed in onboard:
status: Fix Committed → Fix Released
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.