changeset 513:13a922d1fc5c

update docs
author Carl Byington <carl@five-ten-sg.com>
date Fri, 10 Feb 2023 17:16:47 -0700
parents e1dd1fd46e18
children 947ea334735d
files Makefile app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java xml/510connectbot.in xml/Makefile
diffstat 4 files changed, 141 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Fri Feb 10 14:32:41 2023 -0700
+++ b/Makefile	Fri Feb 10 17:16:47 2023 -0700
@@ -37,7 +37,7 @@
 
 prep:
 	echo -e "$(version)" >app/src/main/res/values/version.xml
-	(cd help; make)
+	make docs
 
 genkey:
 	keytool -genkeypair -keystore 510Connectbot.keystore -alias 510Connectbot -dname "cn=510Connectbot , ou=510Connectbot, o=five-ten-sg, o=com, c=US" -keyalg RSA -keysize 2048 -validity 10000
@@ -124,8 +124,14 @@
 
 push:
 	# from from android build machine
-	hg push ssh://ns.five-ten-sg.com/usr/hg/510Connectbot
+	hg push ssh://ns.five-ten-sg.com/usr/hg/510Connectbot || /bin/true
+	hg push ssh://root@ns.five-ten-sg.com//usr/hg-repository/510Connectbot || /bin/true
+	hg push ssh://root@ns1.five-ten-sg.com//usr/hg-repository/510Connectbot || /bin/true
 	ssh ns.five-ten-sg.com "cd usr/hg/510Connectbot; hg update"
