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