views:

68

answers:

1

I'm not having an easy time making a workable mouse pointer interface on the Kindle with Qt (unofficial, of course). The fiveway joystick can't track more than one direction at a time (no diagonal moves), and the screen is too slow to update for good feedback.

I've got limited acceleration, but with the screen delay it's very frustrating to use. When you release the fiveway, the mouse will keep moving for 1-2 seconds... and it's not always a constant delay.

Given these limitations, I really need help from the application side. I need a method the mouse driver plugin could use to identify what the acceleration profile should be... so it can say slow down as it crosses a button. The app could help define regions where different acceleration made sense (start with single pixel shifts in a drawing area, but start at 10 or so for dialog dead space). More simply, the application should be able to tell the mouse pointer to transition from cursor to keypad mode, etc.

However, I can enumerate the mouse drivers, but I don't seem to get driver names. They're not QObjects, so there's no qobject_cast. How can I identify them as mine, and safe to cast to? I can force a cast, but that seems pretty lame.

Do I just assume the plugins are mine and cast them?

I'd like some simple signal/slot way to wire this up.

UPDATE

Maybe the plugins can notify the app somehow. Maybe using QApplication::topLevelWidgets(), trying qobject_cast looking for the QMainWindow... then sending it a custom signal with the plugin's internal QObject-based signal handler class? Then the app could turn around and set up the connections it actually wanted to deal with. I'll try it tonight or tomorrow.

A: 

Why don't you implement right as "tab" and left as "shift+tab". That way, you can move the focus around. Now, just center the pointer over the active area of the widget with focus (think checkboxes, they need the pointer over the box, not the center). I expect the user to be more interested in this and actually having a pointer to mover around in an environment where it is down right impossbile to use.

e8johan
There's no tab on a Kindle. I get the point though. That's what the "keypad mode" I mention in the question is for.
darron
Kindle has no tab, that is correct, but Qt still reacts to tab key presses. By emulating such a press when the user presses right or left you can achieve a quicker user interface than moving a mouse pointer around with the arrow keys...
e8johan