Ok I managed to slam together a little program reading the QKeyEvent, my first venture into Qt.
I discovered that the problem is not control+shift+alt, but in fact the shorter alt+shift (or shift+alt).
The strange thing is that QKeyEvent::key() returns 0xffffffff, which is not listed as anyone on the enum Qt::Key page.
KDE probably complains when it got this 0xffffffff and says Qt doesn't support it.
But the native*() functions doesn't return any value that is too strange, but perhaps they are. Can anyone download and compile program included and try the same thing and post the output? Would be grateful, because if they differ in the native codes (shift+alt/alt+shift) I have to start digging down into FreeBSD lower levels and see what is cause.
Edit: Forgot to mention. I have a Swedish keyboard. In the regional settings I tested changing layout to US keyboard layout. The only difference is the nativeModifier that gets its value "prefixed" with 0x20 (without the 0x, but it's hexadecimal).
I don't have any real English keyboard to try with.
Edit 2: Couldn't attach a file, changed the source code dialog to include the whole program.
Here is the code of the interesting function and then some output (with comments I made to clarify).
#include <QApplication>
#include <QWidget>
#include <QKeyEvent>
#include <stdio.h>
{
public:
SenseKey
(QWidget *parent, Qt
::WindowFlags);
protected:
};
SenseKey
::SenseKey (QWidget *parent, Qt
::WindowFlags flags
) :
void SenseKey
::keyPressEvent (QKeyEvent *qke
) {
qke->accept();
switch (qke->key())
{
case Qt::Key_B:
printf("----------------------------------------------------------------------------------------\n");
return;
case Qt::Key_unknown:
printf("Unkown key\n");
return;
case Qt::Key_Shift:
printf("key(): Shift\t");
break;
case Qt::Key_Control:
printf("key(): Control\t");
break;
case Qt::Key_Alt:
printf("key(): Alt\t");
break;
default:
printf("key(): %x\t", qke->key());
}
printf("nativeModifiers(): %x\t", qke->nativeModifiers());
printf("nativeScanCode(): %x\t", qke->nativeScanCode());
printf("nativeVirtualKey(): %x\n", qke->nativeVirtualKey());
return;
}
int main(int argc, char *argv[])
{
SenseKey *sens = new SenseKey(0, 0);
//app.setMainWidget (sens);
sens->show();
return app.exec();
}
#include <QApplication>
#include <QWidget>
#include <QKeyEvent>
#include <stdio.h>
class SenseKey : public QWidget
{
public:
SenseKey (QWidget *parent, Qt::WindowFlags);
protected:
void keyPressEvent (QKeyEvent *);
};
SenseKey::SenseKey (QWidget *parent, Qt::WindowFlags flags) :
QWidget (parent, flags) {}
void SenseKey::keyPressEvent (QKeyEvent *qke)
{
qke->accept();
switch (qke->key())
{
case Qt::Key_B:
printf("----------------------------------------------------------------------------------------\n");
return;
case Qt::Key_unknown:
printf("Unkown key\n");
return;
case Qt::Key_Shift:
printf("key(): Shift\t");
break;
case Qt::Key_Control:
printf("key(): Control\t");
break;
case Qt::Key_Alt:
printf("key(): Alt\t");
break;
default:
printf("key(): %x\t", qke->key());
}
printf("nativeModifiers(): %x\t", qke->nativeModifiers());
printf("nativeScanCode(): %x\t", qke->nativeScanCode());
printf("nativeVirtualKey(): %x\n", qke->nativeVirtualKey());
return;
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
SenseKey *sens = new SenseKey(0, 0);
//app.setMainWidget (sens);
sens->show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
To differentiate better I press the 'b' key between each attempt so you others can see which keys were triggered in each combined stroke.
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
----------------------------------------------------------------------------------------
key(): Shift nativeModifiers(): 10 nativeScanCode(): 32 nativeVirtualKey(): ffe1
----------------------------------------------------------------------------------------
key(): Alt nativeModifiers(): 10 nativeScanCode(): 40 nativeVirtualKey(): ffe9
----------------------------------------------------------------------------------------
// Press-and-hold Control and press Shift
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
key(): Shift nativeModifiers(): 14 nativeScanCode(): 32 nativeVirtualKey(): ffe1
----------------------------------------------------------------------------------------
// Press-and-hold Alt and press Control
key(): Alt nativeModifiers(): 10 nativeScanCode(): 40 nativeVirtualKey(): ffe9
key(): Control nativeModifiers(): 18 nativeScanCode(): 25 nativeVirtualKey(): ffe3
----------------------------------------------------------------------------------------
// Press-and-hold Shift and press Alt
key(): Shift nativeModifiers(): 10 nativeScanCode(): 32 nativeVirtualKey(): ffe1
key(): ffffffff nativeModifiers(): 11 nativeScanCode(): 40 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
// Press-and-hold Alt and press Shift
key(): Alt nativeModifiers(): 10 nativeScanCode(): 40 nativeVirtualKey(): ffe9
key(): ffffffff nativeModifiers(): 18 nativeScanCode(): 32 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
// Press-and-hold Control, press-and-hold Shift and press Alt
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
key(): Shift nativeModifiers(): 14 nativeScanCode(): 32 nativeVirtualKey(): ffe1
key(): ffffffff nativeModifiers(): 15 nativeScanCode(): 40 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
// Press-and-hold Control, press-and-hold Alt and press Shift
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
key(): Alt nativeModifiers(): 14 nativeScanCode(): 40 nativeVirtualKey(): ffe9
key(): ffffffff nativeModifiers(): 1c nativeScanCode(): 32 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
----------------------------------------------------------------------------------------
key(): Shift nativeModifiers(): 10 nativeScanCode(): 32 nativeVirtualKey(): ffe1
----------------------------------------------------------------------------------------
key(): Alt nativeModifiers(): 10 nativeScanCode(): 40 nativeVirtualKey(): ffe9
----------------------------------------------------------------------------------------
// Press-and-hold Control and press Shift
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
key(): Shift nativeModifiers(): 14 nativeScanCode(): 32 nativeVirtualKey(): ffe1
----------------------------------------------------------------------------------------
// Press-and-hold Alt and press Control
key(): Alt nativeModifiers(): 10 nativeScanCode(): 40 nativeVirtualKey(): ffe9
key(): Control nativeModifiers(): 18 nativeScanCode(): 25 nativeVirtualKey(): ffe3
----------------------------------------------------------------------------------------
// Press-and-hold Shift and press Alt
key(): Shift nativeModifiers(): 10 nativeScanCode(): 32 nativeVirtualKey(): ffe1
key(): ffffffff nativeModifiers(): 11 nativeScanCode(): 40 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
// Press-and-hold Alt and press Shift
key(): Alt nativeModifiers(): 10 nativeScanCode(): 40 nativeVirtualKey(): ffe9
key(): ffffffff nativeModifiers(): 18 nativeScanCode(): 32 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
// Press-and-hold Control, press-and-hold Shift and press Alt
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
key(): Shift nativeModifiers(): 14 nativeScanCode(): 32 nativeVirtualKey(): ffe1
key(): ffffffff nativeModifiers(): 15 nativeScanCode(): 40 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
// Press-and-hold Control, press-and-hold Alt and press Shift
key(): Control nativeModifiers(): 10 nativeScanCode(): 25 nativeVirtualKey(): ffe3
key(): Alt nativeModifiers(): 14 nativeScanCode(): 40 nativeVirtualKey(): ffe9
key(): ffffffff nativeModifiers(): 1c nativeScanCode(): 32 nativeVirtualKey(): fe0a
----------------------------------------------------------------------------------------
To copy to clipboard, switch view to plain text mode
Bookmarks