186
scripts/w3mhelp.cgi.in
Normal file
186
scripts/w3mhelp.cgi.in
Normal file
@@ -0,0 +1,186 @@
|
||||
#!@PERL@
|
||||
# $Id: w3mhelp.cgi.in,v 1.1 2001/11/30 16:48:19 ukai Exp $
|
||||
|
||||
$helpdir="@HELP_DIR@";
|
||||
unshift(@INC, $helpdir);
|
||||
@docdirs=qw(@DOCDIRS@);
|
||||
|
||||
require "w3mhelp-funcname.pl";
|
||||
require "w3mhelp-funcdesc.en.pl";
|
||||
$lang = 'en';
|
||||
|
||||
%htmlesc = qw(< < > > & &);
|
||||
|
||||
$keymap = "$ENV{'HOME'}/.w3m/keymap";
|
||||
$version = '*unknown*';
|
||||
if (defined($ENV{'QUERY_STRING'})) {
|
||||
print "QUERY_STRING=$ENV{'QUERY_STRING'}\n";
|
||||
if ($ENV{'QUERY_STRING'} =~ /(^|&)version=([^&]*)/) {
|
||||
$version = $2;
|
||||
$version =~ s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('C', hex($1))/ge;
|
||||
$version =~ s/w3m\///;
|
||||
}
|
||||
if ($ENV{'QUERY_STRING'} =~ /(^|&)lang=([^&]*)/) {
|
||||
local $tlang=$2;
|
||||
$tlang =~ s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('C', hex($1))/ge;
|
||||
$tlang =~ tr/A-Z/a-z/;
|
||||
print "tlang=$tlang\n";
|
||||
eval qq{require "w3mhelp-funcdesc.$tlang.pl"};
|
||||
if (defined(%funcdesc)) {
|
||||
$lang = $tlang;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (-f $keymap) {
|
||||
open(KEYMAP, $keymap) or die "cannot open keymap: $keymap, $!";
|
||||
&load_keymap(*KEYMAP, $func);
|
||||
close(KEYMAP);
|
||||
}
|
||||
|
||||
local (%funckeydesc, $key, $fname, $desc);
|
||||
|
||||
while (($fname, $desc) = each %funcdesc) {
|
||||
$funckeydesc{$funcname{$fname}} = "$desc\n";
|
||||
}
|
||||
while (($key, $fname) = each %keyfunc) {
|
||||
$funckeydesc{$funcname{$fname}} .= "$key,";
|
||||
}
|
||||
|
||||
print <<HEADING;
|
||||
Content-Type: text/html
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>w3m help page</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER>
|
||||
*******
|
||||
<A HREF="http://w3m.sourceforge.net/">w3m</A>
|
||||
(WWW-wo-Miru) Version $version by
|
||||
<A HREF="mailto:aito\@fw.ipsj.or.jp">A.ITO</A> ********<BR>
|
||||
***** Key assign table *****
|
||||
</CENTER>
|
||||
|
||||
HEADING
|
||||
|
||||
$q_version = $version;
|
||||
$q_version =~ s/[^A-Za-z0-9_\$\.\-]/sprintf('%%%02X', ord($&))/ge;
|
||||
$script = "<A HREF=\"$ENV{'SCRIPT_NAME'}?version=$q_version&lang=";
|
||||
|
||||
# doc:en_English doc-jp:ja_Japanese
|
||||
for $otherlang (@docdirs) {
|
||||
local(@d) = split(/[:_]/, $otherlang);
|
||||
|
||||
if ($d[1] ne $lang) {
|
||||
$d[1] =~ s/[^A-Za-z0-9_\$\.\-]/sprintf('%%%02X', ord($&))/ge;
|
||||
print $script, $d[1], "\">$d[2] version</A><BR>\n";
|
||||
}
|
||||
}
|
||||
|
||||
&show_keymap("Page/Cursor motion",
|
||||
qw(pgFore pgBack movR movL movD movU lup1 ldown1
|
||||
goLineF goLineL movRW movLW shiftl shiftr
|
||||
col1R col1L goLine ctrCsrH ctrCsrV
|
||||
topA lastA nextA prevA
|
||||
nextL nextLU nextR nextRD nextD nextU));
|
||||
|
||||
&show_keymap("Hyperlink operation",
|
||||
qw(followA svA peekURL peekIMG followI svI
|
||||
chkURL chkNMID curURL pginfo curlno ldHist
|
||||
rFrame extbrz linkbrz));
|
||||
|
||||
&show_keymap("File/Stream operation",
|
||||
qw(goURL ldfile readsh pipesh));
|
||||
|
||||
&show_keymap("Buffer operation",
|
||||
qw(backBf vwSrc selMn editBf rdrwSc reload
|
||||
svBuf svSrc editScr));
|
||||
|
||||
print <<PAGE;
|
||||
<H2>Buffer selection mode</H2>
|
||||
<table cellpadding=0>
|
||||
<TR><TD WIDTH=140>k, C-p<TD>Select previous buffer
|
||||
<TR><TD>j, C-n<TD>Select next buffer
|
||||
<TR><TD>D<TD>Delete current buffer
|
||||
<TR><TD>RET<TD>Go to the selected buffer
|
||||
</table>
|
||||
PAGE
|
||||
|
||||
&show_keymap("Bookmark operation",
|
||||
qw(ldBmark adBmark));
|
||||
|
||||
&show_keymap("Search",
|
||||
qw(srchfor srchbak srchnxt srchprv));
|
||||
|
||||
&show_keymap("Dictionary look-up",
|
||||
qw(dictword dictwordat));
|
||||
|
||||
&show_keymap("Mark operation",
|
||||
qw(_mark prevMk nextMk reMark));
|
||||
|
||||
&show_keymap("Miscellany",
|
||||
qw(setAlarm execsh ldhelp ldOpt cooLst susp qquitfm quitfm));
|
||||
|
||||
print <<PAGE;
|
||||
<H2>Line-edit mode</H2>
|
||||
<table cellpadding=0>
|
||||
<TR><TD WIDTH=140>C-f<TD>Move cursor forward
|
||||
<TR><TD>C-b<TD>Move cursor backward
|
||||
<TR><TD>C-h<TD>Delete previous character
|
||||
<TR><TD>C-d<TD>Delete current character
|
||||
<TR><TD>C-k<TD>Kill everything after cursor
|
||||
<TR><TD>C-u<TD>Kill everything before cursor
|
||||
<TR><TD>C-a<TD>Move to the top of line
|
||||
<TR><TD>C-e<TD>Move to the bottom of line
|
||||
<TR><TD>C-p<TD>Fetch the previous string from the history list
|
||||
<TR><TD>C-n<TD>Fetch the next string from the history list
|
||||
<TR><TD>TAB,SPC<TD>Complete filename
|
||||
<TR><TD>RETURN<TD>Accept
|
||||
</table>
|
||||
<HR>
|
||||
</BODY>
|
||||
</HTML>
|
||||
PAGE
|
||||
|
||||
exit 0;
|
||||
|
||||
sub load_keymap {
|
||||
local(*FH) = shift;
|
||||
my ($func) = @_;
|
||||
|
||||
while (<FH>) {
|
||||
next if /^#/;
|
||||
next if /^\s*$/;
|
||||
($keymap, $key, $fname) = split;
|
||||
next unless $keymap =~ /keymap/;
|
||||
$fname =~ tr/a-z/A-Z/;
|
||||
next unless (defined($funcdesc{$fname}));
|
||||
$key =~ s/^\\//;
|
||||
$keyfunc{$key} = $fname;
|
||||
}
|
||||
}
|
||||
|
||||
sub show_keymap {
|
||||
my ($head, @list) = @_;
|
||||
my ($fid);
|
||||
my ($attr) = " WIDTH=140";
|
||||
|
||||
print <<PAGE;
|
||||
<H2>$head</H2>
|
||||
<table cellpadding=0>
|
||||
PAGE
|
||||
foreach $fid (@list) {
|
||||
local ($desc, $keys) = split("\n", $funckeydesc{$fid}, 2);
|
||||
$keys =~ s/,$//;
|
||||
$keys = '<NOT ASSIGNED>' if ($keys eq '');
|
||||
$keys =~ s/[<>&]/$htmlesc{$&}/ge;
|
||||
$desc =~ s/[<>&]/$htmlesc{$&}/ge;
|
||||
print <<PAGE;
|
||||
<TR><TD$attr>$keys</TD><TD>$desc</TD></TR>
|
||||
PAGE
|
||||
$attr = "";
|
||||
}
|
||||
print "</table>\n";
|
||||
}
|
Reference in New Issue
Block a user