00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef INPUTTHREAD_H
00021 #define INPUTTHREAD_H
00022
00023 #include "gluonbuttons.h"
00024 #include "gluon_input_export.h"
00025 #include "absval.h"
00026
00027 #include <QtCore/QThread>
00028 #include <QtCore/QMap>
00029 #include <QtCore/QSharedData>
00030
00031
00032
00037
00038 namespace GluonInput
00039 {
00040 class InputThreadPrivate;
00041
00042 class GLUON_INPUT_EXPORT InputThread : public QThread
00043 {
00044 Q_OBJECT
00045
00046 public:
00047 explicit InputThread( const QString& devicePath, QObject* parent = 0 );
00048
00049
00050 ~InputThread();
00051 void run();
00052
00053 const QString devicePath() const;
00054
00055 int joystickXAxis();
00056 int joystickYAxis();
00057 int joystickZAxis();
00058 void stop();
00059
00060 struct input_id device_info() const;
00061 int vendor() const;
00062 int product() const;
00063 int version() const;
00064 int bustype() const;
00065
00066 QList<int> buttonCapabilities() const;
00067 QList<int> absAxisCapabilities() const;
00068 QList<int> relAxisCapabilities() const;
00069 AbsVal axisInfo( int axisCode ) const;
00070
00071 const QString deviceName() const;
00072 GluonInput::DeviceFlag deviceType() const;
00073
00074 bool isEnabled() const;
00075
00076 bool error();
00077 QString msgError();
00078
00079 QObject* parent();
00080
00081 signals:
00082 void relAxisMoved( int axis, int distance );
00083 void absAxisMoved( int axis, int distance );
00084 void buttonStateChanged( int button, int value );
00085
00086 private:
00087
00088 bool openDevice( const QString& devicePath );
00089 void closeDevice();
00090
00091 int readSystemFS();
00092 void readInformation();
00093
00094 QSharedDataPointer<InputThreadPrivate> d;
00095 };
00096 }
00098 #endif // KCLTHREAD_H