mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 09:39:32 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			766 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			766 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
{
 | 
						|
    $Id$
 | 
						|
    This file is part of the Free Pascal run time library.
 | 
						|
    Copyright (c) 1999-2000 by Florian Klaempfl
 | 
						|
    member of the Free Pascal development team
 | 
						|
 | 
						|
    TermInfo interface unit for linux
 | 
						|
 | 
						|
    See the file COPYING.FPC, included in this distribution,
 | 
						|
    for details about the copyright.
 | 
						|
 | 
						|
    This program is distributed in the hope that it will be useful,
 | 
						|
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
 | 
						|
 **********************************************************************}
 | 
						|
unit TermInfo;
 | 
						|
 | 
						|
interface
 | 
						|
 | 
						|
{$linklib ncurses}
 | 
						|
{$linklib c}
 | 
						|
{$packrecords c}
 | 
						|
 | 
						|
const curseslib = 'ncurses';
 | 
						|
 | 
						|
const
 | 
						|
  { boolean values }
 | 
						|
  auto_left_margin              = 0;
 | 
						|
  auto_right_margin             = 1;
 | 
						|
  no_esc_ctlc                   = 2;
 | 
						|
  ceol_standout_glitch          = 3;
 | 
						|
  eat_newline_glitch            = 4;
 | 
						|
  erase_overstrike              = 5;
 | 
						|
  generic_type                  = 6;
 | 
						|
  hard_copy                     = 7;
 | 
						|
  has_meta_key                  = 8;
 | 
						|
  has_status_line               = 9;
 | 
						|
  insert_null_glitch            = 10;
 | 
						|
  memory_above                  = 11;
 | 
						|
  memory_below                  = 12;
 | 
						|
  move_insert_mode              = 13;
 | 
						|
  move_standout_mode            = 14;
 | 
						|
  over_strike                   = 15;
 | 
						|
  status_line_esc_ok            = 16;
 | 
						|
  dest_tabs_magic_smso          = 17;
 | 
						|
  tilde_glitch                  = 18;
 | 
						|
  transparent_underline         = 19;
 | 
						|
  xon_xoff                      = 20;
 | 
						|
  needs_xon_xoff                = 21;
 | 
						|
  prtr_silent                   = 22;
 | 
						|
  hard_cursor                   = 23;
 | 
						|
  non_rev_rmcup                 = 24;
 | 
						|
  no_pad_char                   = 25;
 | 
						|
  non_dest_scroll_region        = 26;
 | 
						|
  can_change                    = 27;
 | 
						|
  back_color_erase              = 28;
 | 
						|
  hue_lightness_saturation      = 29;
 | 
						|
  col_addr_glitch               = 30;
 | 
						|
  cr_cancels_micro_mode         = 31;
 | 
						|
  has_print_wheel               = 32;
 | 
						|
  row_addr_glitch               = 33;
 | 
						|
  semi_auto_right_margin        = 34;
 | 
						|
  cpi_changes_res               = 35;
 | 
						|
  lpi_changes_res               = 36;
 | 
						|
 | 
						|
  { numbers ... }
 | 
						|
  columns                       = 0;
 | 
						|
  init_tabs                     = 1;
 | 
						|
  lines                         = 2;
 | 
						|
  lines_of_memory               = 3;
 | 
						|
  magic_cookie_glitch           = 4;
 | 
						|
  padding_baud_rate             = 5;
 | 
						|
  virtual_terminal              = 6;
 | 
						|
  width_status_line             = 7;
 | 
						|
  num_labels                    = 8;
 | 
						|
  label_height                  = 9;
 | 
						|
  label_width                   = 10;
 | 
						|
  max_attributes                = 11;
 | 
						|
  maximum_windows               = 12;
 | 
						|
  max_colors                    = 13;
 | 
						|
  max_pairs                     = 14;
 | 
						|
  no_color_video                = 15;
 | 
						|
  buffer_capacity               = 16;
 | 
						|
  dot_vert_spacing              = 17;
 | 
						|
  dot_horz_spacing              = 18;
 | 
						|
  max_micro_address             = 19;
 | 
						|
  max_micro_jump                = 20;
 | 
						|
  micro_char_size               = 21;
 | 
						|
  micro_line_size               = 22;
 | 
						|
  number_of_pins                = 23;
 | 
						|
  output_res_char               = 24;
 | 
						|
  output_res_line               = 25;
 | 
						|
  output_res_horz_inch          = 26;
 | 
						|
  output_res_vert_inch          = 27;
 | 
						|
  print_rate                    = 28;
 | 
						|
  wide_char_size                = 29;
 | 
						|
  buttons                       = 30;
 | 
						|
  bit_image_entwining           = 31;
 | 
						|
  bit_image_type                = 32;
 | 
						|
 | 
						|
  { strings }
 | 
						|
  back_tab                      = 0;
 | 
						|
  bell                          = 1;
 | 
						|
  carriage_return               = 2;
 | 
						|
  change_scroll_region          = 3;
 | 
						|
  clear_all_tabs                = 4;
 | 
						|
  clear_screen                  = 5;
 | 
						|
  clr_eol                       = 6;
 | 
						|
  clr_eos                       = 7;
 | 
						|
  column_address                = 8;
 | 
						|
  command_character             = 9;
 | 
						|
  cursor_address                = 10;
 | 
						|
  cursor_down                   = 11;
 | 
						|
  cursor_home                   = 12;
 | 
						|
  cursor_invisible              = 13;
 | 
						|
  cursor_left                   = 14;
 | 
						|
  cursor_mem_address            = 15;
 | 
						|
  cursor_normal                 = 16;
 | 
						|
  cursor_right                  = 17;
 | 
						|
  cursor_to_ll                  = 18;
 | 
						|
  cursor_up                     = 19;
 | 
						|
  cursor_visible                = 20;
 | 
						|
  delete_character              = 21;
 | 
						|
  delete_line                   = 22;
 | 
						|
  dis_status_line               = 23;
 | 
						|
  down_half_line                = 24;
 | 
						|
  enter_alt_charset_mode        = 25;
 | 
						|
  enter_blink_mode              = 26;
 | 
						|
  enter_bold_mode               = 27;
 | 
						|
  enter_ca_mode                 = 28;
 | 
						|
  enter_delete_mode             = 29;
 | 
						|
  enter_dim_mode                = 30;
 | 
						|
  enter_insert_mode             = 31;
 | 
						|
  enter_secure_mode             = 32;
 | 
						|
  enter_protected_mode          = 33;
 | 
						|
  enter_reverse_mode            = 34;
 | 
						|
  enter_standout_mode           = 35;
 | 
						|
  enter_underline_mode          = 36;
 | 
						|
  erase_chars                   = 37;
 | 
						|
  exit_alt_charset_mode         = 38;
 | 
						|
  exit_attribute_mode           = 39;
 | 
						|
  exit_ca_mode                  = 40;
 | 
						|
  exit_delete_mode              = 41;
 | 
						|
  exit_insert_mode              = 42;
 | 
						|
  exit_standout_mode            = 43;
 | 
						|
  exit_underline_mode           = 44;
 | 
						|
  flash_screen                  = 45;
 | 
						|
  form_feed                     = 46;
 | 
						|
  from_status_line              = 47;
 | 
						|
  init_1string                  = 48;
 | 
						|
  init_2string                  = 49;
 | 
						|
  init_3string                  = 50;
 | 
						|
  init_file                     = 51;
 | 
						|
  insert_character              = 52;
 | 
						|
  insert_line                   = 53;
 | 
						|
  insert_padding                = 54;
 | 
						|
  key_backspace                 = 55;
 | 
						|
  key_catab                     = 56;
 | 
						|
  key_clear                     = 57;
 | 
						|
  key_ctab                      = 58;
 | 
						|
  key_dc                        = 59;
 | 
						|
  key_dl                        = 60;
 | 
						|
  key_down                      = 61;
 | 
						|
  key_eic                       = 62;
 | 
						|
  key_eol                       = 63;
 | 
						|
  key_eos                       = 64;
 | 
						|
  key_f0                        = 65;
 | 
						|
  key_f1                        = 66;
 | 
						|
  key_f10                       = 67;
 | 
						|
  key_f2                        = 68;
 | 
						|
  key_f3                        = 69;
 | 
						|
  key_f4                        = 70;
 | 
						|
  key_f5                        = 71;
 | 
						|
  key_f6                        = 72;
 | 
						|
  key_f7                        = 73;
 | 
						|
  key_f8                        = 74;
 | 
						|
  key_f9                        = 75;
 | 
						|
  key_home                      = 76;
 | 
						|
  key_ic                        = 77;
 | 
						|
  key_il                        = 78;
 | 
						|
  key_left                      = 79;
 | 
						|
  key_ll                        = 80;
 | 
						|
  key_npage                     = 81;
 | 
						|
  key_ppage                     = 82;
 | 
						|
  key_right                     = 83;
 | 
						|
  key_sf                        = 84;
 | 
						|
  key_sr                        = 85;
 | 
						|
  key_stab                      = 86;
 | 
						|
  key_up                        = 87;
 | 
						|
  keypad_local                  = 88;
 | 
						|
  keypad_xmit                   = 89;
 | 
						|
  lab_f0                        = 90;
 | 
						|
  lab_f1                        = 91;
 | 
						|
  lab_f10                       = 92;
 | 
						|
  lab_f2                        = 93;
 | 
						|
  lab_f3                        = 94;
 | 
						|
  lab_f4                        = 95;
 | 
						|
  lab_f5                        = 96;
 | 
						|
  lab_f6                        = 97;
 | 
						|
  lab_f7                        = 98;
 | 
						|
  lab_f8                        = 99;
 | 
						|
  lab_f9                        = 100;
 | 
						|
  meta_off                      = 101;
 | 
						|
  meta_on                       = 102;
 | 
						|
  newline                       = 103;
 | 
						|
  pad_char                      = 104;
 | 
						|
  parm_dch                      = 105;
 | 
						|
  parm_delete_line              = 106;
 | 
						|
  parm_down_cursor              = 107;
 | 
						|
  parm_ich                      = 108;
 | 
						|
  parm_index                    = 109;
 | 
						|
  parm_insert_line              = 110;
 | 
						|
  parm_left_cursor              = 111;
 | 
						|
  parm_right_cursor             = 112;
 | 
						|
  parm_rindex                   = 113;
 | 
						|
  parm_up_cursor                = 114;
 | 
						|
  pkey_key                      = 115;
 | 
						|
  pkey_local                    = 116;
 | 
						|
  pkey_xmit                     = 117;
 | 
						|
  print_screen                  = 118;
 | 
						|
  prtr_off                      = 119;
 | 
						|
  prtr_on                       = 120;
 | 
						|
  repeat_char                   = 121;
 | 
						|
  reset_1string                 = 122;
 | 
						|
  reset_2string                 = 123;
 | 
						|
  reset_3string                 = 124;
 | 
						|
  reset_file                    = 125;
 | 
						|
  restore_cursor                = 126;
 | 
						|
  row_address                   = 127;
 | 
						|
  save_cursor                   = 128;
 | 
						|
  scroll_forward                = 129;
 | 
						|
  scroll_reverse                = 130;
 | 
						|
  set_attributes                = 131;
 | 
						|
  set_tab                       = 132;
 | 
						|
  set_window                    = 133;
 | 
						|
  tab                           = 134;
 | 
						|
  to_status_line                = 135;
 | 
						|
  underline_char                = 136;
 | 
						|
  up_half_line                  = 137;
 | 
						|
  init_prog                     = 138;
 | 
						|
  key_a1                        = 139;
 | 
						|
  key_a3                        = 140;
 | 
						|
  key_b2                        = 141;
 | 
						|
  key_c1                        = 142;
 | 
						|
  key_c3                        = 143;
 | 
						|
  prtr_non                      = 144;
 | 
						|
  char_padding                  = 145;
 | 
						|
  acs_chars                     = 146;
 | 
						|
  plab_norm                     = 147;
 | 
						|
  key_btab                      = 148;
 | 
						|
  enter_xon_mode                = 149;
 | 
						|
  exit_xon_mode                 = 150;
 | 
						|
  enter_am_mode                 = 151;
 | 
						|
  exit_am_mode                  = 152;
 | 
						|
  xon_character                 = 153;
 | 
						|
  xoff_character                = 154;
 | 
						|
  ena_acs                       = 155;
 | 
						|
  label_on                      = 156;
 | 
						|
  label_off                     = 157;
 | 
						|
  key_beg                       = 158;
 | 
						|
  key_cancel                    = 159;
 | 
						|
  key_close                     = 160;
 | 
						|
  key_command                   = 161;
 | 
						|
  key_copy                      = 162;
 | 
						|
  key_create                    = 163;
 | 
						|
  key_end                       = 164;
 | 
						|
  key_enter                     = 165;
 | 
						|
  key_exit                      = 166;
 | 
						|
  key_find                      = 167;
 | 
						|
  key_help                      = 168;
 | 
						|
  key_mark                      = 169;
 | 
						|
  key_message                   = 170;
 | 
						|
  key_move                      = 171;
 | 
						|
  key_next                      = 172;
 | 
						|
  key_open                      = 173;
 | 
						|
  key_options                   = 174;
 | 
						|
  key_previous                  = 175;
 | 
						|
  key_print                     = 176;
 | 
						|
  key_redo                      = 177;
 | 
						|
  key_reference                 = 178;
 | 
						|
  key_refresh                   = 179;
 | 
						|
  key_replace                   = 180;
 | 
						|
  key_restart                   = 181;
 | 
						|
  key_resume                    = 182;
 | 
						|
  key_save                      = 183;
 | 
						|
  key_suspend                   = 184;
 | 
						|
  key_undo                      = 185;
 | 
						|
  key_sbeg                      = 186;
 | 
						|
  key_scancel                   = 187;
 | 
						|
  key_scommand                  = 188;
 | 
						|
  key_scopy                     = 189;
 | 
						|
  key_screate                   = 190;
 | 
						|
  key_sdc                       = 191;
 | 
						|
  key_sdl                       = 192;
 | 
						|
  key_select                    = 193;
 | 
						|
  key_send                      = 194;
 | 
						|
  key_seol                      = 195;
 | 
						|
  key_sexit                     = 196;
 | 
						|
  key_sfind                     = 197;
 | 
						|
  key_shelp                     = 198;
 | 
						|
  key_shome                     = 199;
 | 
						|
  key_sic                       = 200;
 | 
						|
  key_sleft                     = 201;
 | 
						|
  key_smessage                  = 202;
 | 
						|
  key_smove                     = 203;
 | 
						|
  key_snext                     = 204;
 | 
						|
  key_soptions                  = 205;
 | 
						|
  key_sprevious                 = 206;
 | 
						|
  key_sprint                    = 207;
 | 
						|
  key_sredo                     = 208;
 | 
						|
  key_sreplace                  = 209;
 | 
						|
  key_sright                    = 210;
 | 
						|
  key_srsume                    = 211;
 | 
						|
  key_ssave                     = 212;
 | 
						|
  key_ssuspend                  = 213;
 | 
						|
  key_sundo                     = 214;
 | 
						|
  req_for_input                 = 215;
 | 
						|
  key_f11                       = 216;
 | 
						|
  key_f12                       = 217;
 | 
						|
  key_f13                       = 218;
 | 
						|
  key_f14                       = 219;
 | 
						|
  key_f15                       = 220;
 | 
						|
  key_f16                       = 221;
 | 
						|
  key_f17                       = 222;
 | 
						|
  key_f18                       = 223;
 | 
						|
  key_f19                       = 224;
 | 
						|
  key_f20                       = 225;
 | 
						|
  key_f21                       = 226;
 | 
						|
  key_f22                       = 227;
 | 
						|
  key_f23                       = 228;
 | 
						|
  key_f24                       = 229;
 | 
						|
  key_f25                       = 230;
 | 
						|
  key_f26                       = 231;
 | 
						|
  key_f27                       = 232;
 | 
						|
  key_f28                       = 233;
 | 
						|
  key_f29                       = 234;
 | 
						|
  key_f30                       = 235;
 | 
						|
  key_f31                       = 236;
 | 
						|
  key_f32                       = 237;
 | 
						|
  key_f33                       = 238;
 | 
						|
  key_f34                       = 239;
 | 
						|
  key_f35                       = 240;
 | 
						|
  key_f36                       = 241;
 | 
						|
  key_f37                       = 242;
 | 
						|
  key_f38                       = 243;
 | 
						|
  key_f39                       = 244;
 | 
						|
  key_f40                       = 245;
 | 
						|
  key_f41                       = 246;
 | 
						|
  key_f42                       = 247;
 | 
						|
  key_f43                       = 248;
 | 
						|
  key_f44                       = 249;
 | 
						|
  key_f45                       = 250;
 | 
						|
  key_f46                       = 251;
 | 
						|
  key_f47                       = 252;
 | 
						|
  key_f48                       = 253;
 | 
						|
  key_f49                       = 254;
 | 
						|
  key_f50                       = 255;
 | 
						|
  key_f51                       = 256;
 | 
						|
  key_f52                       = 257;
 | 
						|
  key_f53                       = 258;
 | 
						|
  key_f54                       = 259;
 | 
						|
  key_f55                       = 260;
 | 
						|
  key_f56                       = 261;
 | 
						|
  key_f57                       = 262;
 | 
						|
  key_f58                       = 263;
 | 
						|
  key_f59                       = 264;
 | 
						|
  key_f60                       = 265;
 | 
						|
  key_f61                       = 266;
 | 
						|
  key_f62                       = 267;
 | 
						|
  key_f63                       = 268;
 | 
						|
  clr_bol                       = 269;
 | 
						|
  clear_margins                 = 270;
 | 
						|
  set_left_margin               = 271;
 | 
						|
  set_right_margin              = 272;
 | 
						|
  label_format                  = 273;
 | 
						|
  set_clock                     = 274;
 | 
						|
  display_clock                 = 275;
 | 
						|
  remove_clock                  = 276;
 | 
						|
  create_window                 = 277;
 | 
						|
  goto_window                   = 278;
 | 
						|
  hangup                        = 279;
 | 
						|
  dial_phone                    = 280;
 | 
						|
  quick_dial                    = 281;
 | 
						|
  tone                          = 282;
 | 
						|
  pulse                         = 283;
 | 
						|
  flash_hook                    = 284;
 | 
						|
  fixed_pause                   = 285;
 | 
						|
  wait_tone                     = 286;
 | 
						|
  user0                         = 287;
 | 
						|
  user1                         = 288;
 | 
						|
  user2                         = 289;
 | 
						|
  user3                         = 290;
 | 
						|
  user4                         = 291;
 | 
						|
  user5                         = 292;
 | 
						|
  user6                         = 293;
 | 
						|
  user7                         = 294;
 | 
						|
  user8                         = 295;
 | 
						|
  user9                         = 296;
 | 
						|
  orig_pair                     = 297;
 | 
						|
  orig_colors                   = 298;
 | 
						|
  initialize_color              = 299;
 | 
						|
  initialize_pair               = 300;
 | 
						|
  set_color_pair                = 301;
 | 
						|
  set_foreground                = 302;
 | 
						|
  set_background                = 303;
 | 
						|
  change_char_pitch             = 304;
 | 
						|
  change_line_pitch             = 305;
 | 
						|
  change_res_horz               = 306;
 | 
						|
  change_res_vert               = 307;
 | 
						|
  define_char                   = 308;
 | 
						|
  enter_doublewide_mode         = 309;
 | 
						|
  enter_draft_quality           = 310;
 | 
						|
  enter_italics_mode            = 311;
 | 
						|
  enter_leftward_mode           = 312;
 | 
						|
  enter_micro_mode              = 313;
 | 
						|
  enter_near_letter_quality     = 314;
 | 
						|
  enter_normal_quality          = 315;
 | 
						|
  enter_shadow_mode             = 316;
 | 
						|
  enter_subscript_mode          = 317;
 | 
						|
  enter_superscript_mode        = 318;
 | 
						|
  enter_upward_mode             = 319;
 | 
						|
  exit_doublewide_mode          = 320;
 | 
						|
  exit_italics_mode             = 321;
 | 
						|
  exit_leftward_mode            = 322;
 | 
						|
  exit_micro_mode               = 323;
 | 
						|
  exit_shadow_mode              = 324;
 | 
						|
  exit_subscript_mode           = 325;
 | 
						|
  exit_superscript_mode         = 326;
 | 
						|
  exit_upward_mode              = 327;
 | 
						|
  micro_column_address          = 328;
 | 
						|
  micro_down                    = 329;
 | 
						|
  micro_left                    = 330;
 | 
						|
  micro_right                   = 331;
 | 
						|
  micro_row_address             = 332;
 | 
						|
  micro_up                      = 333;
 | 
						|
  order_of_pins                 = 334;
 | 
						|
  parm_down_micro               = 335;
 | 
						|
  parm_left_micro               = 336;
 | 
						|
  parm_right_micro              = 337;
 | 
						|
  parm_up_micro                 = 338;
 | 
						|
  select_char_set               = 339;
 | 
						|
  set_bottom_margin             = 340;
 | 
						|
  set_bottom_margin_parm        = 341;
 | 
						|
  set_left_margin_parm          = 342;
 | 
						|
  set_right_margin_parm         = 343;
 | 
						|
  set_top_margin                = 344;
 | 
						|
  set_top_margin_parm           = 345;
 | 
						|
  start_bit_image               = 346;
 | 
						|
  start_char_set_def            = 347;
 | 
						|
  stop_bit_image                = 348;
 | 
						|
  stop_char_set_def             = 349;
 | 
						|
  subscript_characters          = 350;
 | 
						|
  superscript_characters        = 351;
 | 
						|
  these_cause_cr                = 352;
 | 
						|
  zero_motion                   = 353;
 | 
						|
  char_set_names                = 354;
 | 
						|
  key_mouse                     = 355;
 | 
						|
  mouse_info                    = 356;
 | 
						|
  req_mouse_pos                 = 357;
 | 
						|
  get_mouse                     = 358;
 | 
						|
  set_a_foreground              = 359;
 | 
						|
  set_a_background              = 360;
 | 
						|
  pkey_plab                     = 361;
 | 
						|
  device_type                   = 362;
 | 
						|
  code_set_init                 = 363;
 | 
						|
  set0_des_seq                  = 364;
 | 
						|
  set1_des_seq                  = 365;
 | 
						|
  set2_des_seq                  = 366;
 | 
						|
  set3_des_seq                  = 367;
 | 
						|
  set_lr_margin                 = 368;
 | 
						|
  set_tb_margin                 = 369;
 | 
						|
  bit_image_repeat              = 370;
 | 
						|
  bit_image_newline             = 371;
 | 
						|
  bit_image_carriage_return     = 372;
 | 
						|
  color_names                   = 373;
 | 
						|
  define_bit_image_region       = 374;
 | 
						|
  end_bit_image_region          = 375;
 | 
						|
  set_color_band                = 376;
 | 
						|
  set_page_length               = 377;
 | 
						|
  display_pc_char               = 378;
 | 
						|
  enter_pc_charset_mode         = 379;
 | 
						|
  exit_pc_charset_mode          = 380;
 | 
						|
  enter_scancode_mode           = 381;
 | 
						|
  exit_scancode_mode            = 382;
 | 
						|
  pc_term_options               = 383;
 | 
						|
  scancode_escape               = 384;
 | 
						|
  alt_scancode_esc              = 385;
 | 
						|
  enter_horizontal_hl_mode      = 386;
 | 
						|
  enter_left_hl_mode            = 387;
 | 
						|
  enter_low_hl_mode             = 388;
 | 
						|
  enter_right_hl_mode           = 389;
 | 
						|
  enter_top_hl_mode             = 390;
 | 
						|
  enter_vertical_hl_mode        = 391;
 | 
						|
 | 
						|
  { older synonyms for some booleans }
 | 
						|
  beehive_glitch                = no_esc_ctlc;
 | 
						|
  teleray_glitch                = dest_tabs_magic_smso;
 | 
						|
  micro_col_size                = micro_char_size;
 | 
						|
  { internal }
 | 
						|
  termcap_init2               = 392;
 | 
						|
  termcap_reset               = 393;
 | 
						|
  magic_cookie_glitch_ul      = 33;
 | 
						|
  backspaces_with_bs          = 37;
 | 
						|
  crt_no_scrolling            = 38;
 | 
						|
  no_correctly_working_cr     = 39;
 | 
						|
  carriage_return_delay       = 34;
 | 
						|
  new_line_delay              = 35;
 | 
						|
  linefeed_if_not_lf          = 394;
 | 
						|
  backspace_if_not_bs         = 395;
 | 
						|
  gnu_has_meta_key            = 40;
 | 
						|
  linefeed_is_newline         = 41;
 | 
						|
  backspace_delay             = 36;
 | 
						|
  horizontal_tab_delay        = 37;
 | 
						|
  number_of_function_keys     = 38;
 | 
						|
  other_non_function_keys     = 396;
 | 
						|
  arrow_key_map               = 397;
 | 
						|
  has_hardware_tabs           = 42;
 | 
						|
  return_does_clr_eol         = 43;
 | 
						|
  acs_ulcorner                = 398;
 | 
						|
  acs_llcorner                = 399;
 | 
						|
  acs_urcorner                = 400;
 | 
						|
  acs_lrcorner                = 401;
 | 
						|
  acs_ltee                    = 402;
 | 
						|
  acs_rtee                    = 403;
 | 
						|
  acs_btee                    = 404;
 | 
						|
  acs_ttee                    = 405;
 | 
						|
  acs_hline                   = 406;
 | 
						|
  acs_vline                   = 407;
 | 
						|
  acs_plus                    = 408;
 | 
						|
  memory_lock                 = 409;
 | 
						|
  memory_unlock               = 410;
 | 
						|
  box_chars_1                 = 411;
 | 
						|
 | 
						|
 | 
						|
