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

📄 keymap.cgi

📁 w3m浏览器源代码
💻 CGI
字号:
#!/usr/local/bin/perl$QUERY = $ENV{'QUERY_STRING'};$KEYMAP = "$ENV{'HOME'}/.w3m/keymap";if ($QUERY) {	# &write_keymap($QUERY);	print <<EOF;Content-Type: text/htmlw3m-control: DELETE_PREVBUFw3m-control: BACKEOF	exit;}&init_func();@key = ();@func = ();@data = ();open(KEYMAP, $KEYMAP);while (<KEYMAP>) {	s/^keymap\s+// || next;	(($k, $_) = &getQWord($_)) || next;	(($f, $_) = &getWord($_)) || next;	$FUNC_EXIST{$f} || next;	($d, $_) = &getQWord($_);	push(@key, $k);	push(@func, $f);	push(@data, $d);}close(KEYMAP);$N = @key;print <<EOF;Content-Type: text/html<head><title>Keymap Setting</title></head><h1>Keymap Setting</h1><form action="file:///\$LIB/keymap.cgi"><table><tr><td>&nbsp;Key<td>&nbsp;Command<td>&nbsp;Argument<tr><td><input name=k_$N size=6><td><select name=f_$N>EOF&print_func();print <<EOF;</select><td><input name=d_$N><td><input type=submit name=ok value=Ok><tr><td colspan=4><hr>EOF$i = 0;while(@key) {	$k = &Q(shift @key);	$f = shift @func;	$d = &Q(shift @data);	print <<EOF;<tr><td><input type=hidden name=k_$i value=\"$k\">&nbsp;$k<td><select name=f_$i>EOF	&print_func($f);	print <<EOF;</select><td><input name=d_$i value=\"$d\"><td><input type=checkbox name=del_$i>DeleteEOF	$i++;}print <<EOF;</table></form>EOFsub write_keymap {	local($query) = @_;	@key = ();	@func = ();	@data = ();	for $q (split('&', $query)) {		($_, $d) = split('=', $q);		if (s/^k_//) {			$key[$_] = $d;		} elsif (s/^f_//) {			$func[$_] = $d;		} elsif (s/^d_//) {			$data[$_] = $d;		} elsif (s/^del_//) {			$del[$_] = 1;		}	}	open(KEYMAP, "> ${KEYMAP}") || next;	while(@key) {		$k = &UQ(shift @key);		$f = shift @func;		$d = &UQ(shift @data);		($f =~ /^\w/) || next;		(shift @del) && next;		print KEYMAP "keymap\t$k\t$f";		if ($d ne '') {			if ($d =~ /[\"\'\\\s]/) {				$d =~ s/([\"\\])/\\$1/g;				print KEYMAP "\t\t\"$d\"";			} else {				$d =~ s/([\"\\])/\\$1/g;				print KEYMAP "\t\t$d";			}		}		print KEYMAP "\n";	}	close(KEYMAP);}sub UQ {	local($_) = @_;	s/\+/ /g;	s/%([\da-f][\da-f])/pack('c', hex($1))/egi;	return $_;}sub Q {	local($_) = @_;	s/\&/\&amp;/g;	s/\</\&lt;/g;	s/\>/\&gt;/g;	s/\"/\&quot;/g;	return $_;}sub getQWord {	local($_) = @_;	local($x) = '';	s/^\s+//;	while($_ ne '') {		if (s/^\'(([^\'\\]|\\.)*)\'// ||		    s/^\"(([^\"\\]|\\.)*)\"// ||		    s/^([^\'\"\\\s]+)// || s/^\\(.)//) {			$x .= $1;		} else {			last;		}	}	return ($x, $_);}sub getWord {	local($_) = @_;	s/^\s+//;	s/^(\S+)// || return ();	return ($1, $_);}sub print_func {	local($f) = @_;	for(@FUNC_LIST) {		if ($f eq $_) {			print "<option selected>$_\n";		} else {			print "<option>$_\n";		}	}}sub init_func {	@FUNC_LIST = ();	%FUNC_EXIST = ();	while(<DATA>) {		chop;		push(@FUNC_LIST, $_);		$FUNC_EXIST{$_} = 1;	}}__END__- - - - - - - ABORTADD_BOOKMARKBACKBEGINBOOKMARKCENTER_HCENTER_VCOOKIEDELETE_PREVBUFDICT_WORDDICT_WORD_ATDOWNDOWNLOADEDITEDIT_SCREENENDESCBMAPESCMAPEXEC_SHELLEXITEXTERNEXTERN_LINKFRAMEGOTOGOTO_LINEGOTO_LINKHELPHISTORYINFOINIT_MAILCAPINTERRUPTLEFTLINE_BEGINLINE_ENDLINE_INFOLINK_BEGINLINK_ENDLOADMAIN_MENUMARKMARK_MIDMARK_URLMENUMOUSEMOUSE_TOGGLEMOVE_DOWNMOVE_LEFTMOVE_RIGHTMOVE_UP	NEXT_LINKNEXT_MARKNEXT_PAGENEXT_WORDNOTHINGNULLOPTIONSPCMAPPEEKPEEK_LINKPIPE_SHELLPREV_LINKPREV_MARKPREV_PAGEPREV_WORDPRINTQUITREAD_SHELLREDRAWREG_MARKRELOADRIGHTSAVESAVE_IMAGESAVE_LINKSAVE_SCREENSEARCHSEARCH_BACKSEARCH_FORESEARCH_NEXTSEARCH_PREVSELECTSHELLSHIFT_LEFTSHIFT_RIGHTSOURCESUSPENDUPVIEWVIEW_BOOKMARKVIEW_IMAGEWHEREIS	WRAP_TOGGLE

⌨️ 快捷键说明

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