00001
00002
00003
00004
00005
00006 #ifndef JSMENU_H_
00007 #define JSMENU_H_
00008
00009 #include <qobject.h>
00010 #include <qsocket.h>
00011 #include <qstring.h>
00012
00013 #include "mythdialogs.h"
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 struct button_map_type
00029 {
00030 int button;
00031 QString keystring;
00032 int chord;
00033 };
00034
00035 typedef struct
00036 {
00037 int axis;
00038 int from;
00039 int to;
00040 QString keystring;
00041 } axis_map_type;
00042
00043 class JoystickMap
00044 {
00045 public:
00046 void AddButton(int in_button, QString in_keystr, int in_chord = -1)
00047 {
00048 button_map_type new_button = { in_button, in_keystr, in_chord };
00049 button_map.push_back(new_button);
00050 }
00051
00052 void AddAxis(int in_axis, int in_from, int in_to, QString in_keystr)
00053 {
00054 axis_map_type new_axis = { in_axis, in_from, in_to, in_keystr};
00055 axis_map.push_back(new_axis);
00056 }
00057
00058
00059 vector<button_map_type> button_map;
00060 vector<axis_map_type> axis_map;
00061 };
00062
00063
00064
00065
00066
00067 class MPUBLIC JoystickMenuClient : public QObject
00068 {
00069 Q_OBJECT
00070 public:
00071 JoystickMenuClient(QObject *main_window);
00072 ~JoystickMenuClient();
00073 int Init(QString &config_file);
00074
00075 void Process(void);
00076
00077 void ButtonUp(int button);
00078 void AxisChange(int axis, int value);
00079 void EmitKey(QString code);
00080 int ReadConfig(QString config_file);
00081
00082 private:
00083 QObject *mainWindow;
00084
00085 QString devicename;
00086
00087 int fd;
00088
00089 JoystickMap map;
00090
00091
00092
00093
00094
00095 unsigned char button_count;
00096 unsigned char axes_count;
00097
00098 int *buttons;
00099 int *axes;
00100
00101 };
00102
00103 #endif