const
 | 
						|
  NCCS = 32;
 | 
						|
  BoolCount = 44;
 | 
						|
  NumCount = 39;
 | 
						|
  StrCount = 412;
 | 
						|
 | 
						|
type
 | 
						|
  TCFlag_t = Longint;
 | 
						|
  Speed_t = Longint;
 | 
						|
  TermIOS = record
 | 
						|
    c_iflag, c_oflag, c_cflag, c_lflag: TCFlag_t;
 | 
						|
    c_line: Byte;
 | 
						|
    c_cc: array [0..NCCS-1] of Char;
 | 
						|
    c_ispeed, c_ospeed: Speed_t;
 | 
						|
    Pad: word;
 | 
						|
  end;
 | 
						|
 | 
						|
  TT_BoolArray = array [0..BoolCount - 1] of Boolean;
 | 
						|
  TT_WordArray = array [0..NumCount - 1] of Word;
 | 
						|
  TT_PCharArray = array [0..StrCount - 1] of PChar;
 | 
						|
 | 
						|
  TermType4 = record
 | 
						|
    Term_Names: PChar;
 | 
						|
    Str_Table: PChar;
 | 
						|
    Booleans: TT_BoolArray;
 | 
						|
    Numbers: TT_WordArray;
 | 
						|
    Strings: TT_PCharArray;
 | 
						|
  end;
 | 
						|
 | 
						|
  Terminal_ptr4 = ^Terminal4;
 | 
						|
  Terminal4 = record
 | 
						|
    TType: TermType4;
 | 
						|
    FileDes: Word;
 | 
						|
    Ottyb, Nttyb: Termios;
 | 
						|
    Pad: longint;
 | 
						|
  end;
 | 
						|
 | 
						|
  TermType5 = record
 | 
						|
    Term_Names: PChar;
 | 
						|
    Str_Table: PChar;
 | 
						|
    Booleans: ^TT_BoolArray;
 | 
						|
    Numbers: ^TT_WordArray;
 | 
						|
    Strings: ^TT_PCharArray;
 | 
						|
  end;
 | 
						|
 | 
						|
  Terminal_ptr5 = ^Terminal5;
 | 
						|
  Terminal5 = record
 | 
						|
    TType: TermType5;
 | 
						|
    FileDes: Word;
 | 
						|
    Ottyb, Nttyb: Termios;
 | 
						|
    Pad: longint;
 | 
						|
  end;
 | 
						|
 | 
						|
  TerminalCommon_ptr1 = ^TerminalCommon1;
 | 
						|
  TerminalCommon1 = record
 | 
						|
    Term_Names: PChar;
 | 
						|
    Str_Table: PChar;
 | 
						|
  end;
 | 
						|
 | 
						|
  TerminalCommon_ptr2 = ^TerminalCommon2;
 | 
						|
  TerminalCommon2 = record
 | 
						|
    FileDes: Word;
 | 
						|
    Ottyb, Nttyb: Termios;
 | 
						|
    Pad: longint;
 | 
						|
  end;
 | 
						|
 | 
						|
  WriterFunc = function (P: PChar): Longint;
 | 
						|
 | 
						|
