[mythtv] Shift key ignored in shortcuts
Oliver Maunder
olly at roomaroo.co.uk
Mon Oct 27 17:00:05 UTC 2008
I'm trying to set up a new remote control at the moment. It's
recognised as a keyboard and most of the buttons send key combinations
- e.g. Stop sends Ctrl+Shift+S, Play sends Ctrl+Shift+P.
The problem is, any key combination containing Shift is ignored. Ctrl
or Alt are fine. I looked in the code and found this in
libs/libmythui/mythmainwindow.cpp:
// Make keynum in QKeyEvent be equivalent to what's in QKeySequence
int MythMainWindowPrivate::TranslateKeyNum(QKeyEvent* e)
{
int keynum = e->key();
if (keynum != Qt::Key_Escape && (keynum < Qt::Key_Shift || keynum >
Qt::Key_ScrollLock))
{
Qt::ButtonState modifiers;
// if modifiers have been pressed, rebuild keynum
if ((modifiers = e->state()) != 0)
{
int modnum = (((modifiers & Qt::ShiftButton) &&
keynum > 0x7f) ? Qt::SHIFT : 0) |
((modifiers & Qt::ControlButton) ? Qt::CTRL : 0) |
((modifiers & Qt::MetaButton) ? Qt::META : 0) |
((modifiers & Qt::AltButton) ? Qt::ALT : 0);
modnum &= ~Qt::UNICODE_ACCEL;
return (keynum |= modnum);
}
}
return keynum;
}
So, if the keycode is less than 0x7f the shift modifier is ignored.
According to the docs at [1] all the ASCII characters are in the range
0x20 to 0x7e, so that > 0x7f excludes pretty much any key you'd want
to use in a shortcut!
Does anyone know the logic behind this? If no-one comes up with any
good justifications I'll raise a bug.
Olly
[1] http://doc.trolltech.com/4.3/qt.html#Key-enum
More information about the mythtv-dev
mailing list