Hello Tatsuya,

Tatsuya Kinoshita schrieb am  2. April 2016 um 00:47

> On October 17, 2014 at 12:19PM +0200, markus.hiereth (at freenet.de) wrote:

> > In contrast, the help-dialogue still brings English explanations to
> > the keybindings. This dialogue is created dynamically. It is not
> > clear. what files of the source package and of the binary package are
> > involved.
 
> Though not gettextized, I've added support for German translated
> help messages in the development repo.
> 
> Please translate these files:
 
> https://anonscm.debian.org/cgit/collab-maint/w3m.git/plain/doc-de/README.func
> https://anonscm.debian.org/cgit/collab-maint/w3m.git/plain/scripts/w3mhelp-funcdesc.de.pl.in

attached to this mail, You get

1. revised files in English

README.func
w3mhelp.cgi.in
w3mhelp-funcdesc.en.pl.in

2. files translated into German

README.func
w3mhelp_de.cgi.in
w3mhelp-funcdesc.de.pl.in

Best regards
Markus
ABORT           Quit w3m at once
ACCESSKEY       Pop up accesskey menu
ADD_BOOKMARK    Add current page to bookmarks
ALARM           Set alarm
BACK            Close current buffer and return to the one below in stack
BEGIN           Go to the first line
BOOKMARK        View bookmarks
CENTER_H        Center on cursor column
CENTER_V        Center on cursor line
CHARSET         Change the character encoding for the current document
CLOSE_TAB       Close tab
CLOSE_TAB_MOUSE Close tab at mouse pointer
COMMAND         Invoke w3m function(s)
COOKIE          View cookie list
DEFAULT_CHARSET Change the default character encoding
DEFINE_KEY      Define a binding between a key stroke combination and a command
DELETE_PREVBUF  Delete previous buffer (mainly for local CGI-scripts)
DICT_WORD       Execute dictionary command (see README.dict)
DICT_WORD_AT    Execute dictionary command for word at cursor
DISPLAY_IMAGE   Restart loading and drawing of images
DOWN            Scroll the screen down one line
DOWNLOAD        Save document source
DOWNLOAD_LIST   Display downloads panel
EDIT            Edit local source
EDIT_SCREEN     Edit rendered copy of document
END             Go to the last line
EXEC_SHELL      Execute shell command and display output
EXIT            Quit at once
EXTERN          Display using an external browser
EXTERN_LINK     Display target using an external browser
FRAME           Toggle rendering HTML frames
GOTO            Open specified document in a new buffer
GOTO_LINE       Go to the specified line
GOTO_LINK       Follow current hyperlink in a new buffer
GOTO_RELATIVE   Go to relative address
HELP            Show help panel
HISTORY         Show browsing history
INFO            Display information about the current document
INTERRUPT       Suspend w3m to background
ISEARCH         Incremental search forward
ISEARCH_BACK    Incremental search backward
LEFT            Shift screen one column left
LINE_BEGIN      Go to the beginning of the line
LINE_END        Go to the end of the line
LINE_INFO       Display current position in document
LINK_BEGIN      Move to the first hyperlink
LINK_END        Move to the last hyperlink
LINK_MENU       Pop up link element menu
LIST            Show all URLs referenced
LIST_MENU       Pop up menu for hyperlinks to browse to
LOAD            Open local file in a new buffer
MAIN_MENU       Pop up menu
MARK            Set/unset mark
MARK_MID        Turn Message-ID-like strings into hyperlinks
MARK_URL        Turn URL-like strings into hyperlinks
MARK_WORD       Turn current word into hyperlink
MENU            Pop up menu
MENU_MOUSE      Pop up menu at mouse pointer
MOUSE_TOGGLE    Toggle mouse support
MOVE_DOWN       Cursor down
MOVE_DOWN1      Cursor down. With edge touched, slide
MOVE_LEFT       Cursor left
MOVE_LEFT1      Cursor left. With edge touched, slide
MOVE_LIST_MENU  Pop up menu to navigate between hyperlinks
MOVE_MOUSE      Move cursor to mouse pointer
MOVE_RIGHT      Cursor right
MOVE_RIGHT1     Cursor right. With edge touched, slide
MOVE_UP         Cursor up
MOVE_UP1        Cursor up. With edge touched, slide
MSGS            Display error messages
NEW_TAB         Open a new tab (with current document) 
NEXT            Switch to the next buffer
NEXT_DOWN       Move downward to the next hyperlink
NEXT_HALF_PAGE  Scroll down half a page
NEXT_LEFT       Move left to the next hyperlink
NEXT_LEFT_UP    Move left or upward to the next hyperlink
NEXT_LINK       Move to the next hyperlink
NEXT_MARK       Go to the next mark
NEXT_PAGE       Scroll down one page
NEXT_RIGHT      Move right to the next hyperlink
NEXT_RIGHT_DOWN Move right or downward to the next hyperlink
NEXT_TAB        Switch to the next tab
NEXT_UP         Move upward to the next hyperlink
NEXT_VISITED    Move to the next visited hyperlink
NEXT_WORD       Move to the next word
NOTHING         Do nothing
NULL            Do nothing
OPTIONS         Display options setting panel
PEEK            Show current address
PEEK_IMG        Show image address
PEEK_LINK       Show target address
PIPE_BUF        Pipe current buffer through a shell command and display output
PIPE_SHELL      Execute shell command and display output
PREV            Switch to the previous buffer
PREV_HALF_PAGE  Scroll up half a page
PREV_LINK       Move to the previous hyperlink
PREV_MARK       Go to the previous mark
PREV_PAGE       Scroll up one page
PREV_TAB        Switch to the previous tab
PREV_VISITED    Move to the previous visited hyperlink
PREV_WORD       Move to the previous word
PRINT           Save rendered document
QUIT            Quit with confirmation request
READ_SHELL      Execute shell command and display output
REDO            Cancel the last undo
REDRAW          Draw the screen anew
REG_MARK        Mark all occurences of a pattern
REINIT          Reload configuration file
RELOAD          Load current document anew
RESHAPE         Re-render document
RIGHT           Shift screen one column right
SAVE            Save document source
SAVE_IMAGE      Save inline image
SAVE_LINK       Save hyperlink target
SAVE_SCREEN     Save rendered document
SEARCH          Search forward
SEARCH_BACK     Search backward
SEARCH_FORE     Search forward
SEARCH_NEXT     Continue search forward
SEARCH_PREV     Continue search backward
SELECT          Display buffer-stack panel
SELECT_MENU     Pop up buffer-stack menu
SETENV          Set environment variable
SET_OPTION      Set option
SHELL           Execute shell command and display output
SHIFT_LEFT      Shift screen left
SHIFT_RIGHT     Shift screen right
SOURCE          Display HTML source
STOP_IMAGE      Stop loading and drawing of images
SUBMIT          Submit form
SUSPEND         Suspend w3m to background
TAB_GOTO        Open specified document in a new tab
TAB_GOTO_RELATIVE       Open relative address in a new tab
TAB_LEFT        Move left along the tab bar
TAB_LINK        Follow current hyperlink in a new tab
TAB_MENU        Pop up tab selection menu
TAB_MOUSE       Select tab by mouse action
TAB_RIGHT       Move right along the tab bar
UNDO            Cancel the last cursor movement
UP              Scroll the screen up one line
VERSION         Display the version of w3m
VIEW            Display HTML source
VIEW_BOOKMARK   View bookmarks
VIEW_IMAGE      Display image in viewer
WHEREIS         Search forward
WRAP_TOGGLE     Toggle wrapping mode in searches
#!@PERL@
# $Id: w3mhelp.cgi.in,v 1.29 2007/05/29 11:50:24 inu Exp $

