⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readline.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
📖 第 1 页 / 共 5 页
字号:
##   $rl_margin -- scroll by moving to within this far from a margin.##   $rl_CLEAR -- what to output to clear the screen.##   $rl_max_numeric_arg -- maximum numeric arg allowed.##   $rl_vi_replace_default_on_insert##     Normally, the text you enter is added to any default text passed to##     readline.  If this variable is true, default text will start out ##     highlighted (if supported by your terminal) and text entered while the ##     default is highlighted (during the _first_ insert mode only) will ##     replace the entire default line.  Once you have left insert mode (hit ##     escape), everything works as normal.  ##     - This is similar to many GUI controls' behavior, which select the ##       default text so that new text replaces the old.##     - Use with $rl_start_default_at_beginning for normal-looking behavior##       (though it works just fine without it).##     Notes/Bugs: ##     - Control characters (like C-w) do not actually terminate this replace##       mode, for the same reason it does not work in emacs mode.##     - Spine-crawlingly scary subroutine redefinitions##   $rl_mark - start of the region##   $line_rl_mark - the line on which $rl_mark is active##   $_rl_japanese_mb - For character movement suppose Japanese (which?!)##     multi-byte encoding.  (How to make a sane default?)##sub get_window_size{    my $sig = shift;    my ($num_cols,$num_rows);    if (defined $term_readkey) {	 ($num_cols,$num_rows) =  Term::ReadKey::GetTerminalSize($term_OUT);	 $rl_screen_width = $num_cols - $rl_correct_sw	   if defined($num_cols) && $num_cols;    } elsif (defined $TIOCGWINSZ and &ioctl($term_IN,$TIOCGWINSZ,$winsz)) {	 ($num_rows,$num_cols) = unpack($winsz_t,$winsz);	 $rl_screen_width = $num_cols - $rl_correct_sw	   if defined($num_cols) && $num_cols;    }    $rl_margin = int($rl_screen_width/3);    if (defined $sig) {	$force_redraw = 1;	&redisplay();    }    for $hook (@winchhooks) {      eval {&$hook()}; warn $@ if $@ and $^W;    }    local $^W = 0;		# WINCH may be illegal...    $SIG{'WINCH'} = "readline::get_window_size";}# Fix: case-sensitivity of inputrc on/off keywords in#      `set' commands. readline lib doesn't care about case.# changed case of keys 'On' and 'Off' to 'on' and 'off'# &rl_set changed so that it converts the value to# lower case before hash lookup.sub preinit{    ## Set up the input and output handles    $term_IN = \*STDIN unless defined $term_IN;    $term_OUT = \*STDOUT unless defined $term_OUT;    ## not yet supported... always on.    $var_HorizontalScrollMode = 1;    $var_HorizontalScrollMode{'On'} = 1;    $var_HorizontalScrollMode{'Off'} = 0;    $var_EditingMode{'emacs'}    = *emacs_keymap;    $var_EditingMode{'vi'}       = *vi_keymap;    $var_EditingMode{'vicmd'}    = *vicmd_keymap;    $var_EditingMode{'vipos'}    = *vipos_keymap;    $var_EditingMode{'visearch'} = *visearch_keymap;    ## this is an addition. Very nice.    $var_TcshCompleteMode = 0;    $var_TcshCompleteMode{'On'} = 1;    $var_TcshCompleteMode{'Off'} = 0;    $var_CompleteAddsuffix = 1;    $var_CompleteAddsuffix{'On'} = 1;    $var_CompleteAddsuffix{'Off'} = 0;    $var_DeleteSelection = $var_DeleteSelection{'On'} = 1;    $var_DeleteSelection{'Off'} = 0;    *rl_delete_selection = \$var_DeleteSelection; # Alias    ## not yet supported... always on    for ('InputMeta', 'OutputMeta') {	${"var_$_"} = 1;	${"var_$_"}{'Off'} = 0;	${"var_$_"}{'On'} = 1;    }    ## not yet supported... always off    for ('ConvertMeta', 'MetaFlag', 'MarkModifiedLines', 'PreferVisibleBell',	 'BlinkMatchingParen', 'VisibleStats', 'ShowAllIfAmbiguous',	 'PrintCompletionsHorizontally', 'MarkDirectories', 'ExpandTilde',	 'EnableKeypad', 'DisableCompletion', 'CompletionIgnoreCase') {	${"var_$_"} = 0;	${"var_$_"}{'Off'} = 0;	${"var_$_"}{'On'} = 1;    }    # To conform to interface    $minlength = 1 unless defined $minlength;    # WINCH hooks    @winchhooks = ();    $inDOS = $^O eq 'os2' || defined $ENV{OS2_SHELL} unless defined $inDOS;    eval {      require Term::ReadKey; $term_readkey++;    } unless defined $ENV{PERL_RL_USE_TRK}	     and not $ENV{PERL_RL_USE_TRK};    unless ($term_readkey) {      eval {require "ioctl.pl"}; ## try to get, don't die if not found.      eval {require "sys/ioctl.ph"}; ## try to get, don't die if not found.      eval {require "sgtty.ph"}; ## try to get, don't die if not found.      if ($inDOS and !defined $TIOCGWINSZ) {	  $TIOCGWINSZ=0;	  $TIOCGETP=1;	  $TIOCSETP=2;	  $sgttyb_t="I5 C8";	  $winsz_t="";	  $RAW=0xf002;	  $ECHO=0x0008;      }      $TIOCGETP = &TIOCGETP if defined(&TIOCGETP);      $TIOCSETP = &TIOCSETP if defined(&TIOCSETP);      $TIOCGWINSZ = &TIOCGWINSZ if defined(&TIOCGWINSZ);      $FIONREAD = &FIONREAD if defined(&FIONREAD);      $TCGETS = &TCGETS if defined(&TCGETS);      $TCSETS = &TCSETS if defined(&TCSETS);      $TCXONC = &TCXONC if defined(&TCXONC);      $TIOCGETP   = 0x40067408 if !defined($TIOCGETP);      $TIOCSETP   = 0x80067409 if !defined($TIOCSETP);      $TIOCGWINSZ = 0x40087468 if !defined($TIOCGWINSZ);      $FIONREAD   = 0x4004667f if !defined($FIONREAD);      $TCGETS     = 0x40245408 if !defined($TCGETS);      $TCSETS     = 0x80245409 if !defined($TCSETS);      $TCXONC     = 0x20005406 if !defined($TCXONC);      ## TTY modes      $ECHO = &ECHO if defined(&ECHO);      $RAW = &RAW if defined(&RAW);      $RAW	= 040 if !defined($RAW);      $ECHO	= 010 if !defined($ECHO);      #$CBREAK    = 002 if !defined($CBREAK);      $mode = $RAW; ## could choose CBREAK for testing....      $IGNBRK     = 1 if !defined($IGNBRK);      $BRKINT     = 2 if !defined($BRKINT);      $ISTRIP     = 040 if !defined($ISTRIP);      $INLCR      = 0100 if !defined($INLCR);      $IGNCR      = 0200 if !defined($IGNCR);      $ICRNL      = 0400 if !defined($ICRNL);      $OPOST      = 1 if !defined($OPOST);      $ISIG       = 1 if !defined($ISIG);      $ICANON     = 2 if !defined($ICANON);      $TCOON      = 1 if !defined($TCOON);      $TERMIOS_READLINE_ION = $BRKINT;      $TERMIOS_READLINE_IOFF = $IGNBRK | $ISTRIP | $INLCR | $IGNCR | $ICRNL;      $TERMIOS_READLINE_OON = 0;      $TERMIOS_READLINE_OOFF = $OPOST;      $TERMIOS_READLINE_LON = 0;      $TERMIOS_READLINE_LOFF = $ISIG | $ICANON | $ECHO;      $TERMIOS_NORMAL_ION = $BRKINT;      $TERMIOS_NORMAL_IOFF = $IGNBRK;      $TERMIOS_NORMAL_OON = $OPOST;      $TERMIOS_NORMAL_OOFF = 0;      $TERMIOS_NORMAL_LON = $ISIG | $ICANON | $ECHO;      $TERMIOS_NORMAL_LOFF = 0;      #$sgttyb_t   = 'C4 S';      #$winsz_t = "S S S S";  # rows,cols, xpixel, ypixel      $sgttyb_t   = 'C4 S' if !defined($sgttyb_t);      $winsz_t = "S S S S" if !defined($winsz_t);        # rows,cols, xpixel, ypixel      $winsz = pack($winsz_t,0,0,0,0);      $fionread_t = "L";      $fion = pack($fionread_t, 0);      $NCCS = 17;      $termios_t = "LLLLc" . ("c" x $NCCS);  # true for SunOS 4.1.3, at least...      $termios = ''; ## just to shut up "perl -w".      $termios = pack($termios, 0);  # who cares, just make it long enough      $TERMIOS_IFLAG = 0;      $TERMIOS_OFLAG = 1;      $TERMIOS_CFLAG = 2;      $TERMIOS_LFLAG = 3;      $TERMIOS_VMIN = 5 + 4;      $TERMIOS_VTIME = 5 + 5;    }    $rl_delete_selection = 1;    $rl_correct_sw = ($inDOS ? 1 : 0);    $rl_scroll_nextline = 1 unless defined $rl_scroll_nextline;    $rl_last_pos_can_backspace = ($inDOS ? 0 : 1) # Can backspace when the       unless defined $rl_last_pos_can_backspace;  # whole line is filled?    $rl_start_default_at_beginning = 0;    $rl_vi_replace_default_on_insert = 0;    $rl_screen_width = 79; ## default    $rl_completion_function = "rl_filename_list"	unless defined($rl_completion_function);    $rl_basic_word_break_characters = "\\\t\n' \"`\@\$><=;|&{(";    $rl_completer_word_break_characters = $rl_basic_word_break_characters;    $rl_special_prefixes = '';    ($rl_readline_name = $0) =~ s#.*[/\\]## if !defined($rl_readline_name);    @rl_History=() if !(@rl_History);    $rl_MaxHistorySize = 100 if !defined($rl_MaxHistorySize);    $rl_max_numeric_arg = 200 if !defined($rl_max_numeric_arg);    $rl_OperateCount = 0 if !defined($rl_OperateCount);    $rl_term_set = \@Term::ReadLine::TermCap::rl_term_set;    @$rl_term_set or $rl_term_set = ["","","",""];    $InsertMode=1;    $KillBuffer='';    $line='';    $D = 0;    $InputLocMsg = ' [initialization]';    &InitKeymap(*emacs_keymap, 'SelfInsert', 'emacs_keymap',		($inDOS ? () : ('C-@',	'SetMark') ),		'C-a',	'BeginningOfLine',		'C-b',	'BackwardChar',		'C-c',	'Interrupt',		'C-d',	'DeleteChar',		'C-e',	'EndOfLine',		'C-f',	'ForwardChar',		'C-g',	'Abort',		'M-C-g',	'Abort',		'C-h',	'BackwardDeleteChar',		"TAB" ,	'Complete',		"C-j" ,	'AcceptLine',		'C-k',	'KillLine',		'C-l',	'ClearScreen',		"C-m" ,	'AcceptLine',		'C-n',	'NextHistory',		'C-o',  'OperateAndGetNext',		'C-p',	'PreviousHistory',		'C-q',	'QuotedInsert',		'C-r',	'ReverseSearchHistory',		'C-s',	'ForwardSearchHistory',		'C-t',	'TransposeChars',		'C-u',	'UnixLineDiscard',		##'C-v',	'QuotedInsert',		'C-v',	'HistorySearchForward',		'C-w',	'UnixWordRubout',		qq/"\cX\cX"/,	'ExchangePointAndMark',		qq/"\cX\cR"/,	'ReReadInitFile',		qq/"\cX?"/,	'PossibleCompletions',		qq/"\cX*"/,	'InsertPossibleCompletions',		qq/"\cX\cU"/,	'Undo',		qq/"\cXu"/,	'Undo',		qq/"\cX\cW"/,	'KillRegion',		qq/"\cXw"/,	'CopyRegionAsKill',		qq/"\cX\ec\\*"/,	'DoControlVersion',		qq/"\cX\ec\0"/,	'SetMark',		qq/"\cX\ec\@"/,	'SetMark',		qq/"\cX\ec "/,	'SetMark',		qq/"\cX\em\\*"/,	'DoMetaVersion',		qq/"\cX\@c\\*"/,	'DoControlVersion',		qq/"\cX\@c\0"/,	'SetMark',		qq/"\cX\@c\@"/,	'SetMark',		qq/"\cX\@c "/,	'SetMark',		qq/"\cX\@m\\*"/,	'DoMetaVersion',		'C-y',	'Yank',		'C-z',	'Suspend',		'C-\\',	'Ding',		'C-^',	'Ding',		'C-_',	'Undo',		'DEL',	($inDOS ?			 'BackwardKillWord' : # <Control>+<Backspace>			 'BackwardDeleteChar'			),		'M-<',	'BeginningOfHistory',		'M->',	'EndOfHistory',		'M-DEL',	'BackwardKillWord',		'M-C-h',	'BackwardKillWord',		'M-C-j',	'ViInput',		'M-C-v',	'QuotedInsert',		'M-b',	'BackwardWord',		'M-c',	'CapitalizeWord',		'M-d',	'KillWord',		'M-f',	'ForwardWord',		'M-h',	'PrintHistory',		'M-l',	'DownCaseWord',		'M-r',	'RevertLine',		'M-t',	'TransposeWords',		'M-u',	'UpcaseWord',		'M-v',	'HistorySearchBackward',		'M-y',	'YankPop',		"M-?",	'PossibleCompletions',		"M-TAB",	'TabInsert',		'M-#',	'SaveLine',		qq/"\e[A"/,  'previous-history',		qq/"\e[B"/,  'next-history',		qq/"\e[C"/,  'forward-char',		qq/"\e[D"/,  'backward-char',		qq/"\eOA"/,  'previous-history',		qq/"\eOB"/,  'next-history',		qq/"\eOC"/,  'forward-char',		qq/"\eOD"/,  'backward-char',		qq/"\eOy"/,  'HistorySearchBackward',	# vt: PageUp		qq/"\eOs"/,  'HistorySearchForward',	# vt: PageDown		qq/"\e[[A"/,  'previous-history',		qq/"\e[[B"/,  'next-history',		qq/"\e[[C"/,  'forward-char',		qq/"\e[[D"/,  'backward-char',		qq/"\e[2~"/,   'ToggleInsertMode', # X: <Insert>		# Mods: 1 + bitmask: 1 Shift, 2 Alt, 4 Control, 8 (sometimes) Meta		qq/"\e[2;2~"/,  'YankClipboard',    # <Shift>+<Insert>		qq/"\e[3;2~"/,  'KillRegionClipboard',    # <Shift>+<Delete>		#qq/"\0\16"/, 'Undo', # <Alt>+<Backspace>		qq/"\eO5D"/, 'BackwardWord', # <Ctrl>+<Left arrow>		qq/"\eO5C"/, 'ForwardWord', # <Ctrl>+<Right arrow>		qq/"\e[5D"/, 'BackwardWord', # <Ctrl>+<Left arrow>		qq/"\e[5C"/, 'ForwardWord', # <Ctrl>+<Right arrow>		qq/"\eO5F"/, 'KillLine', # <Ctrl>+<End>		qq/"\e[5F"/, 'KillLine', # <Ctrl>+<End>		qq/"\e[4;5~"/, 'KillLine', # <Ctrl>+<End>		qq/"\eO5s"/, 'EndOfHistory', # <Ctrl>+<Page Down>		qq/"\e[6;5~"/, 'EndOfHistory', # <Ctrl>+<Page Down>		qq/"\e[5H"/, 'BackwardKillLine', # <Ctrl>+<Home>		qq/"\eO5H"/, 'BackwardKillLine', # <Ctrl>+<Home>		qq/"\e[1;5~"/, 'BackwardKillLine', # <Ctrl>+<Home>		qq/"\eO5y"/, 'BeginningOfHistory', # <Ctrl>+<Page Up>		qq/"\e[5;5y"/, 'BeginningOfHistory', # <Ctrl>+<Page Up>		qq/"\e[2;5~"/, 'CopyRegionAsKillClipboard', # <Ctrl>+<Insert>		qq/"\e[3;5~"/, 'KillWord', # <Ctrl>+<Delete>		# XTerm mouse editing (f202/f203 not in mainstream yet):		# Paste may be:         move f200 STRING f201		# or		   f202 move f200 STRING f201 f203;		# and Cut may be   f202 move delete f203		qq/"\e[200~"/, 'BeginPasteGroup', # Pre-paste		qq/"\e[201~"/, 'EndPasteGroup', # Post-paste		qq/"\e[202~"/, 'BeginEditGroup', # Pre-edit		qq/"\e[203~"/, 'EndEditGroup', # Post-edit		# OSX xterm:		# OSX xterm: home \eOH end \eOF delete \e[3~ help \e[28~ f13 \e[25~		# gray- \eOm gray+ \eOk gray-enter \eOM gray* \eOj gray/ \eOo gray= \eO		# grayClear \e\e.		qq/"\eOH"/,   'BeginningOfLine',        # home		qq/"\eOF"/,   'EndOfLine',        	# end		# HP xterm		#qq/"\e[A"/,   'PreviousHistory',	# up    arrow		#qq/"\e[B"/,   'NextHistory',		# down  arrow		#qq/"\e[C"/,   'ForwardChar',		# right arrow		#qq/"\e[D"/,   'BackwardChar',		# left  arrow		qq/"\e[H"/,   'BeginningOfLine',        # home		#'C-k',        'KillLine',		# clear display		qq/"\e[5~"/,  'HistorySearchBackward',	# prev		qq/"\e[6~"/,  'HistorySearchForward',	# next		qq/"\e[\0"/,  'BeginningOfLine',	# home		# These contradict:		($^O =~ /^hp\W?ux/i ? (		  qq/"\e[1~"/,  'HistorySearchForward',   # find		  qq/"\e[3~"/,  'ToggleInsertMode',	# insert char		  qq/"\e[4~"/,  'ToggleInsertMode',	# select		 ) : (		# "Normal" xterm		  qq/"\e[1~"/,  'BeginningOfLine',	# home		  qq/"\e[3~"/,  'DeleteChar',		# delete		  qq/"\e[4~"/,  'EndOfLine',	# end		)),		# hpterm		(($ENV{'TERM'} and $ENV{'TERM'} eq 'hpterm') ?		 (		  qq/"\eA"/,    'PreviousHistory',     # up    arrow		  qq/"\eB"/,    'NextHistory',	       # down  arrow

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -