fc1e6fae1623de6f4197e0ccf5fd783431274a3d
[expresskeys.git] / src-expresskeys / config_write.c
1 /*
2  config_write.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 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
24  Function writes a header in a new file, including config file version
25  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
26
27 int write_file_config_header(FILE *fp)
28 {
29
30         fprintf(fp, "\nVersion: %d              # Config File Version. Please don't remove.\n\n", CONFIG_VERSION);
31         fprintf(fp, "# Blank lines and everything following a comment \"#\" sign are ignored.\n\n");
32         fprintf(fp, "# Some ASCII art showing the \"default\" program record:\n");
33         fprintf(fp, "#\n");
34         fprintf(fp, "# Left ExpressKey Pad\n");
35         fprintf(fp, "# ------------\n");
36         fprintf(fp, "# |  |   |   |             Wacom Intuos3 defaults are:\n");
37         fprintf(fp, "# |  | 9 | T |\n");
38         fprintf(fp, "# |11|---| O |             Button 9  = (left) Shift        = keycode 50\n");
39         fprintf(fp, "# |  |10 | U |             Button 10 = (left) Alt          = keycode 64\n");
40         fprintf(fp, "# |------| C |             Button 11 = (left) Control      = keycode 37\n");
41         fprintf(fp, "# |  12  | H |             Button 12 = Space               = keycode 65\n");
42         fprintf(fp, "# ------------\n");
43         fprintf(fp, "#\n");
44         fprintf(fp, "# Right ExpressKey Pad\n");
45         fprintf(fp, "# ------------\n");
46         fprintf(fp, "# |   |   |  |             Wacom Intuos3 defaults are:\n");
47         fprintf(fp, "# | T |13 |  |\n");
48         fprintf(fp, "# | O |---|15|             Button 13 = (left) Shift        = keycode 50\n");
49         fprintf(fp, "# | U |14 |  |             Button 14 = (left) Alt          = keycode 64\n");
50         fprintf(fp, "# | C |------|             Button 15 = (left) Control      = keycode 37\n");
51         fprintf(fp, "# | H |  16  |             Button 16 = Space               = keycode 65\n");
52         fprintf(fp, "# ------------\n");
53         fprintf(fp, "#\n");
54         fprintf(fp, "# The \"default\" program record must be the very first record, at the top.\n");
55         fprintf(fp, "# Use the value 999 as a keycode to enable pen mode toggling. To be able\n");
56         fprintf(fp, "# to switch mode anywhere each program block must then contain one 999\n");
57         fprintf(fp, "# definition.\n\n");
58         fprintf(fp, "# Use the values 991 to 997 for simulating mouse buttons 1 to 7. Only existing\n");
59         fprintf(fp, "# mouse buttons, defined through the driver of the active core pointer, can be\n");
60         fprintf(fp, "# simulated.\n\n");
61         fprintf(fp, "# Each program record is enclosed between two sets of double percentage signs.\n");
62         fprintf(fp, "# Each program field begins after a colon \":\". Whitespace (tabs and spaces)\n");
63         fprintf(fp, "# are ignored in the keycode fields, but spaces are recorded when in a\n");
64         fprintf(fp, "# Program Name field (between the double quotes).\n\n\n");
65
66         return 0;
67
68 }
69
70 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
71  Function writes out a short configuration file if none exists. It takes
72  the info from a global memory structure whose only purpose is this initial
73  write moment. The file should then be read back immediately to populate a
74  memory structure that other functions rely on for their proper operation.
75  Returns nothing useful. Write errors are checked in the calling function.
76  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
77
78 int write_file_config(int *ip, FILE *fp)
79 {
80
81         struct program *p;
82         
83         /* Convert to long for x86_64 systems */
84         p = (void *)(long)*ip;
85
86         fprintf(fp, "%s                         # <--- Begin New Program Record\n\n", "%%");
87         fprintf(fp, "00 Program Name: \"%s\"    # Name must be within double quotes \"\"\n", p->class_name);
88         fprintf(fp, "01 Handle Touch Strips: %d # Main switch. Use 1 to enable the Touch Strips\n\n", p->handle_touch);
89         fprintf(fp, "02 Left Pad - Touch Up:            %d      # Left Touch Up\n", p->l_touch_up);
90         fprintf(fp, "03 Left Pad - Touch Up Plus:       %d      # Extra key\n\n", p->l_touch_up_plus);
91         fprintf(fp, "04 Left Pad - Touch Down:  %d      # Left Touch Down\n", p->l_touch_down);
92         fprintf(fp, "05 Left Pad - Touch Down Plus:     %d      # Extra key\n\n", p->l_touch_down_plus);
93         fprintf(fp, "06 Right Pad - Touch Up:   %d      # Right Touch Up\n", p->r_touch_up);
94         fprintf(fp, "07 Right Pad - Touch Up Plus:      %d      # Extra key\n\n", p->r_touch_up_plus);
95         fprintf(fp, "08 Right Pad - Touch Down: %d      # Right Touch Down\n", p->r_touch_down);
96         fprintf(fp, "09 Right Pad - Touch Down Plus:    %d      # Extra key\n\n", p->r_touch_down_plus);
97         fprintf(fp, "10 Left Pad - Button 9:            %d      # Button 9\n", p->key_9);
98         fprintf(fp, "11 Left Pad - Button 9 Plus:       %d      # Extra key\n\n", p->key_9_plus);
99         fprintf(fp, "12 Left Pad - Button 10:   %d      # Button 10\n", p->key_10);
100         fprintf(fp, "13 Left Pad - Button 10 Plus:      %d      # Extra key\n\n", p->key_10_plus);
101         fprintf(fp, "14 Left Pad - Button 11:   %d      # Button 11\n", p->key_11);
102         fprintf(fp, "15 Left Pad - Button 11 Plus:      %d      # Extra key\n\n", p->key_11_plus);
103         fprintf(fp, "16 Left Pad - Button 12:   %d      # Button 12\n", p->key_12);
104         fprintf(fp, "17 Left Pad - Button 12 Plus:      %d      # Extra key\n\n", p->key_12_plus);
105         fprintf(fp, "18 Right Pad - Button 13:  %d      # Button 13\n", p->key_13);
106         fprintf(fp, "19 Right Pad - Button 13 Plus:     %d      # Extra key\n\n", p->key_13_plus);
107         fprintf(fp, "20 Right Pad - Button 14:  %d      # Button 14\n", p->key_14);
108         fprintf(fp, "21 Right Pad - Button 14 Plus:     %d      # Extra key\n\n", p->key_14_plus);
109         fprintf(fp, "22 Right Pad - Button 15:  %d      # Button 15\n", p->key_15);
110         fprintf(fp, "23 Right Pad - Button 15 Plus:     %d      # Extra key\n\n", p->key_15_plus);
111         fprintf(fp, "24 Right Pad - Button 16:  %d      # Button 16\n", p->key_16);
112         fprintf(fp, "25 Right Pad - Button 16 Plus:     %d      # Extra key\n\n", p->key_16_plus);
113         fprintf(fp, "%s                         # <--- End Program Record\n\n", "%%");
114
115         return 0;
116 }
117
118 /* End Code */
119