+	ssh root@ns.five-ten-sg.com "cd /usr/hg-repository/510Connectbot; hg update"
+	ssh root@ns1.five-ten-sg.com "cd /usr/hg-repository/510Connectbot; hg update"
+	scp -p html/* root@ns.five-ten-sg.com://home/httpd/html/510sg/510Connectbot
+	scp -p html/* root@ns1.five-ten-sg.com://home/httpd/html/510sg/510Connectbot
 
 #
 # release procedure
--- a/app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java	Fri Feb 10 14:32:41 2023 -0700
+++ b/app/src/main/java/com/five_ten_sg/connectbot/HostListActivity.java	Fri Feb 10 17:16:47 2023 -0700
@@ -470,11 +470,14 @@
             String accuspeech   = "/AccuSpeech/VoiceProjects";
             String download_dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
             BufferedReader reader = null;
+            String fn;
             try {
-                reader = new BufferedReader(new FileReader(external_dir + accuspeech + con));
+                fn = external_dir + accuspeech + con;
+                reader = new BufferedReader(new FileReader(fn));
             }
             catch (Exception e) {
-                reader = new BufferedReader(new FileReader(download_dir + con));
+                fn = download_dir + con;
+                reader = new BufferedReader(new FileReader(fn));
             }
             String line = null;
 
--- a/xml/510connectbot.in	Fri Feb 10 14:32:41 2023 -0700
+++ b/xml/510connectbot.in	Fri Feb 10 17:16:47 2023 -0700
@@ -5,26 +5,22 @@
 
         <para>
             The various source and binary packages are available at <ulink
-            url="http://www.five-ten-sg.com/@PACKAGE@/packages/">http://www.five-ten-sg.com/@PACKAGE@/packages/</ulink>.
+            url="https://www.five-ten-sg.com/@PACKAGE@/packages/">https://www.five-ten-sg.com/@PACKAGE@/packages/</ulink>.
             The most recent documentation is available at <ulink
-            url="http://www.five-ten-sg.com/@PACKAGE@/">http://www.five-ten-sg.com/@PACKAGE@/</ulink>.
+            url="https://www.five-ten-sg.com/@PACKAGE@/">https://www.five-ten-sg.com/@PACKAGE@/</ulink>.
         </para>
 
         <para>
             A <ulink url="http://www.selenic.com/mercurial/wiki/">Mercurial</ulink> source
             code repository for this project is available at <ulink
-            url="http://hg.five-ten-sg.com/@PACKAGE@/">http://hg.five-ten-sg.com/@PACKAGE@/</ulink>.
+            url="https://hg.five-ten-sg.com/@PACKAGE@/">https://hg.five-ten-sg.com/@PACKAGE@/</ulink>.
         </para>
 
         <para>
             A companion terminal monitor project is available at <ulink
-            url="http://www.five-ten-sg.com/510ConnectbotMonitor">http://www.five-ten-sg.com/510ConnectbotMonitor</ulink>
+            url="https://www.five-ten-sg.com/510ConnectbotMonitor">https://www.five-ten-sg.com/510ConnectbotMonitor</ulink>
         </para>
 
-        <para>
-            Bitcoin donations for this project may be sent to
-            <ulink url="bitcoin:1EkbpYhcbAwmU3L7xXPisHQdwWSyjdaY2A">bitcoin:1EkbpYhcbAwmU3L7xXPisHQdwWSyjdaY2A</ulink>
-        </para>
     </partintro>
 
     <refentry id="x@PACKAGE@.1">
@@ -104,7 +100,7 @@
                 </para></listitem>
 
                 <listitem><para>
-                    A deployment.connections text file is read (and optionally deleted) on
+                    A 510Connectbot.connections text file is read (and optionally deleted) on
                     startup. This may be used to preconfigure the global options
                     and to create an initial set of host connections. This is only
                     useful for bulk deployments.
@@ -162,8 +158,8 @@
                 The terminal monitor is invoked by calling an android Intent
                 named "com.five_ten_sg.connectbot.monitor.MonitorService". That
                 ensures that the monitor process is running, and should then
-                be listening on TCP port 6000 for incoming connections. The terminal
-                emulator then connects to the terminal monitor on port 6000.
+                be listening on TCP port 6001 for incoming connections. The terminal
+                emulator then connects to the terminal monitor on port 6001.
                 The native android Intent and Service communication mechanisms
                 are not used.
             </para>
@@ -188,6 +184,26 @@
             </para>
 
             <para>
+                The first message over the socket must be the INIT message
+                from the TE.  This allows the terminal monitor to load any
+                required data.
+            </para>
+
+            <para>
+                That is followed by a pair of SCREENCHANGE/CURSORMOVE messages from
+                the TE whenever the screen contents have changed. The terminal monitor
+                may respond to the SCREENCHANGE message with a SCREENWATCH message to
+                restrict the part of the screen that is to be monitored for updates.
+            </para>
+
+            <para>
+                At any time, the terminal monitor may send GETFIELD or SETFIELD messages
+                to get or set the value of fields on the current screen. GETFIELD
+                messages from the terminal monitor must be followed by a FIELDVALUE
+                message from the TE.
+            </para>
+
+            <para>
                 INIT = 0 (TE -> Monitor). The argument is a string of uint16
                 characters. The meaning of these characters is defined by the
                 monitor. It might be a fully qualified path name, or some other
@@ -203,9 +219,16 @@
                 This connection is now the active connection. It is the
                 topmost (or only) window visible to the user - typed keystrokes
                 will be sent to the host on the other end of this connection.
+                The TE must reset the screen watch area to the entire screen.
             </para>
 
             <para>
+                Every ACTIVATEE message from the TE must be followed by a
+                CURSORMOVE message.
+            </para>
+
+
+            <para>
                 KEYSTATE = 2 (TE -> Monitor). The argument is a single uint16
                 value, 1 for key down, 0 for key up. The TE tracks a single special
                 key for the monitor, and reports key up/down state when it changes.
@@ -219,18 +242,20 @@
                 argument is the reason for sending this cursor update. REASON=0 is
                 from a previous CURSORREQUEST command. REASON=1 is a cursor update
                 related to the previous SCREENCHANGE buffer update. REASON=2 is
-                a cursor update caused by user keystrokes.
+                a cursor update caused by user keystrokes or cursor movement
+                triggered by SETFIELD messages from the runtime.
             </para>
 
             <para>
                 SCREENCHANGE = 4 (TE -> Monitor). The first argument is the
                 number of lines. The second argument is the number of columns.
                 That is followed by lines*columns uint16 character codes for
-                the current screen contents.
+                the current screen contents. The TE must reset the screen
+                watch area to the entire screen.
             </para>
 
             <para>
-                Every SCREENCHANGE message from the TE will be followed by a
+                Every SCREENCHANGE message from the TE must be followed by a
                 CURSORMOVE message.
             </para>
 
@@ -256,7 +281,13 @@
                 When sent from the monitor to the emulator, this causes
                 the emulator to send the field codes to the host (for async
                 modes) or to set the specified field contents (for block modes).
-                If the field length is zero, the TE should move the cursor to the specified line/column.
+                Note that the field length may be zero, in which case the
+                block mode field should cleared.
+            </para>
+
+            <para>
+                If either of the line or column numbers are -1 (0xffff), the field is
+                taken from the current cursor position.
             </para>
 
             <para>
@@ -274,15 +305,30 @@
             </para>
 
             <para>
+                If either of the line or column numbers are -1
+                (0xffff), the block mode field is taken from the
+                current cursor position, the specified field length
+                should be ignored, and the entire field contents are
+                sent back in the FIELDVALUE reply message.
+            </para>
+
+            <para>
                 SCREENWATCH = 7 (Monitor -> TE).
-                The first argument is the line number (0..23)
-                and the second argument is the starting column number (0..79),
-                and the third argument is the field length in columns.
-                This command causes the emulator to watch the specified
-                part of the screen for changes. When that part of the screen
-                changes, the emulator will send a SCREENCHANGE message back
-                to the monitor. The initial screen watch area is the entire
-                screen.
+
+                The number of arguments must be a multiple of
+                three. The arguments form a sequence of triples, where
+                the first element is the line number (0..23), the
+                second element is the starting column number (0..79),
+                and the third element is the field length in columns
+                This command causes the emulator to watch the
+                specified parts of the screen for updates. When any of
+                those parts of the screen are updated by the host
+                (even if the old and new characters are the same) ,
+                the emulator will send a SCREENCHANGE message back to
+                the monitor. The initial screen watch area is the
+                entire screen. The screen watch area is reset to the
+                entire screen whenever the TE sends an ACTIVATE or
+                SCREENCHANGE message.
             </para>
 
             <para>
@@ -291,20 +337,28 @@
             </para>
 
             <para>
-                DEPRESS = 8 (Monitor -> TE). The argument is a single uint16
-                value containing the vk_key value. This command causes the emulator
-                to simulate a keypress for that key. The codes are defined
-                <ulink url="https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes">here</ulink>.
+                DEPRESS = 8 (Monitor -> TE). The argument is a single
+                uint16 value containing the vk_key value. This command
+                causes the emulator to simulate a keypress for that
+                key. This is used for the function keys and cursor
+                movement keys. See DEPRESSUNICODE for ascii control
+                characters.  Note that the TE must convert these
+                virtual key codes into the appropriate escape sequence
+                used by the host protocol (VT320, 5250, 3270, etc).The
+                base codes are defined <ulink
+                url="https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes">here</ulink>.
             </para>
 
             <para>
                 SHOWURL = 9 (Monitor -> TE). The single argument is a sequence
                 of uint16 character codes forming a URL to be displayed.
+                Strings within the URL must be URL escaped, so all of the
+                characters in the argument are less than 128.
             </para>
 
             <para>
                 SWITCHSESSION = 10 (Monitor -> TE). There are no arguments. The TE
-                should display this session.
+                should display the session associated with this socket.
             </para>
 
             <para>
@@ -322,12 +376,40 @@
                 character codes to be spoken. Note that the language is specified
                 by the monitor, not the TE.
             </para>
+
+            <para>
+                SETFOCUS = 13 (Monitor -> TE). The first argument is the
+                line number (-1..23) and the second argument is the column number
+                (-1..79). The TE should set the input focus to the specified field
+                position by moving the cursor.
+            </para>
+
+            <para>
+                KEYBOARD = 14 (Monitor -> TE). The argument is a single
+                uint16 value, 0 to hide the soft keyboard, 1 to show the soft keyboard.
+            </para>
+
+            <para>
+                DEPRESSUNICODE = 15 (Monitor -> TE). The argument is a
+                single uint16 value containing the unicode value. This message causes
+                the TE to send the keystroke to the host. This is used for ascii
+                control characters.  Use DEPRESS for function and cursor movement
+                keys.
+            </para>
+
+            <para>
+                FOREGROUND = 16 (Monitor -> TE). There are no arguments.
+                This is sent to the TE whenever the terminal monitor may have become the
+                visible foreground application. The TE should now force itself to be
+                the visible foreground application.
+            </para>
+
         </refsect1>
 
         <refsect1 id='todo.1'>
             <title>TODO</title>
             <para>
-                The tn5250 ssl/tls key storage should use the same storage mechanism
+                The tn5250 tls key storage should use the same storage mechanism
                 as the base ssh key storage.
             </para>
         </refsect1>
@@ -335,7 +417,7 @@
         <refsect1 id='copyright.1'>
             <title>Copyright</title>
             <para>
-                Copyright (C) 2019 by 510 Software Group &lt;carl@five-ten-sg.com&gt;
+                Copyright (C) 2019-2023 by 510 Software Group &lt;carl@five-ten-sg.com&gt;
             </para>
             <para>
                 This program is free software; you can redistribute it and/or modify it
@@ -360,7 +442,7 @@
 
     <refentry id="x@PACKAGE@.5">
         <refentryinfo>
-            <date>2019-10-04</date>
+            <date>2023-02-10</date>
             <author>
                 <firstname>Carl</firstname>
                 <surname>Byington</surname>
@@ -369,31 +451,32 @@
         </refentryinfo>
 
         <refmeta>
-            <refentrytitle>deployment.connections</refentrytitle>
+            <refentrytitle>510Connectbot.connections</refentrytitle>
             <manvolnum>5</manvolnum>
             <refmiscinfo>@PACKAGE@ @VERSION@</refmiscinfo>
         </refmeta>
 
         <refnamediv id='name.5'>
-            <refname>deployment.connections</refname>
-            <refpurpose>deployment file for @PACKAGE@</refpurpose>
+            <refname>510Connectbot.connections</refname>
+            <refpurpose>connections file for @PACKAGE@</refpurpose>
         </refnamediv>
 
         <refsect1 id='description.5'>
             <title>Description</title>
 
-            <para>The <command>deployment.connections</command> sample
-            file is below. If this file exists at the top
-            level of the external storage (as returned by
-            Environment.getExternalStorageDirectory().getAbsolutePath()),
-            it is read, parsed, and optionally deleted.  Comments start with #
-            and extend to the end of the line.
+            <para>
+                The <command>510Connectbot.connections</command>
+                sample file is below. If this file exists in the
+                AccuSpeech/VoiceProjects directory or in the Downloads
+                directory, it is read, parsed, and optionally deleted.
+                Comments start with # and extend to the end of the line.
             </para>
 
             <para>
-            The deployment file is deleted unless it contains "delete_deployment=false"
-            in the global options section. In that case, the file remains, and
-            it is read and parsed every time the app is launched.
+                The connections file is deleted unless it contains
+                "delete_deployment=false" in the global options
+                section. In that case, the file remains, and it is read
+                and parsed every time the app is launched.
             </para>
 
             <literallayout class="monospaced"><![CDATA[
--- a/xml/Makefile	Fri Feb 10 14:32:41 2023 -0700
+++ b/xml/Makefile	Fri Feb 10 17:16:47 2023 -0700
@@ -9,6 +9,6 @@
 	[ -d $(t) ] || mkdir $(t)
 	rm -f $(t)/*html
 	rm -f $(t)/*pdf
-	xmlto        -o $(t) xhtml 510connectbot.xml
-	xmlto        -o $(t) pdf   510connectbot.xml
+	xmlto                  -o $(t) xhtml 510connectbot.xml
+	xmlto  --with-dblatex  -o $(t) pdf   510connectbot.xml
 	rm -f 510connectbot.xml 510connectbot.sgml