version 0.3.0
[expresskeys.git] / src-expresskeys / globals.c
1 /*
2  globals.c -- Support ExpressKeys & Touch Strips on a Wacom Intuos3 tablet.
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
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
19 */
20
21 #include "globals.h"
22
23 Display *display;
24 XDeviceInfo *pad1_info_block;
25 XDeviceInfo *stylus1_info_block;
26 XDeviceInfo *pad1_info;
27 XDeviceInfo *stylus1_info;
28 XDevice *pad1_device;
29 XDevice *stylus1_device;
30
31 char *configstring = "ConfigVersion"; /* Searchable string in the config file */
32 char *configversion = "3"; /* Our version. Remember to change it if necessary! */
33 char *pad1idstring = "Identifier1Pad";          /* Marker to bind tablet and config file */
34 char *stylus1idstring = "Identifier1Sty";       /* Marker that can't bind... */
35 char *our_prog_version = "0.3.0"; /* Our version. Remember to change it! */
36 char *our_prog_name;
37 char *pad1_name = 0;
38 char *pad1_autoname = "pad";
39 char *stylus1_name = 0;
40 char *stylus1_autoname = "stylus";
41 char *total_config_dir;
42 char *total_config_file;
43 char *total_pid_file;
44 char *total_error_file;
45 char *config_dir = "/.expresskeys";     /* This is where in the user home */
46 char *config_file = 0;                          /* directory we'd like to reside, */
47 char *pid_file = "/expresskeys.pid";    /* and what our different status */
48 char *error_file = "/error.log";        /* files should be called */
49 char *config_file_padless = "/padless.conf1";
50 char *config_file_intuos3 = "/intuos3.conf1";
51 char *config_file_graphire4 = "/graphire4.conf1";
52
53 int userconfigversion = 0; /* Keep track of which format the user has */
54 int config3headerfields = 3; /* Number of fields in the header of a configversion 3 file */
55 int configheaderfields = 0; /* How many header fields to actually parse in each file */
56 int config3fields = 27; /* Number of fields in a configversion 3 record */
57 int configfields = 0; /* How many fields to actually parse in each record */
58 int screen;                     /* Active screen. An X thing */
59 int just_exit = 0;      /* Do not terminate the program immediately */
60 int go_daemon = 0;      /* Do not become a daemon without a command */
61 int second_instance = 0; /* Prevent a running program's PID file from erasure */
62 int be_verbose = 0; /* Run silently per default */
63 int reread_config = 0;  /* No memory should be freed on the first read */
64 int stylus1_mode = 1;   /* Assume pen is in Absolute mode initially */
65 int padstylus1_presscurve = 4; /* Stylus default Sensitivity. Sample xsetwacom usage */
66
67 int motion_type = NON_VALID;
68 int button_press_type = NON_VALID;
69 int button_release_type = NON_VALID;
70 int proximity_in_type = NON_VALID;
71
72 struct program *default_program; /* Pointer to the "default" program record */
73
74 /* Allocate space for a list of program definitions (config file based)
75    Also initialize a small list that is written out if no config file exists */
76
77 struct program external_list [MAXRECORDS];
78 struct program internal_list[] = {
79 /*      Name    stylus1_presscurve      handle_touch */
80 {"default",     "0 0 100 100",  0,
81 /*              l_touch_up      l_touch_up_plus l_touch_down    l_touch_down_plus */
82                 98,             0,              104,            0,
83 /*              r_touch_up      r_touch_up_plus r_touch_down    r_touch_down_plus */
84                 102,            0,              100,            0,
85 /*              key_9           key_9_plus      key_10          key_10_plus */
86                 50,             0,              64,             0,
87 /*              key_11          key_11_plus     key_12          key_12_plus */
88                 37,             0,              65,             0,
89 /*              key_13          key_13_plus     key_14          key_14_plus */
90                 50,             0,              64,             0,
91 /*              key_15          key_15_plus     key_16          key_16_plus */
92                 37,             0,              65,             0       },
93
94 /*      Name    stylus1_presscurve      handle_touch */
95 {"Gimp", "0 0 100 100", 1,
96 /*              l_touch_up      l_touch_up_plus l_touch_down    l_touch_down_plus */
97                 20,             0,              61,             0,
98 /*              r_touch_up      r_touch_up_plus r_touch_down    r_touch_down_plus */
99                 64,             20,             64,             61,
100 /*              key_9           key_9_plus      key_10          key_10_plus */
101                 50,             0,              64,             0,
102 /*              key_11          key_11_plus     key_12          key_12_plus */
103                 37,             0,              65,             0,
104 /*              key_13          key_13_plus     key_14          key_14_plus */
105                 37,             29,             37,             52,
106 /*              key_15          key_15_plus     key_16          key_16_plus */
107                 999,            0,              65,             0       },
108
109 /*      Name    stylus1_presscurve      handle_touch */
110 {"Blender",     "0 0 100 100",  1,
111 /*              l_touch_up      l_touch_up_plus l_touch_down    l_touch_down_plus */
112                 102,            0,              100,            0,
113 /*              r_touch_up      r_touch_up_plus r_touch_down    r_touch_down_plus */
114                 98,             0,              104,            0,
115 /*              key_9           key_9_plus      key_10          key_10_plus */
116                 37,             0,              9,              0,
117 /*              key_11          key_11_plus     key_12          key_12_plus */
118                 50,             0,              23,             0,
119 /*              key_13          key_13_plus     key_14          key_14_plus */
120                 37,             29,             37,             52,
121 /*              key_15          key_15_plus     key_16          key_16_plus */
122                 999,            0,              65,             0       },
123
124 /*      Name    stylus1_presscurve      handle_touch */
125 {"XTerm",       "0 0 100 100",  0,
126 /*              l_touch_up      l_touch_up_plus l_touch_down    l_touch_down_plus */
127                 0,              0,              0,              0,
128 /*              r_touch_up      r_touch_up_plus r_touch_down    r_touch_down_plus */
129                 0,              0,              0,              0,
130 /*              key_9           key_9_plus      key_10          key_10_plus */
131                 0,              0,              0,              0,
132 /*              key_11          key_11_plus     key_12          key_12_plus */
133                 0,              0,              0,              0,
134 /*              key_13          key_13_plus     key_14          key_14_plus */
135                 0,              0,              0,              0,
136 /*              key_15          key_15_plus     key_16          key_16_plus */
137                 999,            0,              0,              0       }
138 };
139 /* The number of programs (num_list) must be computed here. After the struct */
140 int num_list = (sizeof internal_list / sizeof internal_list[0]);
141
142 /* These are the keywords prefacing a value in the config file */
143 struct configstrings human_readable[] = {
144 {"ProgramName", "Stylus1PressCurve", "HandleTouchStrips",
145 "LeftPadTouchUp", "LeftPadTouchUpPlus",
146 "LeftPadTouchDown", "LeftPadTouchDownPlus",
147 "RightPadTouchUp", "RightPadTouchUpPlus",
148 "RightPadTouchDown", "RightPadTouchDownPlus",
149 "LeftPadButton9", "LeftPadButton9Plus",
150 "LeftPadButton10", "LeftPadButton10Plus",
151 "LeftPadButton11", "LeftPadButton11Plus",
152 "LeftPadButton12", "LeftPadButton12Plus",
153 "RightPadButton13", "RightPadButton13Plus",
154 "RightPadButton14", "RightPadButton14Plus",
155 "RightPadButton15", "RightPadButton15Plus",
156 "RightPadButton16", "RightPadButton16Plus" }
157 };
158
159 /* End Code */
160