-
Notifications
You must be signed in to change notification settings - Fork 0
/
mediactrl.h
155 lines (128 loc) · 3.88 KB
/
mediactrl.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
* mediactrl.c -- Jog Shuttle device support
* Copyright (C) 2001-2007 Dan Dennedy <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _MEDIA_CTRL_H
#define _MEDIA_CTRL_H
// just to make the code more readable
#define KEY_RELEASE 0x00
#define KEY_PRESS 0x01
// not used yet
#define MEDIA_ST_ACTIVE 0x02
#define MEDIA_ST_INACTIVE 0x01
// media ctrl event types
#define MEDIA_CTRL_EVENT_NONE 0x00
#define MEDIA_CTRL_EVENT_KEY 0x01
#define MEDIA_CTRL_EVENT_JOG 0x02
#define MEDIA_CTRL_EVENT_SHUTTLE 0x03
#define MEDIA_CTRL_EVENT_STICK 0x04
// the disconnect event - not used yet
#define MEDIA_CTRL_DISCONNECT 0x01
#define MEDIA_CTRL_SHIFT 0x01
#define MEDIA_CTRL_PLAY 0x10
#define MEDIA_CTRL_PLAY_FWD 0x10
#define MEDIA_CTRL_REVERSE 0x11
#define MEDIA_CTRL_PLAY_REV 0x11
#define MEDIA_CTRL_STOP 0x12
#define MEDIA_CTRL_PAUSE 0x13
#define MEDIA_CTRL_NEXT 0x14
#define MEDIA_CTRL_PREV 0x15
#define MEDIA_CTRL_RECORD 0x16
#define MEDIA_CTRL_FAST_FORWARD 0x17
#define MEDIA_CTRL_REWIND 0x18
#define MEDIA_CTRL_STICK_LEFT 0x20
#define MEDIA_CTRL_STICK_RIGHT 0x21
#define MEDIA_CTRL_STICK_UP 0x22
#define MEDIA_CTRL_STICK_DOWN 0x23
/* function keys, usually at top of device */
#define MEDIA_CTRL_F1 0x100
#define MEDIA_CTRL_F2 0x101
#define MEDIA_CTRL_F3 0x102
#define MEDIA_CTRL_F4 0x103
#define MEDIA_CTRL_F5 0x104
#define MEDIA_CTRL_F6 0x105
#define MEDIA_CTRL_F7 0x106
#define MEDIA_CTRL_F8 0x107
#define MEDIA_CTRL_F9 0x108
#define MEDIA_CTRL_F10 0x109
#define MEDIA_CTRL_F11 0x10a
#define MEDIA_CTRL_F12 0x10b
#define MEDIA_CTRL_F13 0x10c
#define MEDIA_CTRL_F14 0x10d
#define MEDIA_CTRL_F15 0x10e
#define MEDIA_CTRL_F16 0x10f
#define MEDIA_CTRL_B1 0x110
#define MEDIA_CTRL_B2 0x111
#define MEDIA_CTRL_B3 0x112
#define MEDIA_CTRL_B4 0x113
#define MEDIA_CTRL_B5 0x114
#define MEDIA_CTRL_B6 0x115
#define MEDIA_CTRL_B7 0x116
#define MEDIA_CTRL_B8 0x117
#define MEDIA_CTRL_B9 0x118
#define MEDIA_CTRL_B10 0x119
#define MEDIA_CTRL_B11 0x11a
#define MEDIA_CTRL_B12 0x11b
#define MEDIA_CTRL_B13 0x11c
#define MEDIA_CTRL_B14 0x11d
#define MEDIA_CTRL_B15 0x11e
#define MEDIA_CTRL_B16 0x11f
#ifdef __cplusplus
extern "C" {
#endif
struct media_ctrl_device;
struct media_ctrl_key {
int key; // internal keycode - do not use
const char *name;
int code; // eventcode
int action;
};
struct media_ctrl_event {
struct timeval time;
unsigned short type;
unsigned short code;
char *name;
int value;
unsigned short index;
};
struct media_ctrl {
int fd;
int eventno;
int status;
struct media_ctrl_device *device;
long jogpos;
int shuttlepos;
int lastval;
int lastshu;
int jogrel; // accumulate relative values if events come too fast
unsigned long last_jog_time; // last jog event
};
struct media_ctrl_device {
int vendor;
int product;
const char *name;
struct media_ctrl_key *keys;
void (*translate)(struct media_ctrl *ctrl, struct input_event *ev, struct media_ctrl_event *me);
};
void media_ctrl_open(struct media_ctrl *);
void media_ctrl_close(struct media_ctrl *);
void media_ctrl_read_event(struct media_ctrl *, struct media_ctrl_event *);
struct media_ctrl_key *media_ctrl_get_keys(struct media_ctrl *);
#ifdef __cplusplus
}
#endif
#endif