if ( $^O =~ /^(ms)?(dos|win(32|nt)?)/i ) {
  $CYGPATH = 1;
}

$prefix = "@prefix@";
$datarootdir = "@datarootdir@";
$helpdir = "@HELP_DIR@";
if ($CYGPATH) {
  $helpdir = &cygwin_pathconv($helpdir);
}
unshift(@INC, $helpdir);
@docdirs = split(" ", "@DOCDIRS@");

require "w3mhelp-funcname.pl";
require "w3mhelp-funcdesc.en.pl";
$lang = 'en';
$charset = 'US-ASCII';

%htmlesc = (
    '<', '&lt;',
    '>', '&gt;',
    '&', '&amp;'
);

$RC_DIR = '@RC_DIR@';
$RC_DIR =~ s/^~/$ENV{'HOME'}/;
if ($CYGPATH) {
  $RC_DIR = &cygwin_pathconv("$RC_DIR");
}
$keymap = "$RC_DIR/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/;
        if ($tlang !~ /^[a-z][a-z]$/) {
            $tlang = 'en';
        }
        # print "tlang=$tlang\n";
        eval {require "w3mhelp-funcdesc.$tlang.pl";};
        if (%funcdesc) {
            $lang = $tlang;
        }
    }
}

%f = %keyfunc;
%keyfunc = ();
while (($key, $fname) = each %f) {
        $key = &norm_key($key);
        $keyfunc{$key} = $fname;
}

if (-f $keymap) {
    open(KEYMAP, "< $keymap") || die "cannot open keymap: $keymap, $!";
    &load_keymap(*KEYMAP, $func);
    close(KEYMAP);
}

local (%funckeydesc, $key, $fname, $desc);

%funcname = (%funcname, %buf_funcname, %lineedit_funcname, %menu_funcname);

%funcdesc = (%funcdesc, %buf_funcdesc, %lineedit_funcdesc, %menu_funcdesc);
while (($fname, $desc) = each %funcdesc) {
    $funckeydesc{$funcname{$fname}} = "$fname\n$desc\n";
}

while (($key, $fname) = each %keyfunc) {
    $keydata{$key} && next;
    $funckeydesc{$funcname{$fname}} .= "$key,";
}
while (($key, $fname) = each %buf_keyfunc) {
    $funckeydesc{$funcname{$fname}} .= "$key,";
}
while (($key, $fname) = each %lineedit_keyfunc) {
    $funckeydesc{$funcname{$fname}} .= "$key,";
}
while (($key, $fname) = each %menu_keyfunc) {
    $funckeydesc{$funcname{$fname}} .= "$key,";
}

print <<HEADING;
Content-Type: text/html; charset=$charset

<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> ********
</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&amp;lang=";

# doc:en_English doc-jp:ja_Japanese doc-de:de_German
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]]</A>\n";
    }
}

$keymap =~ s/[<>&]/$htmlesc{$&}/ge;
$head = 'Current keymap file';
if (defined($title{$head})) {
        $head = $title{$head};
        $head =~ s/[<>&]/$htmlesc{$&}/ge;
}
print "<P><A HREF=\"$keymap\">$head</A>\n";

