(Note that GNU Emacs has a special interface to the X window system as well. The X window system has many technical advantages, it is an industry standard, and it is also free software. The Free Software Foundation urges you to try X windows, and distributes a free copy of X on Emacs distribution tapes.)
Function keys are translated to a sequence of the form `^X*[a-o][lrt]'. The last character is `l', `r', or `t' corresponding to whether the key is among the Left, Right, or Top function keys. The third character indicates which button of the group was pressed. Thus, the function key in the lower right corner will transmit the sequence `^X*or'. In addition, the [lrt] is affected by the Control, Meta, and Shift keys. Unshifted Control keys will be non-alphabetic: C-l is [,], C-r is [2], C-t is [4].
Mouse buttons are encoded as `^X^@([124] x y)\n'. ^X^@ is the standard GNU Emacs mouse event prefix, it is followed by a list indicating the button pressed and the character row and column of the point in the window where the mouse cursor is, and followed by a newline character. In GNU Emacs, the ^X^@ dispatches to a mouse event handler which then reads the following list.
By default, Emacstool runs the program emacs in the created subwindow. The value of the environment variable EMACSTOOL can be used to override this if your version of Emacs is not accessible on your search path by the name Emacs. In addition, the run command can be set by the pathname following the last occurence of the -rc flag. This is convenient for using Emacstool to run on remote machines.
All other command line arguments not used by the window system are passed as arguments to the program that runs in the Emacstool window.
For example:
local% (emacstool -rc rlogin remote -8 &)&
will create an Emacstool window logged in to a machine named remote. If Emacs is run from this window, Emacstool will encode mouse and function keys, and send them to rlogin. If Emacs is run from this shell on the remote machine, it will see the mouse and function keys properly. However, since the remote host does not have access to the screen, the cursor cannot be changed, menus will not appear, and the selection buffer (STUFF) is limited.
In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t". Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL") to determine whether to do Emacstool specific initalization. Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL") is defined.
The file src/sunfns.c defines several useful functions for emacs on the Sun. Among these are procedures to pop-up SunView menus, put and get from the SunView STUFF buffer, and a procedure for changing the cursor icon. If you want to define or edit cursor icons, there is a rudimentary mouse driven icon editor in the file lisp/sun-cursors.el. Try invoking (sc:edit-cursor)