version 0.4.0
[expresskeys.git] / src-expresskeys / tablet.h
1 /*
2  expresskeys - Support ExpressKeys, Touch Strips, Scroll Wheel on Wacom tablets.
3
4  Copyright (C) 2005-2006 - Mats Johannesson
5
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  GNU General Public License for more details.
15
16  You should have received a copy of the GNU General Public License along
17  with this program; if not, write to the Free Software Foundation, Inc.,
18  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #ifndef TABLET_H_
22 #define TABLET_H_
23
24 #include "defines.h"
25
26 /* Data structures (parts): */
27
28 extern struct common_data {
29         const char* padname;
30         unsigned long int* padid;
31         const char* sty1name;
32         unsigned long int* sty1id;
33         unsigned char* sty1mode;
34         const char* sty2name;
35         unsigned long int* sty2id;
36         unsigned char* sty2mode;
37         const char* configfile;
38         int userconfigversion;
39         int num_record;
40         int keycode_delay[2];
41         char* class_name;
42         char* stylus1_presscurve;
43         char* stylus2_presscurve;
44 } common_data[];
45
46 extern struct touch_data {
47         int handle_touch[1];
48         int repeat_after[2];
49         int repeat_delay[2];
50         int repeat_left_up [1];
51         int repeat_left_down [1];
52         int repeat_right_up [1];
53         int repeat_right_down [1];
54         int left_touch_up[MAXKEYS];
55         int left_touch_down[MAXKEYS];
56         int right_touch_up[MAXKEYS];
57         int right_touch_down[MAXKEYS];
58 } touch_data[];
59
60 extern struct wheel_data {
61         int handle_wheel[1];
62         int scroll_wheel_up[MAXKEYS];
63         int scroll_wheel_down[MAXKEYS];
64 } wheel_data[];
65
66 extern struct button_data {
67         int repeat_after[2];
68         int repeat_delay[2];
69         int repeat9 [1];
70         int repeat10 [1];
71         int repeat11 [1];
72         int repeat12 [1];
73         int repeat13 [1];
74         int repeat14 [1];
75         int repeat15 [1];
76         int repeat16 [1];
77         int button9[MAXKEYS];
78         int button10[MAXKEYS];
79         int button11[MAXKEYS];
80         int button12[MAXKEYS];
81         int button13[MAXKEYS];
82         int button14[MAXKEYS];
83         int button15[MAXKEYS];
84         int button16[MAXKEYS];
85 } button_data[];
86
87
88 /* Data structures (consolidation): */
89
90 extern struct i3_program {
91         struct i3_program* default_program;
92         struct common_data common_data;
93         struct touch_data touch_data;
94         struct button_data button_data;
95 } i3_internal_list[], i3_1_external_list[], i3_2_external_list[],
96                                                         i3_3_external_list[];
97
98 extern struct i3s_program {
99         struct i3s_program* default_program;
100         struct common_data common_data;
101         struct touch_data touch_data;
102         struct button_data button_data;
103 } i3s_internal_list[], i3s_1_external_list[], i3s_2_external_list[],
104                                                         i3s_3_external_list[];
105
106 extern struct g4_program {
107         struct g4_program* default_program;
108         struct common_data common_data;
109         struct wheel_data wheel_data;
110         struct button_data button_data;
111 } g4_internal_list[], g4_1_external_list[], g4_2_external_list[],
112                                                         g4_3_external_list[];
113
114 extern struct g4b_program {
115         struct g4b_program* default_program;
116         struct common_data common_data;
117         struct button_data button_data;
118 } g4b_internal_list[], g4b_1_external_list[], g4b_2_external_list[],
119                                                         g4b_3_external_list[];
120
121 extern struct nop_program {
122         struct nop_program* default_program;
123         struct common_data common_data;
124 } nop_internal_list[], nop_1_external_list[], nop_2_external_list[],
125                                                         nop_3_external_list[];
126
127
128 /* String structures (parts): */
129
130 extern struct common_string {
131         const char* keycode_delay;
132         const char* class_name;
133         const char* stylus1_presscurve;
134         const char* stylus2_presscurve;
135 } common_string[];
136
137 extern struct touch_string {
138         const char* handle_touch;
139         const char* repeat_after;
140         const char* repeat_delay;
141         const char* repeat_left_up;
142         const char* repeat_left_down;
143         const char* repeat_right_up;
144         const char* repeat_right_down;
145         const char* left_touch_up;
146         const char* left_touch_down;
147         const char* right_touch_up;
148         const char* right_touch_down;
149 } touch_string[];
150
151 extern struct wheel_string {
152         const char* handle_wheel;
153         const char* scroll_wheel_up;
154         const char* scroll_wheel_down;
155 } wheel_string[];
156
157 extern struct button_string {
158         const char* repeat_after;
159         const char* repeat_delay;
160         const char* repeat9;
161         const char* repeat10;
162         const char* repeat11;
163         const char* repeat12;
164         const char* repeat13;
165         const char* repeat14;
166         const char* repeat15;
167         const char* repeat16;
168         const char* button9;
169         const char* button10;
170         const char* button11;
171         const char* button12;
172         const char* button13;
173         const char* button14;
174         const char* button15;
175         const char* button16;
176 } button_string[];
177
178
179 /* String structures (consolidation): */
180
181 extern struct i3_configstrings {
182         struct common_string common_string;
183         struct touch_string touch_string;
184         struct button_string button_string;
185 } i3_configstrings[];
186
187 extern struct i3s_configstrings {
188         struct common_string common_string;
189         struct touch_string touch_string;
190         struct button_string button_string;
191 } i3s_configstrings[];
192
193 extern struct g4_configstrings {
194         struct common_string common_string;
195         struct wheel_string wheel_string;
196         struct button_string button_string;
197 } g4_configstrings[];
198
199 extern struct g4b_configstrings {
200         struct common_string common_string;
201         struct button_string button_string;
202 } g4b_configstrings[];
203
204 extern struct nop_configstrings {
205         struct common_string common_string;
206 } nop_configstrings[];
207
208
209 /* Data structure (final consolidation): */
210
211 extern struct model_index {
212         struct i3_program* i3;
213         struct i3s_program* i3s;
214         struct g4_program* g4;
215         struct g4b_program* g4b;
216         struct nop_program* nop;
217 } model_list[];
218
219 #endif /*TABLET_H_*/
220
221 /* End Code */
222