&show_keymap('In-page Navigation', 
             split(" ", "pgFore pgBack movR movL movD movU
                movR1 movL1 movD1 movU1 ldown1 lup1
                shiftl shiftr col1L col1R linbeg linend ctrCsrH ctrCsrV
                goLine goLineF goLineL movRW movLW
                topA lastA nextA prevA movlistMn
                nextR nextL nextD nextU nextRD nextLU
                undoPos redoPos"));

&show_keymap('Hyperlink Operations',
             split(" ", "followA tabA svA followI svI submitForm
                curURL peekURL peekIMG pginfo curlno chkURL chkWORD chkNMID
                rFrame extbrz linkbrz linkLst listMn linkMn accessKey"));

&show_keymap('File/Stream Operations',
             split(" ", "goURL gorURL tabURL tabrURL ldfile readsh pipesh
                pipeBuf"));

&show_keymap('Buffer Operations',
             split(" ", "backBf nextBf prevBf selMn selBuf vwSrc svSrc svBuf
                editBf editScr reload reshape rdrwSc dispI stopI"));

&show_keymap('Tab Operations',
             split(" ", "newT closeT nextT prevT tabMn tabR tabL"));

&show_keymap('Bookmark Management',
             split(" ", "ldBmark adBmark"));

&show_keymap('Searches',
             split(" ", "srchfor srchbak srchnxt srchprv isrchfor isrchbak"));

&show_keymap('Dictionary Lookup',
             split(" ", "dictword dictwordat"));

&show_keymap('Mark Operations',
             split(" ", "_mark nextMk prevMk reMark"));

&show_keymap('Miscellaneous',
             split(" ", "mainMn ldhelp ldOpt dispVer cooLst ldHist ldDL
                docCSet defCSet
                msgs msToggle wrapToggle execCmd setAlarm setOpt setEnv defKey
                reinit execsh susp qquitfm quitfm"));

&show_keymap_data('User-defined key bindings');

print "<BR>\n<HR WIDTH=80%>\n";

&show_keymap('Buffer and Tab Selection Mode',
             split(" ", "buffer_next buffer_prev buffer_delete buffer_go"));

print "<BR>\n<HR WIDTH=80%>\n";

&show_keymap('Input Line Editing Mode',
             split(" ", "lineedit_forward lineedit_back lineedit_backspace 
                lineedit_delete lineedit_kill_after lineedit_kill_before
                lineedit_top lineedit_bottom lineedit_prev lineedit_next
                lineedit_editor lineedit_complete lineedit_accept"));

print "<BR>\n<HR WIDTH=80%>\n";

&show_keymap('Popup Menu Mode',
             split(" ", "menu_select menu_close menu_cancel menu_down menu_up
                menu_line_up menu_line_down menu_top menu_last menu_next
                menu_prev menu_search_fore menu_search_back menu_search_next
                menu_search_prev menu_suspend"));

print <<PAGE;
<HR>
</BODY>
</HTML>
PAGE

exit 0;

sub load_keymap {
    local(*FH) = shift;
    local($func) = @_;

    while (<FH>) {
        /^#/ && next;
        s/^\s*keymap\s+// || next;
        s/^(\"(\\\"|[^\"])+\"|\'(\\\'|[^\'])+\'|\S+)\s+(\S+)\s*// || next;
        ($key, $fname) = ($1, $4);
        $data = $_;
        $fname =~ tr/a-z/A-Z/;
        defined($funcdesc{$fname}) || next;
        $key =~ s/^["'](.*)["']$/$1/;
        $key = &norm_key($key);
        $keyfunc{$key} = $fname;
        if ($data) {
                $keydata{$key} = $data;
        } else {
                delete $keydata{$key};
        }
    }
}

sub norm_key {
    local($_) = @_;

    s/(ESC|SPC|TAB|DEL|UP|DOWN|RIGHT|LEFT)/\U$1/i;
    s/\\(.)/$1/g;
    s/(^|\s+|-)\^(.)/${1}C-$2/g;
    s/(^|\s+|-)(C-\[|M-)/${1}ESC-/g;
    if (/^ESC-\[/) {
        /^ESC-\[A$/ && return "UP";
        /^ESC-\[B$/ && return "DOWN";
        /^ESC-\[C$/ && return "RIGHT";
        /^ESC-\[D$/ && return "LEFT";
    }
    s/(^|\s+|-)ESC-\[/$1\^\[\[/g;
    s/(^|\s+|-)ESC-\^(.)/${1}ESC-C-$2/g;
    s/(^|\s+|-)(ESC-)?C-[iI]/$1${2}TAB/g;
    s/(^|\s+|-)(ESC-)?C-\?/$1${2}DEL/g;
    return $_;
}

sub show_keymap {
    local($head, @list) = @_;
    local($fid);
    local($attr) = " WIDTH=140";

    if (defined($title{$head})) {
        $head = $title{$head};
        $head =~ s/[<>&]/$htmlesc{$&}/ge;
    }

    print <<PAGE;
<H2>$head</H2>
<table cellpadding=0>
PAGE
    foreach $fid (@list) {
        local ($name, $desc, $keys) = split("\n", $funckeydesc{$fid}, 3);
        $keys =~ s/,$//;
        $keys = '<NOT ASSIGNED>' if ($keys eq '');
        $keys =~ s/[<>&]/$htmlesc{$&}/ge;
        if ($name =~ /:/) {
                $name = "";
        } else {
                $name =~ s/[<>&]/$htmlesc{$&}/ge;
                $name = " (<b>$name</b>)";
        }
        $desc =~ s/[<>&]/$htmlesc{$&}/ge;
        print <<PAGE;
<TR><TD$attr>$keys<TD><NOBR>$desc$name</NOBR>
PAGE
        $attr = "";
    }
    print "</table>\n";
}

sub show_keymap_data {
    local($head, @list) = @_;
    local($fid);
    local($attr) = " WIDTH=140";

    if (defined($title{$head})) {
        $head = $title{$head};
        $head =~ s/[<>&]/$htmlesc{$&}/ge;
    }

    print <<PAGE;
<H2>$head</H2>
<table cellpadding=0>
PAGE
    foreach $keys (sort keys %keydata) {
        $keys =~ s/[<>&]/$htmlesc{$&}/ge;
        $name = $keyfunc{$keys};
        $data = $keydata{$keys};
        $name =~ s/[<>&]/$htmlesc{$&}/ge;
        $data =~ s/[<>&]/$htmlesc{$&}/ge;
        print <<PAGE;
<TR><TD$attr>$keys<TD>$name<TD><NOBR>$data</NOBR>
PAGE
        $attr = "";
    }
    print "</table>\n";
}


sub cygwin_pathconv {
  local($_) = @_;
  local(*CYGPATH);

  open(CYGPATH, '-|') || exec('cygpath', '-w', $_);
  $_ = <CYGPATH>;
  close(CYGPATH);
  s/\r?\n$//;
  s!\\!/!g;
  s!/$!!;
  return $_;
}
# charset
$charset = 'US-ASCII';

# Buffer selection mode

%buf_funcdesc = (
 'BUF:PREV', 'Previous item',
 'BUF:NEXT', 'Next item',
 'BUF:DELETE', 'Delete item',
 'BUF:GO', 'Select item',
);

%lineedit_funcdesc = (
 'LINEEDIT:FORWARD', 'Cursor forward',
 'LINEEDIT:BACK', 'Cursor backward',
 'LINEEDIT:BS',  'Delete previous character',
 'LINEEDIT:DEL', 'Delete character',
 'LINEEDIT:KILL_AFTER', 'Delete everything after cursor',
 'LINEEDIT:KILL_BEFORE', 'Delete everything before cursor',
 'LINEEDIT:TOP', 'Cursor to the beginning of the line',
 'LINEEDIT:BOTTOM', 'Cursor to the end of the line',
 'LINEEDIT:PREV', 'Fetch the previous string from the history list',
 'LINEEDIT:NEXT', 'Fetch the next string from the history list',
 'LINEEDIT:EDITOR', 'Edit with external editor',
 'LINEEDIT:COMPLETE', 'Try to complete filename',
 'LINEEDIT:ACCEPT', 'Accept input line',
);

%menu_funcdesc = (
 'MENU:SELECT', 'Select item',
 'MENU:CLOSE', 'Close menu',
 'MENU:CANCEL', 'One selection step backward',
 'MENU:DOWN', 'Move to the next item',
 'MENU:UP', 'Move to the previous item',
 'MENU:LINE_UP', 'Scroll up one item',
 'MENU:LINE_DOWN', 'Scroll down one item',
 'MENU:TOP', 'Move to the first item',
 'MENU:LAST', 'Move to the final item',
 'MENU:NEXT', 'Go to the next page',
 'MENU:PREV', 'Go to the previous page',
 'MENU:SEARCH_FORE', 'Search forward',
 'MENU:SEARCH_BACK', 'Search backward',
 'MENU:SEARCH_NEXT', 'Search for the next match',
 'MENU:SEARCH_PREV', 'Search for the previous match',
 'MENU:SUSPEND', 'Suspend',
);

1;
ABORT           w3m sofort beenden
ACCESSKEY       Öffne Zugangstasten-Menü
ADD_BOOKMARK    Lege für aktuelle Seite Lesezeichen an
ALARM           Alarm einrichten
BACK            Schließe aktuellen Puffer und kehre zu dem im Stapel 
darunterliegenden zurück
BEGIN           Gehe zur ersten Zeile
BOOKMARK        Lesezeichen ansehen
CENTER_H        Um Cursor herum horizontal zentrieren
CENTER_V        Um Cursor herum vertikal zentrieren
CHARSET         Ändere die Zeichenkodierung für das aktuelle Dokument
CLOSE_TAB       Schließe Reiter
CLOSE_TAB_MOUSE Schließe Reiter bei Mauszeiger
COMMAND         Rufe w3m Funktion(en) auf
COOKIE          Cookie-Liste ansehen
DEFAULT_CHARSET Ändere die Voreinstellung für die Zeichenkodierung
DEFINE_KEY      Definiere eine Verbindung zwischen einer Tastenkombination und 
einem Kommando
DELETE_PREVBUF  Lösche vorherigen Puffer (hauptsächlich für lokale CGI-Skripte)
DICT_WORD       Führe eine Wörterbuch-Funktion aus (siehe README.dict)
DICT_WORD_AT    Benutze Wörterbuch für Wort unter Curser
DISPLAY_IMAGE   Starte das Laden und die Erstellung von Bildern erneut
DOWN            Scrolle den Anzeigebereich eine Zeile abwärts
DOWNLOAD        Dokument-Quellcode speichern 
DOWNLOAD_LIST   Die Übersicht heruntergeladener Dateien zeigen
EDIT            Bearbeite lokales Quelldokument
EDIT_SCREEN     Bearbeite eine Kopie des verarbeiteten Dokuments
END             Gehe zur letzten Zeile
EXEC_SHELL      Führe Shell-Kommando aus und zeige Ausgabe an
EXIT            Sofort beenden
EXTERN          Verwende externen Browser zur Anzeige
EXTERN_LINK     Verwende externen Browser zur Anzeige des Linkziels
FRAME           Wechsle zwischen Kennung und Umsetzung von HTML-Frames
GOTO            Öffne angegebenes Dokument in neuem Puffer
GOTO_LINE       Gehe zur angebenen Zeile
GOTO_LINK       Folge dem aktuellen Hyperlink in neuem Puffer
GOTO_RELATIVE   Gehe zu relativer Adresse 
HELP            Zeige Hilfe-Übersicht
HISTORY         Chronik aufgesuchter Dokumente
INFO            Zeige Informationen über dieses Dokument
INTERRUPT       w3m zum Hintergrundprozess machen
ISEARCH         Inkrementelle Suche vorwärts
ISEARCH_BACK    Inkrementelle Suche rückwärts
LEFT            Anzeigebereich um eine Spalte nach links verschieben
LINE_BEGIN      Gehe zum Zeilenanfang
LINE_END        Gehe zum Zeilenende
LINE_INFO       Zeige aktuelle Position im Dokument an
LINK_BEGIN      Gehe zum ersten Hyperlink
LINK_END        Gehe zum letzten Hyperlink
LINK_MENU       Öffne Menü mit den Link-Elementen
LIST            Zeige alle referenzierten URLs
LIST_MENU       Öffne Menü mit aufsuchbaren Hyperlinks
LOAD            Öffne lokale Datei in einem neuen Puffer
MAIN_MENU       Öffne Menü
MARK            Setze/Lösche Markierung
MARK_MID        Wandle Nachrichten-ID-artige Zeichenketten um in Hyperlinks
MARK_URL        Wandle URL-artige Zeichenketten um in Hyperlinks
MARK_WORD       Wandle aktuelles Wort in Hyperlink um
MENU            Öffne Menü
MENU_MOUSE      Öffne Menü beim Mauszeiger
MOUSE_TOGGLE    Schalte Mausbedienung an oder ab
MOVE_DOWN       Cursor abwärts
MOVE_DOWN1      Cursor abwärts; am Rand gleitend bewegen
MOVE_LEFT       Cursor nach links
MOVE_LEFT1      Cursor nach links; am Rand gleitend bewegen
MOVE_LIST_MENU  Öffne Menü mit vorhandenen Hyperlinks
MOVE_MOUSE      Curser auf Mauszeigerposition setzen
MOVE_RIGHT      Cursor nach rechts
MOVE_RIGHT1     Cursor nach rechts; am Rand gleitend bewegen
MOVE_UP         Cursor aufwärts
MOVE_UP1        Cursor aufwärts; am Rand gleitend bewegen
MSGS            Zeige Fehlermeldungen an
NEW_TAB         Öffne neuen Reiter (mit aktuellem Dokument) 
NEXT            Schalte zum nächsten Puffer
NEXT_DOWN       Gehe abwärts zum nächsten Hyperlink
NEXT_HALF_PAGE  Scrolle eine halbe Seite abwärts
NEXT_LEFT       Gehe zum nächsten Hyperlink links
NEXT_LEFT_UP    Gehe zum nächsten Hyperlink links oder oberhalb
NEXT_LINK       Gehe zum nächsten Hyperlink
NEXT_MARK       Gehe zur nächsten Markierung
NEXT_PAGE       Eine Seite abwärts
NEXT_RIGHT      Gehe zum nächsten Hyperlink rechts
NEXT_RIGHT_DOWN Gehe zum nächsten Hyperlink rechts oder unterhalb
NEXT_TAB        Schalte zum nächsten Reiter
NEXT_UP         Gehe zum nächsten Hyperlink oberhalb
NEXT_VISITED    Gehe zum nächsten besuchten Hyperlink
NEXT_WORD       Gehe zum nächsten Wort
NOTHING         Tue nichts
NULL            Tue nichts
OPTIONS         Zeige Einstellungen für Änderungen
PEEK            Zeige aktuelle Adresse an
PEEK_IMG        Zeige Adresse des Bildes
PEEK_LINK       Zeige Zieladresse
PIPE_BUF        Leite aktuellen Pufferinhalt einem Shell-Kommando zu und zeige 
Ausgabe an
PIPE_SHELL      Führe Shell-Kommando aus und zeige Ausgabe an
PREV            Schalte zum vorherigen Puffer
PREV_HALF_PAGE  Scrolle eine halbe Seite aufwärts
PREV_LINK       Gehe zum vorangegangen Hyperlink
PREV_MARK       Gehe zur vorherigen Markierung
PREV_PAGE       Eine Seite aufwärts
PREV_TAB        Schalte zum vorherigen Reiter
PREV_VISITED    Gehe zum vorherigen besuchten Hyperlink
PREV_WORD       Gehe zum vorherigen Wort
PRINT           Speichere verarbeitetes Dokument
QUIT            Mit Bestätigungsfrage beenden
READ_SHELL      Führe Shell-Kommando aus und zeige Ausgabe an
REDO            Den letzten Rücknahmebefehl zurücknehmen
REDRAW          Bildschirmnzeige neu aufbauen
REG_MARK        Zu einem Muster passenden Zeichenfolgen überall markieren 
REINIT          Konfigurationsdatei erneut laden
RELOAD          Aktuelles Dokument erneut laden
RESHAPE         Dokument nochmals verarbeiten
RIGHT           Anzeigebereich um eine Spalte nach rechts verschieben
SAVE            Dokument-Quellcode speichern 
SAVE_IMAGE      Speichere Bild
SAVE_LINK       Speichere Ziel des Hyperlinks
SAVE_SCREEN     Speichere verarbeitetes Dokument
SEARCH          Suche vorwärts
SEARCH_BACK     Suche rückwärts
SEARCH_FORE     Suche vorwärts
SEARCH_NEXT     Setze Suche vorwärts fort
SEARCH_PREV     Setze Suche rückwärts fort
SELECT          Zeige Puffferstapel-Übersicht
SELECT_MENU     Öffne Puffferstapel-Menü
SETENV          Setze Umgebungsvariable
SET_OPTION      Setze Option
SHELL           Führe Shell-Kommando aus und zeige Ausgabe an
SHIFT_LEFT      Anzeigebereich nach links versetzen
SHIFT_RIGHT     Anzeigebereich nach rechts versetzen
SOURCE          Display HTML source
STOP_IMAGE      Bilder nicht mehr laden und anzeigen
SUBMIT          Formular übermitteln
SUSPEND         w3m zum Hintergrundprozess machen
TAB_GOTO        Öffne das angegebene Dokument in einem neuen Reiter
TAB_GOTO_RELATIVE       Öffne relative Addresse in einem neuen Reiter
TAB_LEFT        Einen Reiter weiter nach links gehen
TAB_LINK        Folge dem aktuellen Hyperlink in einem neuen Reiter
TAB_MENU        Öffne das Reiter-Auswahl-Menü
TAB_MOUSE       Wähle per Maus Reiter aus
TAB_RIGHT       Einen Reiter weiter nach rechts gehen
UNDO            Nimm die letzte Curserbewegung zurück
UP              Scrolle den Anzeigebereich eine Zeile aufwärts
VERSION         Zeige die Version von w3m an
VIEW            Display HTML source
VIEW_BOOKMARK   Lesezeichen ansehen
VIEW_IMAGE      Zeige Bild in Betrachter
WHEREIS         Suche vorwärts
WRAP_TOGGLE     Wechsle zwischen umlaufendem und nicht-umlaufendem Suchen
#!@PERL@
# $Id: w3mhelp.cgi.in,v 1.29 2007/05/29 11:50:24 inu Exp $

if ( $^O =~ /^(ms)?(dos|win(32|nt)?)/i ) {
  $CYGPATH = 1;
}

$prefix = "@prefix@";
$datarootdir = "@datarootdir@";
$helpdir = "@HELP_DIR@";
if ($CYGPATH) {
  $helpdir = &cygwin_pathconv($helpdir);
}
unshift(@INC, $helpdir);
@docdirs = split(" ", "@DOCDIRS@");

require "w3mhelp-funcname.pl";
require "w3mhelp-funcdesc.en.pl";
$lang = 'en';
$charset = 'US-ASCII';

%htmlesc = (
    '<', '&lt;',
    '>', '&gt;',
    '&', '&amp;'
);

$RC_DIR = '@RC_DIR@';
$RC_DIR =~ s/^~/$ENV{'HOME'}/;
if ($CYGPATH) {
  $RC_DIR = &cygwin_pathconv("$RC_DIR");
}
$keymap = "$RC_DIR/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/;
        if ($tlang !~ /^[a-z][a-z]$/) {
            $tlang = 'en';
        }
        # print "tlang=$tlang\n";
        eval {require "w3mhelp-funcdesc.$tlang.pl";};
        if (%funcdesc) {
            $lang = $tlang;
        }
    }
}

%f = %keyfunc;
%keyfunc = ();
while (($key, $fname) = each %f) {
        $key = &norm_key($key);
        $keyfunc{$key} = $fname;
}

if (-f $keymap) {
    open(KEYMAP, "< $keymap") || die "cannot open keymap: $keymap, $!";
    &load_keymap(*KEYMAP, $func);
    close(KEYMAP);
}

local (%funckeydesc, $key, $fname, $desc);

%funcname = (%funcname, %buf_funcname, %lineedit_funcname, %menu_funcname);

%funcdesc = (%funcdesc, %buf_funcdesc, %lineedit_funcdesc, %menu_funcdesc);
while (($fname, $desc) = each %funcdesc) {
    $funckeydesc{$funcname{$fname}} = "$fname\n$desc\n";
}

while (($key, $fname) = each %keyfunc) {
    $keydata{$key} && next;
    $funckeydesc{$funcname{$fname}} .= "$key,";
}
while (($key, $fname) = each %buf_keyfunc) {
    $funckeydesc{$funcname{$fname}} .= "$key,";
}
while (($key, $fname) = each %lineedit_keyfunc) {
    $funckeydesc{$funcname{$fname}} .= "$key,";
}
while (($key, $fname) = each %menu_keyfunc) {
    $funckeydesc{$funcname{$fname}} .= "$key,";
}

print <<HEADING;
Content-Type: text/html; charset=$charset

<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> ********
</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&amp;lang=";

# doc:en_English doc-jp:ja_Japanese doc-de:de_German
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]]</A>\n";
    }
}

$keymap =~ s/[<>&]/$htmlesc{$&}/ge;
$head = 'Aktuelle Datei mit Tastatur-Befehls-Zuordnung';
if (defined($title{$head})) {
        $head = $title{$head};
        $head =~ s/[<>&]/$htmlesc{$&}/ge;
}
print "<P><A HREF=\"$keymap\">$head</A>\n";

&show_keymap('Navigation auf der Seite', 
             split(" ", "pgFore pgBack movR movL movD movU
                movR1 movL1 movD1 movU1 ldown1 lup1
                shiftl shiftr col1L col1R linbeg linend ctrCsrH ctrCsrV
                goLine goLineF goLineL movRW movLW
                topA lastA nextA prevA movlistMn
                nextR nextL nextD nextU nextRD nextLU
                undoPos redoPos"));

&show_keymap('Umgang mit Hyperlinks',
             split(" ", "followA tabA svA followI svI submitForm
                curURL peekURL peekIMG pginfo curlno chkURL chkWORD chkNMID
                rFrame extbrz linkbrz linkLst listMn linkMn accessKey"));

&show_keymap('Umgang mit Dateien und Streams',
             split(" ", "goURL gorURL tabURL tabrURL ldfile readsh pipesh
                pipeBuf"));

&show_keymap('Umgang mit Puffern',
             split(" ", "backBf nextBf prevBf selMn selBuf vwSrc svSrc svBuf
                editBf editScr reload reshape rdrwSc dispI stopI"));

&show_keymap('Umgang mit Reitern',
             split(" ", "newT closeT nextT prevT tabMn tabR tabL"));

&show_keymap('Lesezeichenverwaltung',
             split(" ", "ldBmark adBmark"));

&show_keymap('Suchen',
             split(" ", "srchfor srchbak srchnxt srchprv isrchfor isrchbak"));

&show_keymap('Abgleich mit Wörterbuch',
             split(" ", "dictword dictwordat"));

&show_keymap('Umgang mit Textmarken',
             split(" ", "_mark nextMk prevMk reMark"));

&show_keymap('Verschiedenes',
             split(" ", "mainMn ldhelp ldOpt dispVer cooLst ldHist ldDL
                docCSet defCSet
                msgs msToggle wrapToggle execCmd setAlarm setOpt setEnv defKey
                reinit execsh susp qquitfm quitfm"));

&show_keymap_data('Benutzerdefinierte Tastatur-Befehle');

print "<BR>\n<HR WIDTH=80%>\n";

&show_keymap('Puffer/Reiter-Auswahl-Modus',
             split(" ", "buffer_next buffer_prev buffer_delete buffer_go"));

print "<BR>\n<HR WIDTH=80%>\n";

&show_keymap('Eingabezeile-Bearbeitungs-Modus',
             split(" ", "lineedit_forward lineedit_back lineedit_backspace 
                lineedit_delete lineedit_kill_after lineedit_kill_before
                lineedit_top lineedit_bottom lineedit_prev lineedit_next
                lineedit_editor lineedit_complete lineedit_accept"));

print "<BR>\n<HR WIDTH=80%>\n";

&show_keymap('Popup-Menü-Modus',
             split(" ", "menu_select menu_close menu_cancel menu_down menu_up
                menu_line_up menu_line_down menu_top menu_last menu_next
                menu_prev menu_search_fore menu_search_back menu_search_next
                menu_search_prev menu_suspend"));

print <<PAGE;
<HR>
</BODY>
</HTML>
PAGE

exit 0;

sub load_keymap {
    local(*FH) = shift;
    local($func) = @_;

    while (<FH>) {
        /^#/ && next;
        s/^\s*keymap\s+// || next;
        s/^(\"(\\\"|[^\"])+\"|\'(\\\'|[^\'])+\'|\S+)\s+(\S+)\s*// || next;
        ($key, $fname) = ($1, $4);
        $data = $_;
        $fname =~ tr/a-z/A-Z/;
        defined($funcdesc{$fname}) || next;
        $key =~ s/^["'](.*)["']$/$1/;
        $key = &norm_key($key);
        $keyfunc{$key} = $fname;
        if ($data) {
                $keydata{$key} = $data;
        } else {
                delete $keydata{$key};
        }
    }
}

sub norm_key {
    local($_) = @_;

    s/(ESC|SPC|TAB|DEL|UP|DOWN|RIGHT|LEFT)/\U$1/i;
    s/\\(.)/$1/g;
    s/(^|\s+|-)\^(.)/${1}C-$2/g;
    s/(^|\s+|-)(C-\[|M-)/${1}ESC-/g;
    if (/^ESC-\[/) {
        /^ESC-\[A$/ && return "UP";
        /^ESC-\[B$/ && return "DOWN";
        /^ESC-\[C$/ && return "RIGHT";
        /^ESC-\[D$/ && return "LEFT";
    }
    s/(^|\s+|-)ESC-\[/$1\^\[\[/g;
    s/(^|\s+|-)ESC-\^(.)/${1}ESC-C-$2/g;
    s/(^|\s+|-)(ESC-)?C-[iI]/$1${2}TAB/g;
    s/(^|\s+|-)(ESC-)?C-\?/$1${2}DEL/g;
    return $_;
}

sub show_keymap {
    local($head, @list) = @_;
    local($fid);
    local($attr) = " WIDTH=140";

    if (defined($title{$head})) {
        $head = $title{$head};
        $head =~ s/[<>&]/$htmlesc{$&}/ge;
    }

    print <<PAGE;
<H2>$head</H2>
<table cellpadding=0>
PAGE
    foreach $fid (@list) {
        local ($name, $desc, $keys) = split("\n", $funckeydesc{$fid}, 3);
        $keys =~ s/,$//;
        $keys = '<NOT ASSIGNED>' if ($keys eq '');
        $keys =~ s/[<>&]/$htmlesc{$&}/ge;
        if ($name =~ /:/) {
                $name = "";
        } else {
                $name =~ s/[<>&]/$htmlesc{$&}/ge;
                $name = " (<b>$name</b>)";
        }
        $desc =~ s/[<>&]/$htmlesc{$&}/ge;
        print <<PAGE;
<TR><TD$attr>$keys<TD><NOBR>$desc$name</NOBR>
PAGE
        $attr = "";
    }
    print "</table>\n";
}

sub show_keymap_data {
    local($head, @list) = @_;
    local($fid);
    local($attr) = " WIDTH=140";

    if (defined($title{$head})) {
        $head = $title{$head};
        $head =~ s/[<>&]/$htmlesc{$&}/ge;
    }

    print <<PAGE;
<H2>$head</H2>
<table cellpadding=0>
PAGE
    foreach $keys (sort keys %keydata) {
        $keys =~ s/[<>&]/$htmlesc{$&}/ge;
        $name = $keyfunc{$keys};
        $data = $keydata{$keys};
        $name =~ s/[<>&]/$htmlesc{$&}/ge;
        $data =~ s/[<>&]/$htmlesc{$&}/ge;
        print <<PAGE;
<TR><TD$attr>$keys<TD>$name<TD><NOBR>$data</NOBR>
PAGE
        $attr = "";
    }
    print "</table>\n";
}


sub cygwin_pathconv {
  local($_) = @_;
  local(*CYGPATH);

  open(CYGPATH, '-|') || exec('cygpath', '-w', $_);
  $_ = <CYGPATH>;
  close(CYGPATH);
  s/\r?\n$//;
  s!\\!/!g;
  s!/$!!;
  return $_;
}
# charset
$charset = 'UTF-8';

# Buffer selection mode

%buf_funcdesc = (
 'BUF:PREV', 'Gehe zum vorherigen Punkt',
 'BUF:NEXT', 'Gehe zum nächsten Punkt',
 'BUF:DELETE', 'Lösche den ausgewählten Eintrag',
 'BUF:GO', 'Gehe zum ausgewählten Eintrag',
);

%lineedit_funcdesc = (
 'LINEEDIT:FORWARD', 'Bewege Cursor vorwärts',
 'LINEEDIT:BACK', 'Bewege Cursor rückwärts',
 'LINEEDIT:BS',  'Vorheriges Zeichen löschen',
 'LINEEDIT:DEL', 'Aktuelles Zeichen löschen',
 'LINEEDIT:KILL_AFTER', 'Lösche alles nach dem Cursor',
 'LINEEDIT:KILL_BEFORE', 'Lösche alles vor dem Cursor',
 'LINEEDIT:TOP', 'Gehe zum Zeilenanfang',
 'LINEEDIT:BOTTOM', 'Gehe zum Zeilenende',
 'LINEEDIT:PREV', 'Hole den vorherigen Chronik-Eintrag',
 'LINEEDIT:NEXT', 'Hole den nächsten Chronik-Eintrag',
 'LINEEDIT:EDITOR', 'Bearbeite mit externem Editor',
 'LINEEDIT:COMPLETE', '"Versuche, den Dateinamen zu kompettieren"',
 'LINEEDIT:ACCEPT', 'Eingabezeile annehmen',
);

%menu_funcdesc = (
 'MENU:SELECT', 'Wähle Eintrag aus',
 'MENU:CLOSE', 'Schließe Menü',
 'MENU:CANCEL', 'Einen Auswahlschritt zurück',
 'MENU:DOWN', 'Gehe zum nächsten Punkt',
 'MENU:UP', 'Gehe zum vorherigen Punkt',
 'MENU:LINE_UP', 'Scrolle einen Punkt aufwärts',
 'MENU:LINE_DOWN', 'Scrolle einen Punkt abwärts',
 'MENU:TOP', 'Gehe zum ersten Punkt',
 'MENU:LAST', 'Gehe zum letzten Punkt',
 'MENU:NEXT', 'Gehe zur nächsten Seite',
 'MENU:PREV', 'Gehe zur vorherigen Seite',
 'MENU:SEARCH_FORE', 'Suche vorwärts',
 'MENU:SEARCH_BACK', 'Suche rückwärts',
 'MENU:SEARCH_NEXT', 'Suche weitere Übereinstimmung',
 'MENU:SEARCH_PREV', 'Suche frühere Übereinstimmung',
 'MENU:SUSPEND', 'Zurückstellen',
);

%title = (
 "Current keymap file", 'Aktuelle Datei mit Tastatur-Befehls-Zuordnung',
 "In-page Navigation", 'Navigation auf der Seite',
 "Hyperlink Operations", 'Umgang mit Hyperlinks',
 "File/Stream Operations", 'Umgang mit Dateien- und Streams',
 "Buffer Operations", 'Umgang mit Puffern',
 "Tab Operations", 'Umgang mit Reitern',
 "Buffer and Tab Selection Mode", 'Puffer/Reiter-Auswahl-Modus',
 "Bookmark Management", 'Lesezeichenverwaltung',
 "Searches", 'Suchen',
 "Dictionary Lookup", 'Abgleich mit Wörterbuch',
 "Mark Operations", 'Umgang mit Textmarken',
 "Miscellaneous", 'Verschiedenes',
 "User-defined key bindings", 'Benutzerdefinierte Tastatur-Befehle',
 "Input Line Editing Mode", 'Bearbeitung der Eingabezeile',
 "Popup Menu Mode", 'Navigation in Menüs',
);

1;
 

Reply via email to