var
 | 
						|
{$ifndef darwin}
 | 
						|
  cur_term : TerminalCommon_ptr1; cvar; external;
 | 
						|
{$else darwin}
 | 
						|
  cur_term : TerminalCommon_ptr1; external curseslib name 'cur_term';
 | 
						|
{$endif darwin}
 | 
						|
  cur_term_booleans: ^TT_BoolArray;
 | 
						|
  cur_term_numbers: ^TT_WordArray;
 | 
						|
  cur_term_strings: ^TT_PCharArray;
 | 
						|
  cur_term_common: TerminalCommon_ptr2;
 | 
						|
 | 
						|
const
 | 
						|
  cur_term_valid : boolean = false;
 | 
						|
 | 
						|
{ Note: the following two procedures expect a pointer to a full terminfo }
 | 
						|
{ structure, not just to the common parts. However, since this structure }
 | 
						|
{ differs for different versions of ncurses,it's impossible to give a    }
 | 
						|
{ general declaration here which is correct (JM)                         }
 | 
						|
function set_curterm(term: TerminalCommon_ptr1): TerminalCommon_ptr1;cdecl; external curseslib name 'set_curterm';
 | 
						|
function del_curterm(term: TerminalCommon_ptr1): Longint;
 | 
						|
 | 
						|
{ sets whether to use environment variables for LINES and COLUMNS }
 | 
						|
procedure use_env(B: Longint); cdecl; external curseslib name 'use_env';
 | 
						|
 | 
						|
function putp(Ndx: Longint): Longint;
 | 
						|
 | 
						|
{ this function must be called before any terminal properties are accessed }
 | 
						|
function setupterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint;
 | 
						|
 | 
						|
{ reinitialize lib }
 | 
						|
function restartterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'restartterm';
 | 
						|
 | 
						|
{function tgetent(P1, P2: PChar): Longint;
 | 
						|
function tgetflag(P: PChar): Longint;
 | 
						|
function tgetnum(P: PChar): Longint;
 | 
						|
function tgoto(P: PChar; L1, L2: Longint): PChar;
 | 
						|
function tgetstr(P: PChar; var R: PChar): PChar;
 | 
						|
function tigetflag(P: PChar): Longint;
 | 
						|
function tigetnum(P: PChar): Longint;
 | 
						|
function tigetstr(P: PChar): PChar;
 | 
						|
function tparm(P: PChar, ...): PChar;
 | 
						|
function tparam(const char *, char *, int, ...): PChar;}
 | 
						|
function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 | 
						|
 | 
						|
implementation
 | 
						|
 | 
						|
uses
 | 
						|
  baseUnix;
 | 
						|
 | 
						|
function putp(Ndx: Longint): Longint;
 | 
						|
var
 | 
						|
  P: PChar;
 | 
						|
begin
 | 
						|
  if not assigned(cur_term) then
 | 
						|
    RunError(219);
 | 
						|
  P := cur_term_strings^[Ndx];
 | 
						|
  putp := fpWrite(cur_term_common^.filedes, P^, StrLen(P));
 | 
						|
end;
 | 
						|
 | 
						|
function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 | 
						|
var
 | 
						|
  P: PChar;
 | 
						|
begin
 | 
						|
  if not assigned(cur_term) then
 | 
						|
    RunError(219);
 | 
						|
  { L1 := L1; why was this here ?? PM }
 | 
						|
  P := cur_term_strings^[Ndx];
 | 
						|
  tputs := F(P);
 | 
						|
end;
 | 
						|
 | 
						|
//function set_curterm(term: TerminalCommon_ptr1): TerminalCommon_ptr1; cdecl; external curseslib;
 | 
						|
 | 
						|
// function restartterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib;
 | 
						|
 | 
						|
function setuptermC(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'setupterm';
 | 
						|
 | 
						|
function setupterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint;
 | 
						|
var
 | 
						|
  versioncheck: longint;
 | 
						|
begin
 | 
						|
  setupterm := setuptermC(term,fd,errcode);
 | 
						|
  if not assigned(cur_term) then
 | 
						|
    exit;
 | 
						|
  cur_term_valid := true;
 | 
						|
  versioncheck := 0;
 | 
						|
  repeat
 | 
						|
    if (Terminal_ptr4(cur_term)^.ttype.Booleans[versioncheck] in [false,true]) then
 | 
						|
      inc(versioncheck)
 | 
						|
    else versioncheck := -1;
 | 
						|
  until (versioncheck = BoolCount) or
 | 
						|
        (versioncheck = -1);
 | 
						|
  if versioncheck = BoolCount then
 | 
						|
    { version 4.x }
 | 
						|
    begin
 | 
						|
      cur_term_booleans := @Terminal_ptr4(cur_term)^.ttype.Booleans;
 | 
						|
      cur_term_numbers := @Terminal_ptr4(cur_term)^.ttype.Numbers;
 | 
						|
      cur_term_strings := @Terminal_ptr4(cur_term)^.ttype.Strings;
 | 
						|
      cur_term_common := pointer(@Terminal_ptr4(cur_term)^.FileDes);
 | 
						|
    end
 | 
						|
  else
 | 
						|
    { assume 5.x or higher }
 | 
						|
    begin
 | 
						|
      cur_term_booleans := Terminal_ptr5(cur_term)^.ttype.Booleans;
 | 
						|
      cur_term_numbers := Terminal_ptr5(cur_term)^.ttype.Numbers;
 | 
						|
      cur_term_strings := Terminal_ptr5(cur_term)^.ttype.Strings;
 | 
						|
      cur_term_common := pointer(@Terminal_ptr5(cur_term)^.FileDes);
 | 
						|
    end;
 | 
						|
end;
 | 
						|
 | 
						|
function del_curtermC(term: TerminalCommon_ptr1): Longint; cdecl; external curseslib name 'del_curterm';
 | 
						|
 | 
						|
function del_curterm(term: TerminalCommon_ptr1): Longint;
 | 
						|
var
 | 
						|
  reset_cur_term : boolean;
 | 
						|
begin
 | 
						|
  if term=cur_term then
 | 
						|
    begin
 | 
						|
      cur_term_booleans := nil;
 | 
						|
      cur_term_numbers := nil;
 | 
						|
      cur_term_strings := nil;
 | 
						|
      cur_term_common := nil;
 | 
						|
      reset_cur_term := true;
 | 
						|
    end
 | 
						|
  else
 | 
						|
    reset_cur_term := false;
 | 
						|
  del_curterm := del_curtermC(term);
 | 
						|
  if reset_cur_term then
 | 
						|
    cur_term_valid := false;
 | 
						|
end;
 | 
						|
 | 
						|
{function tgetent(P1, P2: PChar): Longint; cdecl; external;
 | 
						|
function tgetflag(P: PChar): Longint; cdecl; external;
 | 
						|
function tgetnum(P: PChar): Longint; cdecl; external;
 | 
						|
function tgoto(P: PChar; L1, L2: Longint): PChar; cdecl; external;
 | 
						|
function tgetstr(P: PChar; var R: PChar): PChar; cdecl; external;
 | 
						|
function tigetflag(P: PChar): Longint; cdecl; external;
 | 
						|
function tigetnum(P: PChar): Longint; cdecl; external;
 | 
						|
function tigetstr(P: PChar): PChar; cdecl; external;
 | 
						|
function tparm(P: PChar; ...): PChar; cdecl; external;
 | 
						|
function tparam(const char *, char *, int, ...): PChar; cdecl; external;}
 | 
						|
 | 
						|
end.
 | 
						|
{
 | 
						|
  $Log$
 | 
						|
  Revision 1.7  2004-11-19 13:15:15  marco
 | 
						|
   * external rework. Mostly done.
 | 
						|
 | 
						|
  Revision 1.6  2004/03/05 22:18:15  jonas
 | 
						|
    * fixed declaration for cur_term for darwin now that the importing of
 | 
						|
      variables from shared libraries works
 | 
						|
 | 
						|
  Revision 1.5  2004/02/06 22:35:50  jonas
 | 
						|
    + some darwin support, doesn't work yet because of imported variables
 | 
						|
      problem
 | 
						|
 | 
						|
  Revision 1.4  2003/09/14 20:15:01  marco
 | 
						|
   * Unix reform stage two. Remove all calls from Unix that exist in Baseunix.
 | 
						|
 | 
						|
  Revision 1.3  2002/09/07 16:01:28  peter
 | 
						|
    * old logs removed and tabs fixed
 | 
						|
 | 
						|
}
 |