00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <qframe.h>
00013 #include <qpixmap.h>
00014 #include <qtimer.h>
00015
00016 namespace JumpX
00017 {
00018
00019 class Keyboard : public QFrame
00020 {
00021 Q_OBJECT
00022 public:
00023 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 );
00024
00025 void resetState();
00026
00027 void mousePressEvent(QMouseEvent*);
00028 void mouseReleaseEvent(QMouseEvent*);
00029 void mouseMoveEvent(QMouseEvent*);
00030 void resizeEvent(QResizeEvent*);
00031 void paintEvent(QPaintEvent* e);
00032
00033
00034 QSize sizeHint() const;
00035
00036 signals:
00037 void key( ushort unicode, ushort qcode, ushort modifiers, bool, bool );
00038
00039 private slots:
00040 void delayTimerDone();
00041 void rateTimerDone();
00042
00043 private:
00044 int shift;
00045 int paren;
00046 int ctrl;
00047 int alt;
00048
00049 int pressedKeyUnicode, pressedKeyQcode, pressedMod;
00050 int pressedx, pressedy, pressedw, pressedh;
00051 bool isnoncont;
00052 int pressed2x, pressed2y, pressed2w, pressed2h;
00053
00054 int slideKeyUnicodeH, slideKeyQcodeH, slideKeyUnicodeV, slideKeyQcodeV;
00055 bool enableMouseTracking;
00056 QPixmap *slidePix, *slidePixH, *slidePixV;
00057
00058 QPixmap releasedPlain;
00059 QPixmap releasedShift;
00060 QPixmap releasedParen;
00061
00062 QPixmap pressedPlain;
00063 QPixmap pressedShift;
00064 QPixmap pressedParen;
00065 QPixmap pressedDigit;
00066
00067 QPixmap offscreen;
00068
00069 QPixmap *releasedPix;
00070 QPixmap *pressedPix;
00071
00072 QTimer *delayTimer;
00073 QTimer *rateTimer;
00074 };
00075
00076 }