How do I make Thinkpad X220T Tablet with multitouch screen work?

Solution 1:

I'm going to try and answer the rotation / touch interface part.

So basically you can imagine those like having a second desktop upon your desktop. When you rotate your Desktop, you'll then have to do the same with the Touch Interface Desktop.

In general you can manage this rotation via

$ xsetwacom

In my case - I have no knowledge of other tablet devices - the touch desktop consists of three devices: Stylus, Eraser and Touch:

$ xsetwacom --list devices
Wacom Serial Penabled 2FG Touchscreen stylus    id: 14  type: STYLUS    
Wacom Serial Penabled 2FG Touchscreen eraser    id: 15  type: ERASER    
Wacom Serial Penabled 2FG Touchscreen touch     id: 16  type: TOUCH 

So whereever you rotate you screen you will also have to call xsetwacom for every one of the three devices to reflect the change:

$ xsetwacom set <device_id> rotate <none|ccw|cw|half>

Appropriate places for touch rotation are everywhere, where there is a rotation made by xrandr. However you cannot directly hook into xrandr, but must find the places where xrandr rotations are called.

I for example am using the Monitor Status Indicator Extension for the GNOME-Shell, with this modification for touch rotation: https://gist.github.com/2331837

Good luck with the rest! ;)

Solution 2:

Alright, here's my share then :) I bought a convertible laptop/tablet half a year ago with a stylus and touch option. Not the same model or even brand as you, but hopefully this answer is still useful to you.

For on-screen keyboard I prefer Onboard, which I think comes by default. Otherwise it is available through the repositories. It is quite well customisable (if you put some effort into it you can design your own keyboard layout and themes, or just use the built-in ones) and does pretty much what you need it to do. It lacks advanced stuff such as macro actions. Also, I haven't been able to get it to work in the Dash.

Interesting multitouch features are available through Ginn, which in my humble opinion is a pretty decent piece of software. It's not the easiest thing to alter but gives you a lot of options by linking gestures with key presses. Two-finger scrolling works by default 9), the things you mention (zooming in and out, swiping through applications) is as far as I know not yet supported. I see you already got your laptop, take a look at /etc/ginn/wishes.xml. Hmm, come to think of it, if you play around a bit with Ginn and Compiz, perhaps you can bind a two finger pinch to the Enhanced Desktop Zoom plugin?

mweinelt post on rotation is spot on. Works very well for me. I rotate the screen, get the stylus out and read and annotate PDFs on my laptop.

All in all I'd say the touchscreen is usable, even useful, but leaves a few things to be desired. It is most certainly not a slick, neat process as it is with for example Android.

Solution 3:

To those who still want to use all touch features of their convertibles, here is a script which works well on x220t.

The script with which I started is given in the thread above. I just extended it to take values for the stylus in addition to the finger touch. Same approach copy-paste as for the finger, which solves the first issue of Yossi Gil.

I also bumped into the issue of the onscreen keyboard onboard not working with the finger touch. I followed this thread and implemented the solution which worked there.

All in all, finger and stylus touch working, rotation working and onscreen keyboard now working, I would say the tablet mode now works pretty well.

Solution 4:

I have an x220t myself, but I run Ubuntu 11.10 on it. I solved the rotate problem using this tutorial. This tutorial teaches you how to create a script which also rotates the axes of the screen, not only the image. (rotation of the image itself is quite easy, you can do it from the monitors menu). But in order for the trackpad, eraser tip, mouse and stylus to work on a rotated screen, you need to also rotate the axes (see the tutorial mentioned).

However, one problem with that tutorial was that each time I was plugging a new usb device (wireless mouse base, camera, etc) the usb port physical address got changed after restart. So, I asked for a solution and I had this problem solved here with a small addition to the script.

I'm interested to find how can I activate the "rotate" button on the bottom edge of the screen and assign the "rotate" command described above to it. I tried using the typical "create button shortcut" function, but it doesn't seem to work.

Also - I am interested in how we can add multitouch functionalities to the screen (pinch, rotate for pictures, right click on long tap, etc).

Stylus works quite well, I did not get any errors in using it.