[mythtv] Ideas for better joystick integration in mythfrontend

Ross Campbell ross.campbell at gmail.com
Sat Jul 5 20:07:07 UTC 2008


I have two wireless Logitech game controllers that look just like PS2
controllers hooked up to my mythtv box. For some time, I've configured
some basic functionality to use a controller as an extra remote for
basic navigation (arrows, enter, escape, pause, volume, etc.). This
works pretty well - especially when there's a dispute about what we
should watch on TV.

After some thought on the various chording combinations for game
controllers and how emulators like mame handle mapping all of the
possible events to a very wide variety of input devices, I think there
could be some useful concepts to bring to mythtv.

The nice thing about how mame handles input mapping is that there is
basically one place where
key/mouse/joystick/button/lightgun/wiimote/whatever configuration is
edited and stored. Complex configurations can be created using AND,
OR, and NOT rules to allow chording of events (even from dissimilar
inputs).

Perhaps such a system in myth could make the 'tinker with LIRC to get
your remote control working the way you want it' much easier *AND* it
could allow for a common place to configure other input devices for
mythfrontend use like mouse and joysticks, and having a common imput
mapping file stored using XML would be a nice side benefit.

So, this got me thinking about why other people would care about using
a joystick as a TV remote and why other people would want a bunch on
non-TV-remote contraptions controlling their TV... and aside from the
geek factor, I've decided that there could be a lot of significant
uses for analog controls in mythfrontend.

I can imagine all sorts of interesting uses for analog joystick /
mouse / wiimote controllers in mythfrontend to make functions
currently buried in menus come to life.

- Fast forward / rewind. Imagine infinite adjustability in rate of
fastforward/rewind with a joystick - for when 30 seconds is too far
forward and 10 seconds is too far back
- Time stretch. Imagine a button+joystick that lets you dynamically
speed up or slow down timestretch with very fine grained control - I
think this could make timestretch 10X more valuable to viewers who can
watch most of a recording at 2X or higher, but need to slow down to
catch the important parts.
- cutlist editing. I could imagine some ways that a joystick would
those tricky cutpoints at just the right frame much easier -- How do
professional video editing controls works?
- zoom. A Button + Joystick axis to change zoom
- PIP placement - button + joystick to move PIP window anywhere on screen
- schedule and recording navigation - come on, we all hate having to
limit ourselves to the speed at which our remotes will send up and
down signals, and 9/3 page up/page down still isn't implemented in
every menu. Wouldn't it be nice to have a dynamic control for variable
speed scrolling through large lists? (PS - mythmusic really needs
this!)
- dynamic user interface - keys or buttons are currently treated as
single events. Imagine that analog controls (or button
pressed/released state) could allow the MythUI user interface to
change as the user interacts with it in real time. Schedule listings
could scroll in 4 directions in varying speeds and users could zoom
and out on schedle listings showing more or less detail. Photo gallery
and mythvideo could work the same way.
- Direct control for immediate setting of analog values in myth.
Instead of hitting "UP" 25 times, imagine button+joystick that
directly sets volume level to joystick value. Could do the same for
recording position, timestretch, playback speed,
brightness/hue/contrast, recording quality settings
- ability to configure and use more than one joystick or /dev/input
device as a controller

There's no code here, just my thoughts and ideas, but I'm interested
to hear what developers think about changing how myth allows for input
device configuration and taking advantage of analog controls.

- Ross


More information about the mythtv-dev mailing list