1 /****************************************************************************
2 ** $Id: xtermcontrol.h,v 1.13 2002/08/01 21:54:17 jet Exp $
3 **
4 ** Copyright (C) 2002-2013 Jess Thrysoee <jess@thrysoee.dk>
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 ***************************************************************************  */
12 
13 #ifndef XTERMCONTROL_H
14 #define XTERMCONTROL_H
15 
16 enum CTLSEQS_TYPE
17 {
18     CSI,
19     GET_CSI,
20     OSC,
21     GET_OSC,
22     ANY
23 };
24 
25 /* xterm control sequences are described in ctlseq.ms, which is
26    distributed with the xterm source package, obtainable from
27    http://dickey.his.com/xterm.
28    To read the troff file as plain text, issue
29    "nroff -ms -t -c ctlseqs.ms | col -b > ctlseqs.txt"              */
30 
31 struct controlseq
32 {
33     int ctl1;          /* Ps                                        */
34     int ctl2;          /* Ps                                        */
35     char *text;        /* Pt                                        */
36     int type;          /* CTLSEQS_TYPE                              */
37     char *conf_title;  /* used in reports and configuration file    */
38     char *synopsis;    /* used in usage                             */
39     char *description; /* used in usage and configuration file      */
40 };
41 
42 extern struct controlseq ctlseqstab[];
43 #define NSEQ (sizeof ctlseqstab / sizeof ctlseqstab[0])
44 
45 void check_term_variable(void);
46 void csi_print1(int ctl1);
47 void csi_print2(int ctl1, int ctl2);
48 void csi_print3(int ctl1, int ctl2, int ctl3);
49 
50 void osc_print(int ps1, int ps2, char *pt);
51 
52 void tty_control(void);
53 char *ctty_path(void);
54 void raw_print(char *ctlseq);
55 ssize_t tty_read(char *output, size_t size);
56 
57 char *tmux_dcs_passthrough(char *ctlseq);
58 void set_tty_raw(void);
59 void set_tty_restore(void);
60 
61 int get_title(char *title, size_t size, int verbose, int ctl1);
62 int get_osc(char *osc, size_t size, int verbose, unsigned int option, int ctl1, int ctl2);
63 
64 void set_geometry(int ctl1, int ctl2, char *geometry);
65 int get_geometry(char *geometry, size_t size, int verbose, int ctl1, int ctl2);
66 
67 int configuration_write(const char *filepath);
68 
69 void usage(int status);
70 void version(void);
71 
72 void report_error(const char *synopsis);
73 void do_exit(int status);
74 
75 enum OPTION
76 {
77     FG,
78     BG,
79     COLOR_0,
80     COLOR_1,
81     COLOR_2,
82     COLOR_3,
83     COLOR_4,
84     COLOR_5,
85     COLOR_6,
86     COLOR_7,
87     COLOR_8,
88     COLOR_9,
89     COLOR_10,
90     COLOR_11,
91     COLOR_12,
92     COLOR_13,
93     COLOR_14,
94     COLOR_15,
95     COLOR_16,
96     COLOR_17,
97     COLOR_18,
98     COLOR_19,
99     COLOR_20,
100     COLOR_21,
101     COLOR_22,
102     COLOR_23,
103     COLOR_24,
104     COLOR_25,
105     COLOR_26,
106     COLOR_27,
107     COLOR_28,
108     COLOR_29,
109     COLOR_30,
110     COLOR_31,
111     COLOR_32,
112     COLOR_33,
113     COLOR_34,
114     COLOR_35,
115     COLOR_36,
116     COLOR_37,
117     COLOR_38,
118     COLOR_39,
119     COLOR_40,
120     COLOR_41,
121     COLOR_42,
122     COLOR_43,
123     COLOR_44,
124     COLOR_45,
125     COLOR_46,
126     COLOR_47,
127     COLOR_48,
128     COLOR_49,
129     COLOR_50,
130     COLOR_51,
131     COLOR_52,
132     COLOR_53,
133     COLOR_54,
134     COLOR_55,
135     COLOR_56,
136     COLOR_57,
137     COLOR_58,
138     COLOR_59,
139     COLOR_60,
140     COLOR_61,
141     COLOR_62,
142     COLOR_63,
143     COLOR_64,
144     COLOR_65,
145     COLOR_66,
146     COLOR_67,
147     COLOR_68,
148     COLOR_69,
149     COLOR_70,
150     COLOR_71,
151     COLOR_72,
152     COLOR_73,
153     COLOR_74,
154     COLOR_75,
155     COLOR_76,
156     COLOR_77,
157     COLOR_78,
158     COLOR_79,
159     COLOR_80,
160     COLOR_81,
161     COLOR_82,
162     COLOR_83,
163     COLOR_84,
164     COLOR_85,
165     COLOR_86,
166     COLOR_87,
167     COLOR_88,
168     COLOR_89,
169     COLOR_90,
170     COLOR_91,
171     COLOR_92,
172     COLOR_93,
173     COLOR_94,
174     COLOR_95,
175     COLOR_96,
176     COLOR_97,
177     COLOR_98,
178     COLOR_99,
179     COLOR_100,
180     COLOR_101,
181     COLOR_102,
182     COLOR_103,
183     COLOR_104,
184     COLOR_105,
185     COLOR_106,
186     COLOR_107,
187     COLOR_108,
188     COLOR_109,
189     COLOR_110,
190     COLOR_111,
191     COLOR_112,
192     COLOR_113,
193     COLOR_114,
194     COLOR_115,
195     COLOR_116,
196     COLOR_117,
197     COLOR_118,
198     COLOR_119,
199     COLOR_120,
200     COLOR_121,
201     COLOR_122,
202     COLOR_123,
203     COLOR_124,
204     COLOR_125,
205     COLOR_126,
206     COLOR_127,
207     COLOR_128,
208     COLOR_129,
209     COLOR_130,
210     COLOR_131,
211     COLOR_132,
212     COLOR_133,
213     COLOR_134,
214     COLOR_135,
215     COLOR_136,
216     COLOR_137,
217     COLOR_138,
218     COLOR_139,
219     COLOR_140,
220     COLOR_141,
221     COLOR_142,
222     COLOR_143,
223     COLOR_144,
224     COLOR_145,
225     COLOR_146,
226     COLOR_147,
227     COLOR_148,
228     COLOR_149,
229     COLOR_150,
230     COLOR_151,
231     COLOR_152,
232     COLOR_153,
233     COLOR_154,
234     COLOR_155,
235     COLOR_156,
236     COLOR_157,
237     COLOR_158,
238     COLOR_159,
239     COLOR_160,
240     COLOR_161,
241     COLOR_162,
242     COLOR_163,
243     COLOR_164,
244     COLOR_165,
245     COLOR_166,
246     COLOR_167,
247     COLOR_168,
248     COLOR_169,
249     COLOR_170,
250     COLOR_171,
251     COLOR_172,
252     COLOR_173,
253     COLOR_174,
254     COLOR_175,
255     COLOR_176,
256     COLOR_177,
257     COLOR_178,
258     COLOR_179,
259     COLOR_180,
260     COLOR_181,
261     COLOR_182,
262     COLOR_183,
263     COLOR_184,
264     COLOR_185,
265     COLOR_186,
266     COLOR_187,
267     COLOR_188,
268     COLOR_189,
269     COLOR_190,
270     COLOR_191,
271     COLOR_192,
272     COLOR_193,
273     COLOR_194,
274     COLOR_195,
275     COLOR_196,
276     COLOR_197,
277     COLOR_198,
278     COLOR_199,
279     COLOR_200,
280     COLOR_201,
281     COLOR_202,
282     COLOR_203,
283     COLOR_204,
284     COLOR_205,
285     COLOR_206,
286     COLOR_207,
287     COLOR_208,
288     COLOR_209,
289     COLOR_210,
290     COLOR_211,
291     COLOR_212,
292     COLOR_213,
293     COLOR_214,
294     COLOR_215,
295     COLOR_216,
296     COLOR_217,
297     COLOR_218,
298     COLOR_219,
299     COLOR_220,
300     COLOR_221,
301     COLOR_222,
302     COLOR_223,
303     COLOR_224,
304     COLOR_225,
305     COLOR_226,
306     COLOR_227,
307     COLOR_228,
308     COLOR_229,
309     COLOR_230,
310     COLOR_231,
311     COLOR_232,
312     COLOR_233,
313     COLOR_234,
314     COLOR_235,
315     COLOR_236,
316     COLOR_237,
317     COLOR_238,
318     COLOR_239,
319     COLOR_240,
320     COLOR_241,
321     COLOR_242,
322     COLOR_243,
323     COLOR_244,
324     COLOR_245,
325     COLOR_246,
326     COLOR_247,
327     COLOR_248,
328     COLOR_249,
329     COLOR_250,
330     COLOR_251,
331     COLOR_252,
332     COLOR_253,
333     COLOR_254,
334     COLOR_255,
335     COLOR_HL,
336     CURSOR,
337     MOUSE_FG,
338     MOUSE_BG,
339     FONT,
340     TITLE,
341     GEOMETRY,
342     GET_FG,
343     GET_BG,
344     GET_COLOR_0,
345     GET_COLOR_1,
346     GET_COLOR_2,
347     GET_COLOR_3,
348     GET_COLOR_4,
349     GET_COLOR_5,
350     GET_COLOR_6,
351     GET_COLOR_7,
352     GET_COLOR_8,
353     GET_COLOR_9,
354     GET_COLOR_10,
355     GET_COLOR_11,
356     GET_COLOR_12,
357     GET_COLOR_13,
358     GET_COLOR_14,
359     GET_COLOR_15,
360     GET_COLOR_16,
361     GET_COLOR_17,
362     GET_COLOR_18,
363     GET_COLOR_19,
364     GET_COLOR_20,
365     GET_COLOR_21,
366     GET_COLOR_22,
367     GET_COLOR_23,
368     GET_COLOR_24,
369     GET_COLOR_25,
370     GET_COLOR_26,
371     GET_COLOR_27,
372     GET_COLOR_28,
373     GET_COLOR_29,
374     GET_COLOR_30,
375     GET_COLOR_31,
376     GET_COLOR_32,
377     GET_COLOR_33,
378     GET_COLOR_34,
379     GET_COLOR_35,
380     GET_COLOR_36,
381     GET_COLOR_37,
382     GET_COLOR_38,
383     GET_COLOR_39,
384     GET_COLOR_40,
385     GET_COLOR_41,
386     GET_COLOR_42,
387     GET_COLOR_43,
388     GET_COLOR_44,
389     GET_COLOR_45,
390     GET_COLOR_46,
391     GET_COLOR_47,
392     GET_COLOR_48,
393     GET_COLOR_49,
394     GET_COLOR_50,
395     GET_COLOR_51,
396     GET_COLOR_52,
397     GET_COLOR_53,
398     GET_COLOR_54,
399     GET_COLOR_55,
400     GET_COLOR_56,
401     GET_COLOR_57,
402     GET_COLOR_58,
403     GET_COLOR_59,
404     GET_COLOR_60,
405     GET_COLOR_61,
406     GET_COLOR_62,
407     GET_COLOR_63,
408     GET_COLOR_64,
409     GET_COLOR_65,
410     GET_COLOR_66,
411     GET_COLOR_67,
412     GET_COLOR_68,
413     GET_COLOR_69,
414     GET_COLOR_70,
415     GET_COLOR_71,
416     GET_COLOR_72,
417     GET_COLOR_73,
418     GET_COLOR_74,
419     GET_COLOR_75,
420     GET_COLOR_76,
421     GET_COLOR_77,
422     GET_COLOR_78,
423     GET_COLOR_79,
424     GET_COLOR_80,
425     GET_COLOR_81,
426     GET_COLOR_82,
427     GET_COLOR_83,
428     GET_COLOR_84,
429     GET_COLOR_85,
430     GET_COLOR_86,
431     GET_COLOR_87,
432     GET_COLOR_88,
433     GET_COLOR_89,
434     GET_COLOR_90,
435     GET_COLOR_91,
436     GET_COLOR_92,
437     GET_COLOR_93,
438     GET_COLOR_94,
439     GET_COLOR_95,
440     GET_COLOR_96,
441     GET_COLOR_97,
442     GET_COLOR_98,
443     GET_COLOR_99,
444     GET_COLOR_100,
445     GET_COLOR_101,
446     GET_COLOR_102,
447     GET_COLOR_103,
448     GET_COLOR_104,
449     GET_COLOR_105,
450     GET_COLOR_106,
451     GET_COLOR_107,
452     GET_COLOR_108,
453     GET_COLOR_109,
454     GET_COLOR_110,
455     GET_COLOR_111,
456     GET_COLOR_112,
457     GET_COLOR_113,
458     GET_COLOR_114,
459     GET_COLOR_115,
460     GET_COLOR_116,
461     GET_COLOR_117,
462     GET_COLOR_118,
463     GET_COLOR_119,
464     GET_COLOR_120,
465     GET_COLOR_121,
466     GET_COLOR_122,
467     GET_COLOR_123,
468     GET_COLOR_124,
469     GET_COLOR_125,
470     GET_COLOR_126,
471     GET_COLOR_127,
472     GET_COLOR_128,
473     GET_COLOR_129,
474     GET_COLOR_130,
475     GET_COLOR_131,
476     GET_COLOR_132,
477     GET_COLOR_133,
478     GET_COLOR_134,
479     GET_COLOR_135,
480     GET_COLOR_136,
481     GET_COLOR_137,
482     GET_COLOR_138,
483     GET_COLOR_139,
484     GET_COLOR_140,
485     GET_COLOR_141,
486     GET_COLOR_142,
487     GET_COLOR_143,
488     GET_COLOR_144,
489     GET_COLOR_145,
490     GET_COLOR_146,
491     GET_COLOR_147,
492     GET_COLOR_148,
493     GET_COLOR_149,
494     GET_COLOR_150,
495     GET_COLOR_151,
496     GET_COLOR_152,
497     GET_COLOR_153,
498     GET_COLOR_154,
499     GET_COLOR_155,
500     GET_COLOR_156,
501     GET_COLOR_157,
502     GET_COLOR_158,
503     GET_COLOR_159,
504     GET_COLOR_160,
505     GET_COLOR_161,
506     GET_COLOR_162,
507     GET_COLOR_163,
508     GET_COLOR_164,
509     GET_COLOR_165,
510     GET_COLOR_166,
511     GET_COLOR_167,
512     GET_COLOR_168,
513     GET_COLOR_169,
514     GET_COLOR_170,
515     GET_COLOR_171,
516     GET_COLOR_172,
517     GET_COLOR_173,
518     GET_COLOR_174,
519     GET_COLOR_175,
520     GET_COLOR_176,
521     GET_COLOR_177,
522     GET_COLOR_178,
523     GET_COLOR_179,
524     GET_COLOR_180,
525     GET_COLOR_181,
526     GET_COLOR_182,
527     GET_COLOR_183,
528     GET_COLOR_184,
529     GET_COLOR_185,
530     GET_COLOR_186,
531     GET_COLOR_187,
532     GET_COLOR_188,
533     GET_COLOR_189,
534     GET_COLOR_190,
535     GET_COLOR_191,
536     GET_COLOR_192,
537     GET_COLOR_193,
538     GET_COLOR_194,
539     GET_COLOR_195,
540     GET_COLOR_196,
541     GET_COLOR_197,
542     GET_COLOR_198,
543     GET_COLOR_199,
544     GET_COLOR_200,
545     GET_COLOR_201,
546     GET_COLOR_202,
547     GET_COLOR_203,
548     GET_COLOR_204,
549     GET_COLOR_205,
550     GET_COLOR_206,
551     GET_COLOR_207,
552     GET_COLOR_208,
553     GET_COLOR_209,
554     GET_COLOR_210,
555     GET_COLOR_211,
556     GET_COLOR_212,
557     GET_COLOR_213,
558     GET_COLOR_214,
559     GET_COLOR_215,
560     GET_COLOR_216,
561     GET_COLOR_217,
562     GET_COLOR_218,
563     GET_COLOR_219,
564     GET_COLOR_220,
565     GET_COLOR_221,
566     GET_COLOR_222,
567     GET_COLOR_223,
568     GET_COLOR_224,
569     GET_COLOR_225,
570     GET_COLOR_226,
571     GET_COLOR_227,
572     GET_COLOR_228,
573     GET_COLOR_229,
574     GET_COLOR_230,
575     GET_COLOR_231,
576     GET_COLOR_232,
577     GET_COLOR_233,
578     GET_COLOR_234,
579     GET_COLOR_235,
580     GET_COLOR_236,
581     GET_COLOR_237,
582     GET_COLOR_238,
583     GET_COLOR_239,
584     GET_COLOR_240,
585     GET_COLOR_241,
586     GET_COLOR_242,
587     GET_COLOR_243,
588     GET_COLOR_244,
589     GET_COLOR_245,
590     GET_COLOR_246,
591     GET_COLOR_247,
592     GET_COLOR_248,
593     GET_COLOR_249,
594     GET_COLOR_250,
595     GET_COLOR_251,
596     GET_COLOR_252,
597     GET_COLOR_253,
598     GET_COLOR_254,
599     GET_COLOR_255,
600     GET_COLOR_HL,
601     GET_CURSOR,
602     GET_MOUSE_FG,
603     GET_MOUSE_BG,
604     GET_FONT,
605     GET_TITLE,
606     GET_GEOMETRY,
607     MAXIMIZE,
608     RESTORE,
609     ICONIFY,
610     DE_ICONIFY,
611     RAISE,
612     LOWER,
613     RESET,
614     RAW,
615     FILE_CONF
616 };
617 
618 #endif
619