5#include "vrpn_Analog.h"
7#include "vrpn_Button.h"
8#include "vrpn_Configure.h"
9#include "vrpn_Connection.h"
11#include "vrpn_HumanInterface.h"
12#include "vrpn_Shared.h"
13#include "vrpn_Types.h"
15#if defined(VRPN_USE_HID)
45 bool toggle_light =
true);
46 virtual ~vrpn_Xkeys();
60 virtual void decodePacket(
size_t bytes, vrpn_uint8 *buffer) = 0;
64 typedef enum { Off, On, Flash } LED_STATE;
65 virtual void setLEDs(LED_STATE red, LED_STATE green) = 0;
67 struct timeval _timestamp;
77class vrpn_Xkeys_noLEDs:
public vrpn_Xkeys {
81 bool toggle_light =
true)
82 : vrpn_Xkeys(filter, name, c,
vendor,
product, toggle_light) { };
85 virtual void setLEDs(LED_STATE, LED_STATE) {};
89class vrpn_Xkeys_v1:
public vrpn_Xkeys {
93 bool toggle_light =
true)
94 : vrpn_Xkeys(filter, name, c,
vendor,
product, toggle_light) {
96 if (_toggle_light) { setLEDs(On, Off); }
99 ~vrpn_Xkeys_v1() {
if (_toggle_light) setLEDs(Off, Off); };
102 virtual void setLEDs(LED_STATE red, LED_STATE green);
106class vrpn_Xkeys_v2:
public vrpn_Xkeys {
110 bool toggle_light =
true)
111 : vrpn_Xkeys(filter, name, c,
vendor,
product, toggle_light) {
113 if (_toggle_light) { setLEDs(On, Off); }
116 ~vrpn_Xkeys_v2() {
if (_toggle_light) setLEDs(Off, Off); };
119 virtual void setLEDs(LED_STATE red, LED_STATE green);
122class vrpn_Xkeys_Desktop:
protected vrpn_Xkeys_v1,
public vrpn_Button_Filter {
125 virtual ~vrpn_Xkeys_Desktop() {};
131 void report_changes (
void);
135 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
138class vrpn_Xkeys_Pro:
protected vrpn_Xkeys_v1,
public vrpn_Button_Filter {
141 virtual ~vrpn_Xkeys_Pro() {};
147 void report_changes (
void);
151 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
155class vrpn_Xkeys_Joystick:
protected vrpn_Xkeys_v1,
public vrpn_Analog,
public vrpn_Button_Filter,
public vrpn_Dial {
158 virtual ~vrpn_Xkeys_Joystick() {};
164 void report_changes (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
166 void report (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
170 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
174 vrpn_uint8 _lastDial;
178class vrpn_Xkeys_Joystick12 :
protected vrpn_Xkeys_v2,
public vrpn_Analog,
public vrpn_Button_Filter,
public vrpn_Dial {
181 virtual ~vrpn_Xkeys_Joystick12() {};
187 void report_changes(vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
189 void report(vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
193 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
197 vrpn_uint8 _lastDial;
201class vrpn_Xkeys_Jog_And_Shuttle:
protected vrpn_Xkeys_v1,
public vrpn_Analog,
public vrpn_Button_Filter,
public vrpn_Dial {
204 virtual ~vrpn_Xkeys_Jog_And_Shuttle() {};
210 void report_changes (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
212 void report (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
216 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
219 vrpn_uint8 _lastDial;
223class vrpn_Xkeys_Jog_And_Shuttle12 :
protected vrpn_Xkeys_v2,
public vrpn_Analog,
public vrpn_Button_Filter,
public vrpn_Dial {
225 vrpn_Xkeys_Jog_And_Shuttle12(
const char *name,
vrpn_Connection *c = 0);
226 virtual ~vrpn_Xkeys_Jog_And_Shuttle12() {};
232 void report_changes(vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
234 void report(vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
238 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
241 vrpn_uint8 _lastDial;
245class vrpn_Xkeys_Jog_And_Shuttle68 :
protected vrpn_Xkeys_v2,
public vrpn_Analog,
public vrpn_Button_Filter,
public vrpn_Dial {
247 vrpn_Xkeys_Jog_And_Shuttle68(
const char *name,
vrpn_Connection *c = 0);
248 virtual ~vrpn_Xkeys_Jog_And_Shuttle68() {};
254 void report_changes(vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
256 void report(vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
260 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
263 vrpn_uint8 _lastDial;
266class vrpn_Xkeys_XK3 :
protected vrpn_Xkeys_noLEDs,
public vrpn_Button_Filter {
269 virtual ~vrpn_Xkeys_XK3() {};
275 void report_changes (
void);
279 void decodePacket(
size_t bytes, vrpn_uint8 *buffer);
vrpn_BaseClass(const char *name, vrpn_Connection *c=NULL)
Generic connection class not specific to the transport mechanism.
定义 vrpn_Connection.h:562
定义 vrpn_HumanInterface.h:56
vrpn_uint16 product() const
vrpn_HidInterface(vrpn_HidAcceptor *acceptor, vrpn_uint16 vendor=0, vrpn_uint16 product=0, hid_device *device=NULL)
vrpn_uint16 vendor() const
void on_data_received(size_t bytes, vrpn_uint8 *buffer)
Derived class reimplements this callback. It is called whenever a read returns some data.
virtual void mainloop()=0
int register_types(void)
定义 vrpn_Xkeys.h:72
This structure is what is passed to a vrpn_Connection message callback.
定义 vrpn_Connection.h:41