Difference between revisions of "Dmuse: Key commands"

From CCARH Wiki
Jump to navigation Jump to search
m
m (adding a word)
 
(109 intermediate revisions by 2 users not shown)
Line 1: Line 1:
1. Introduction to the Keyboard command list in Dmuse
+
= Introduction to the Keyboard command list in Dmuse =
 +
  [[File:Dmuse-editscreen.png|250px|thumb|right|Initial editing screen shown after starting Dmuse.]]
  
1.1 When Dmuse is first started, it presents to the user a blank screen.  What you see is a view of one out of thirty possible windows, all of which work the same way.  You will see a blinking cursor in the upper left-hand corner of the screen.  You can use the cursor arrows to move the cursor anywhere in the screen.  The metaphor here is a blackboard, like the ones they have in school.  You can write anywhere on the blackboard with a piece of chalk, and you can write (type) anywhere on a Dmuse window. In this respect, Dmuse does not work like a standard text processor.
+
After an initial splash screen, Dmuse presents to the user an empty text-editing window as illustrated in the figure to the right.  What you see is a view of one out of thirty possible editing windows.  You will see a blinking cursor in the upper left-hand corner of the screen.  The arrow keys will move the cursor anywhere within the screen.  The metaphor here is a blackboard: as you can write anywhere on the blackboard with a piece of chalk, you can write (type) anywhere on a Dmuse window. In this respect, Dmuse does not work like most text processors which contain empty lines that are filled with content from left to right.
  
1.2  The Dmuse interface makes extensive use of the keyboard and its various combinations with <shft>, <ctrl>, and <alt>.  Since the layouts and the response for the PC-Linux and Macintosh keyboards is slightly different (e.g., the Mac has no Insert key), there will be differences in the PC-Linu and the Mac versions of the command list. The Dmuse documentation is designed to take this into account; so that if you are running the Mac version of Dmuse, all of the internal documentation will correspond to that version.  For purposes of this document, the following descriptions will be for the PC-Linux version of Dmuse.  Every keystroke combination in the PC-Linux version has a corresponding keystroke combination for the Mac.
+
The Dmuse interface makes extensive use of the keyboard with numerous combinations of the {{keypress|Shft}}, {{keypress|Ctrl}}, and {{keypress|Alt}} keys.  Since the layout and response for the PC-Linux and Macintosh keyboards is slightly different (<i>e.g.</i>, the Mac has no {{keypress|Insert}} key), there are some differences between the PC-Linux and Macintosh versions of the command list.   The Dmuse documentation is designed to take this into account; so that if you are running the Mac version of Dmuse, all of the internal documentation will correspond to that version.  For purposes of this document, the following descriptions will be for the PC-Linux version of Dmuse.  Every keystroke combination in the PC-Linux version has a corresponding keystroke combination for the Mac.
  
1.3  Commands for moving the cursor and viewing the window.
 
  
The first thing to note is the difference between a "window" and the "screen".  Using the metaphor above, a "window" is the full blackboard; the "screen" is a view of a portion of that window.  Windows in Dmuse can be quite large; up to 960 columns, and up to one million lines of text.  The screen size is whatever fits into the X-window you have set up for Dmuse (changeable by your computer's window manager).  Here are some commands for moving the cursor and viewing windows.
+
== Commands for moving the cursor and viewing the window. ==
  
* Move the cursor with the four arrow keys.
+
[[File:Window-screen.png|100px||right|Schematic of a <i>window</i> and a <i>screen</i> in Dmuse.]]
  
* Scroll the contents of a window up, down, left and right using &lt;ctrl&gt; with the four arrow keys&lt;right-shft&gt; with the arrow keys also works.
+
The first thing to note is the difference between a "window" and the "screen".  Using the metaphor above, a "window" is the full blackboard; the "screen" is a view of a portion of that window.  Windows in Dmuse can be quite large; up to 960 columns, and up to one million lines of text.  The screen size is whatever fits into the X-window you have set up for Dmuse (changeable by your computer's window manager)Here are some commands for moving the cursor and viewing windows:
  
* PageUp and PageDown will shift the view of the window up or down.  Note, shifting the view of a window up is the same as scrolling the contents of the screen down.
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Left}}, {{keypress|Up}}, {{keypress|Down}}, {{keypress|Right}} || move the cursor left, up, down, or right.
 +
|-
 +
| {{keypress|Ctrl|Left}}/{{keypress|Up}}/{{keypress|Down}}/{{keypress|Right}}, or<br> {{keypress|Right-Shft|Left}}{{keypress|Up}}/{{keypress|Down}}/{{keypress|Right}}|| scroll the contents of a window up, down, left and right.
 +
|-
 +
| {{keypress|PgUp}}, {{keypress|PgDn}} ||  shift the view of the window up or down by one page.  Note, shifting the view of a window up by one page({{keypress|PgUp}}) is the same as scrolling the contents of the screen down by one page.
 +
|-
 +
| {{keypress|Home}} ||  put cursor at top of window (line 1, column 1).
 +
|-
 +
| {{keypress|End}}  || put cursor below last line of text in window and in column 1.
 +
|-
 +
| {{keypress|KeyPad 0..9}} ||  change between windows 0 through 9, respectively (NumLock turned off).
 +
|-
 +
| {{keypress|Ctrl|KeyPad 0..9}} || access windows 10 to 19, respectively (NumLock turned off).
 +
|-
 +
| {{keypress|Alt|KeyPad 0..9}} || access windows 20 to 29, respectively (NumLock turned off).
 +
|-
 +
| {{keypress|KeyPad &bull;}} ||  toggle between current and previous windows. {{keypress|Shft|Esc}} (for LapTops) will do this also.
 +
|}
 +
</center>
  
* Home puts the cursor at the top of the window; End puts the cursor below the last line of text in the window.
+
== The mouse ==
 
 
* Use the numbers on the KeyPad to change between windows.  0 to 9 give access to windows 0 to 9; &lt;ctrl&gt;0 to &lt;ctrl&gt;9 give access to windows 10 to 19; and &lt;alt&gt;0 to &lt;alt&gt;9 give access to windows 20 to 29. Use KeyPad (decimal-point) to toggle between the current and previous windows. &lt;shft&gt;&lt;esc&gt; (for LapTops) will also do this.
 
 
 
1.4  The mouse
 
  
 
Dmuse developed initially as a keyboard only interface, with the mouse
 
Dmuse developed initially as a keyboard only interface, with the mouse
 
being added much later.  So the mouse does not do many of the things
 
being added much later.  So the mouse does not do many of the things
 
most users expect.  This section describes what the mouse does do;
 
most users expect.  This section describes what the mouse does do;
the next section describes some of keystrokes that provide the functionality
+
the next section describes some of the keystrokes that provide the functionality
 
you would expect from a mouse (but do not get with Dmuse).
 
you would expect from a mouse (but do not get with Dmuse).
  
 
* Across the bottom frame of Dmuse you will see the numbers 0 to 29. Click on one of these to change to that window.  There is also a question mark on that frame.  Click on that and you will get a summary description of what is in each of the windows (since it is sometimes hard to remember what you have put where).
 
* Across the bottom frame of Dmuse you will see the numbers 0 to 29. Click on one of these to change to that window.  There is also a question mark on that frame.  Click on that and you will get a summary description of what is in each of the windows (since it is sometimes hard to remember what you have put where).
 
+
* Click on the word "Window" in the top frame to toggle between windows (same as {{keypress|KeyPad .}}).  Click anywhere else in the top frame to call up the resident file manager.
* Click on the word "Window" in the top frame to toggle between windows (same as KeyPad decimal-point).  Click anywhere else in the top frame to call up the resident file manager.
 
 
 
 
* Along the right frame is something that looks like a scroll bar. It is not a real scroll bar, but you can click in different places along the "track" to shift the view to different places in the window.  The real purpose of the pseudo scroll bar is to show you approximately where you are in a window.  It is not uncommon for a window to contain thousands of lines, and in this case you would like to know if you are somewhere near the top or near the bottom of a window.  At the right-hand side of the top frame are two numbers representing the current position of the cursor in the window: line number and column number.
 
* Along the right frame is something that looks like a scroll bar. It is not a real scroll bar, but you can click in different places along the "track" to shift the view to different places in the window.  The real purpose of the pseudo scroll bar is to show you approximately where you are in a window.  It is not uncommon for a window to contain thousands of lines, and in this case you would like to know if you are somewhere near the top or near the bottom of a window.  At the right-hand side of the top frame are two numbers representing the current position of the cursor in the window: line number and column number.
 
+
* If you activate the resident file manager ({{keypress|F4}}), the mouse can be used to select various commands for this sub-program.
* If you activate the resident file manager (F4), the mouse can be used to select various commands for this sub-program.
 
 
 
 
* Finally, if you click anywhere in the main screen, the cursor will go there.
 
* Finally, if you click anywhere in the main screen, the cursor will go there.
  
1.5  Keystrokes that highlight, and what you can do with highlighted material.
+
== Keystrokes that highlight, and what you can do with highlighted material. ==
 
 
With many programs the mouse is used to highlight text.  This requires the "hold and drag" motion of the mouse, something Dmuse does not currently do.  Instead, Dmuse has the following keystrokes to highlight areas of the window.
 
 
 
In Dmuse, there are two kinds of highlight: box highlight and line highlight.  Box highlight is achieved by holding down the &lt;left-shft&gt; key and using the arrows.  Once a box area is highlighted, there are several things you can do with it.
 
 
 
# Move the contents of the box around the window.  Use &lt;ctrl&gt;&lt;shft&gt; arrow keys to do this.  After the contents have been moved, any other keystroke will deposit the contents of the box in its new location, overwriting what was there before.
 
# Load the contents of the box into the "box buffer."  Use &lt;ctrl&gt;Insert to do this.  There is only one box buffer. Whatever was there before will be replaced.  You can copy the contents of the box buffer to the screen (at cursor location) using the &lt;shft&gt;Insert command. The box buffer is universal to all Dmuse windows, so you can use the box buffer to copy material from one window to another.  Copying from the box buffer does not change the contents of the buffer.
 
# Delete the area of the window covered by the highlight. Use the Delete key for this.  Anything to the right of deleted material moves left.
 
#Draw a single or double line around the edge of the box.  The minus and underscore keys will do this.  You can use this facility to build up complicated line patterns and templates.  Used with the box highlight, the tilde key will remove any line characters around the edge of the highlighted area.
 
#If you are highlighting a column of numbers, push "t" to get a total at the bottom.  If you are highlighting two columns of numbers side by side, push "a" to get a third column which is the sum or push "s" to get a third column which is the difference between the two columns. If your columns contain commas, you will get commas in your answer; and if one of your numbers has a dollar sign, you will get a dollar sign in your answer. (works with pounds and yen, too).
 
 
 
The second type of highlight is the line highlight.  To get the line highlight, hold down the &lt;left-shft&gt; key and use the PageDown or arrow-down keys.  &lt;left-shft&gt; PageUp and arrow-up in this situation can be used to reduce the number of lines highlighted but not to start a line highlight.  With lines highlighted, you have the following options.
 
  
# Use the Delete key to delete lines to the line buffer.
+
With many programs the mouse is used to highlight text.  This requires the "hold and drag" motion of the mouse, something Dmuse does not currently do. Instead, Dmuse has the following keystrokes to highlight areas of the windowIn Dmuse, there are two kinds of highlight: box highlight and line highlight.
# Use the Insert key to copy lines to the line bufferLines will not be deleted in this case.
 
  
The line buffer does not work like the box bufferIt is a last-in, first-out trash heapAnd its size is limited only by the size of your disk! The command &lt;shft&gt;&lt;alt&gt;Insert will retrieve the last "block" of lines put the line buffer, whatever number of lines that was, and insert them into your current window just above the cursorThe command &lt;ctrl&gt;&lt;shft&gt;Insert will do the same thing, but will copy instead of retrieve the lines from the line buffer.  You can use &lt;ctrl&gt;&lt;shft&gt;Insert multiple times to copy the same group over and over again.
+
=== Box highlighting commands ===
 +
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Left-Shft|Left}}/{{keypress|Up}}/{{keypress|Down}}/{{keypress|Right}}|| box highlight a region of the window, moving from the current cursor position to the left, up, down, or right.
 +
|- 
 +
| {{keypress|Ctrl|Shft|Left}}/{{keypress|Up}}/{{keypress|Down}}/{{keypress|Right}}|| move box selection around in the windowAfter contents have been moved, any other keystroke will deposit content of the box in its new location, overwriting whatever was there on the screen.
 +
|-
 +
| {{keypress|Ctrl|Insert}} || load contents of box into the "box buffer." There is only one box buffer, so whatever was previously in the box buffer will be replaced.  
 +
|-
 +
| {{keypress|Shft|Insert}} ||  copy contents of box buffer to the screen at cursor location.  The box buffer is universal to all Dmuse windows, so you can use the box buffer to copy material from one window to another.  Copying from the box buffer does not change the contents of the buffer.
 +
|-
 +
| {{keypress|Delete}} || delete window region covered by the highlightAnything to the right of deleted material moves left.
 +
|-
 +
| {{keypress|-}} or {{keypress|_}} || draw single or double line around the edge of the box.  You can use this facility to build up complicated line patterns and templates. 
 +
|-
 +
| {{keypress|~}} || used with the box highlight, the tilde key will remove any line characters around the edge of the highlighted area.
 +
|-
 +
| {{keypress|t}} || if highlighting a column of numbers, calculates the sum and places the total underneath highlighted region. 
 +
|-
 +
| {{keypress|a}} || if highlighting two columns of numbers side by side, gives a third column which is the row-by-row sum.  Be sure your highlight includes space for the third column of numbers.
 +
|-
 +
| {{keypress|s}} || similar to {{keypress|a}} but gives a third column which is the difference between the two highlighted columns.  If your columns contain commas, you will get commas in your answer; and if one of your numbers has a dollar sign, you will get a dollar sign in your answer. (works with pounds and yen, too).
 +
|}
 +
</center>
  
If &lt;shft&gt;&lt;alt&gt;Insert is used more than once, it will continue to retrieve lines from the line buffer (trash heap), but only one line at a time.  The line buffer works across all windows, so you can use this feature to move material between windows.
+
=== Line highlighting commands ===
  
You can delete lines to the trash heap without using the line highlight.  &lt;alt&gt;Delete  deletes a line to the trash heap. &lt;shft&gt;&lt;alt&gt;Delete copies a line to the trash heap but does not delete itInstead, the cursor moves down one line.  Thus, holding down &lt;shft&gt;&lt;alt&gt; and pushing Delete several times will copy several lines (one at at time) to the trash heap. Holding down &lt;shft&gt;&lt;alt&gt; and pushing Delete and Insert in alternation will copy the same line over and over again.
+
The second type of highlight is the line highlight.   
 +
The line buffer does not work like the box bufferIt is a last-in, first-out trash heap.  And its size is limited only by the size of your disk!  The line buffer works across all windows, so you can use this feature to move material between windows.
  
Note: We normally use the line highlight to delete or copy lines. Not only does this allow groups of lines to be deleted/copied, but also for safety reasons it is helpful to SEE what you are deleting BEFORE you delete it. Note also that all lines deleted in this way can always be recovered at least onceThe trash heap never goes away, but the top layer can be removedThere are two other commands that delete lines (covered below), which do not put deleted material on the trash heap.  Material delete by those commands goes away completely (from the window, anyway).
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Left-Shft|Up}}/{{keypress|Down}} || Start/adjust a line highlight selection range, one line up or down. Cursor must be positioned at starting line of selection.
 +
|-
 +
| {{keypress|Left-Shft|PgDn}}/{{keypress|PgUp}} || Start/adjust a line highlight selection range, one page up or down. Cursor must be positioned at starting line of selection.
 +
|-
 +
| {{keypress|Delete}} || Delete highlighted lines from the window.
 +
|-
 +
| {{keypress|Insert}} || Copy highlighted lines (they are not deleted, and highlighting is removed from lines).
 +
|-
 +
| {{keypress|Shft|Alt|Insert}} || Retrieve the last "block" of lines placed into the line buffer, whatever number of lines that was, and insert them into your current window just above the cursorIf {{keypress|Shft|Alt|Insert}} is used more than once, it will continue to retrieve lines from the line buffer (trash heap), but only one line at a time.
 +
|-
 +
| {{keypress|Ctrl|Shft|Insert}} || Similar to the previous command, but will copy instead of retrieve lines from the line buffer. You can use {{keypress|Ctrl|Shft|Insert}} multiple times to copy the same group over and over again.
 +
|-
 +
| {{keypress|Alt|Delete}} || Delete a line to the trash heap without using the line highlight.
 +
|-
 +
| {{keypress|Shft|Alt|Delete}} || Copies a line to the trash heap but does not delete it.  Instead the cursor moves down one lineHolding down {{keypress|Left-Shft|Alt}} and pushing {{keypress|Delete}} several times will copy serveral lines (one at a time) to the trash heap.  Holding down {{keypress|Left-Shft|Alt}} and pushing {{keypress|Delete}} and {{keypress|Insert}} in alternation will copy the same line over and over again.
 +
|}
 +
</center>
  
1.6 Loading and storing files.
+
Note: We normally use the line highlight method to delete or copy lines. Not only does this allow groups of lines to be deleted/copied, but also for safety reasons it is helpful to <i>see</i> what you are deleting <i>before</i> it is deleted.  Note also that all lines deleted in this way can always be recovered at least once.  The trash heap never goes away, but the top layer can be removed.  There are two other commands that delete lines (covered below), which do not put deleted material on the trash heapMaterial delete by those commands goes away completely (from the window, anyway).
  
We need to do this, and Dmuse provides the following commands:
+
== Loading and storing files. ==
  
KeyPad (+) = load a file to the current window, at the line the cursor is currently on.
 
  
KeyPad &lt;shft&gt; (+) = store the content of the current window (the entire contents) to a file.
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|KeyPad +}} || load a file to the current window, at the line the cursor is currently on.
 +
|-
 +
| {{keypress|Shft|KeyPad +}} || store contents of the current window (the entire contents) to a file.
 +
|}
 +
</center>
  
 
It is very important to make a distinction between the contents of a window and the contents of a file that might have the source for that window.  First of all, any changes to the contents of the window are NOT reflected in the file unless and until the window is stored back to the file.  Second, if a file is loaded into a window anywhere below the top line, the window and the file will be different right away.  Dmuse provides a flag in the top frame, which signals when the contents of a window is different from the file which was its source (if there was one).  If a file is loaded into a window (at any location), the top frame contains the name of the source file.  If a window was not loaded from a file, no source is specified.
 
It is very important to make a distinction between the contents of a window and the contents of a file that might have the source for that window.  First of all, any changes to the contents of the window are NOT reflected in the file unless and until the window is stored back to the file.  Second, if a file is loaded into a window anywhere below the top line, the window and the file will be different right away.  Dmuse provides a flag in the top frame, which signals when the contents of a window is different from the file which was its source (if there was one).  If a file is loaded into a window (at any location), the top frame contains the name of the source file.  If a window was not loaded from a file, no source is specified.
  
When you type KeyPad (+), you will be asked for the name of the file to load.  If you type a dollar sign, you will be asked for the name again, and the file will be displayed as a Hex dump (handy for looking as such things as MIDI files).
+
When you type {{keypress|KeyPad +}}, you will be asked for the name of the file to load.  If you respond with {{keypress|$}}, you will be asked for the name again, and the file will be displayed as a Hex dump (handy for looking as such things as MIDI files).  If a file is loaded as a Hex dump, the contents of the window do not match the contents of the file.  You therefore do NOT want to store the window back to the file which was its source.  To prevent this error from happening, a "read-protect" lock is put on the window.  The word "Window" at the left of the top frame turns Blue.  This way, the window cannot be "read" back to any file.  You can toggle the read-protect flag using a command from the menu invoked by the {{keypress|Ctrl|F10}} keystroke.  If you totally clear a window, the read-protect flag automatically goes off.
  
When you type KeyPad &lt;shft&gt; (+), you will be asked for the name of the file to which the window is to be stored.  If you type a dollar sign ($), the window will be stored back to the file from which it was last loaded (as noted in the top frame). When a window is stored to a file, the contents of the window and the file are the same, and the "difference flag" in the top frame goes off.
+
When you type {{keypress|Shft|KeyPad +}}, you will be asked for the name of the file to which the window is to be stored.  If you enter {{keypress|$}}, the window will be stored back to the file from which it was last loaded (as noted in the top frame). When a window is stored to a file, the contents of the window and the file are the same, and the "difference flag" in the top frame goes off.
  
You can load one window from another by typing KeyPad (+) and then giving "*&lt;number&gt;" as the name of the file to load, &lt;number&gt; being the number of the source window.  A window loaded in this way has no "source" per se.
+
You can load one window from another by typing {{keypress|KeyPad +}} and then giving "{{keypress|*}}&lt;number&gt;" as the name of the file to load, &lt;number&gt; being the number of the source window.  A window loaded in this way has no "source" <i>per se</i>.
  
There are two mouse shortcuts to loading and storing windows. Under the "File" title, "Load" has the same effect as KeyPad (+). "Save" has the same effect as the combination KeyPad &lt;shft&gt; (+) with the dollar sign.  In other words, it can only save the window back to its source, not to another file.
+
There are two mouse shortcuts to loading and storing windows. Under the "File" title, "Load" has the same effect as {{keypress|KeyPad +}}. "Save" has the same effect as the combination {{keypress|Shft|KeyPad +}} followed by the dollar sign.  In other words, it can only save the window back to its source, not to another file.
  
1.7 Clearing a window.
+
== Clearing a window ==
  
KeyPad &lt;shft&gt; (-) will clear a window to the right and below the cursor.  KeyPad (-) clears only the current line to the rigtht of cursor. Material cleared in this way cannot be retrieved.  Clearing a window has NO AFFECT on filesThe source file, if there be one, is unaffected.
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|KeyPad -}} ||| clear only the current line to the right of cursor.
 +
|-
 +
| {{keypress|Shft|KeyPad -}} || clear a window to the right and below the cursor.   
 +
|}
 +
</center>
  
The mouse shortcut "Clear" under the "File" title is actually a compound commandIt moves the cursor Home (to the top of the window), and then clears the window.
+
Material cleared in this way cannot be retrieved.  Clearing a window has NO EFFECT on filesThe source file, if there be one, is unaffected.
  
1.8 Searching a window
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" bgcolor="#aaffaa" style="background:#aaffaa; width:700px"
 +
|- style="background:#559955; color:white"
 +
! scope="col" width="150px" | Menu sequence
 +
! scope="col" width="550px" | Description
 +
|-
 +
| File&rarr;Clear || move the cursor to Home (line 1, column 1) and clear the window ({{keypress|Shft|KeyPad -}})
 +
|}
 +
</center>
  
You can search for a string in a window by type KeyPad (/).  You will be prompted for the search string.  If you type down-arrow, you will be presented with a choice of the last 10 search strings you have entered.  This allows you to redo former searchs without having to retype the strings.  The F11 function key repeats the same search to the right and below the cursor.  The F12 function key does the same to the left and above the cursor.
+
== Searching a window ==
  
1.9 What else?
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|KeyPad /}} || search for a string in the current window. You will be prompted for the search string.  If you type {{keypress|Down}}, you will be presented with a choice of the last 10 search strings you have entered.  This allows you to redo former searches without having to retype the string. 
 +
|-
 +
| {{keypress|F11}} || repeat the search starting at current cursor position, going forward in the window.
 +
|-
 +
| {{keypress|F12}} || repeat the search starting at current cursor position, going backward in the window.
 +
|}
 +
</center>
  
Insert = toggles between insert and overstrike mode.  A plus sign (+) appears in the top frame when you are in insert mode.
+
== What else? ==
  
Delete = delete character; move the rest of the line to the left.
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1"  style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Insert}} ||  toggles between insert and overstrike mode.  A plus sign (+) appears in the top frame when you are in insert mode.
 +
|-
 +
| {{keypress|Delete}} || delete character; move the rest of the line one column to the left.
 +
|-
 +
| {{keypress|Backspace}} || back the cursor up one column and replace whatever is there with a "space".
 +
|-
 +
| {{keypress|Alt|Left}} || move the cursor one word to the left.  If there are no more words to the left, the cursor will jump back a line to the last word on that line.
 +
|-
 +
| {{keypress|Alt|Right}} ||  move the cursor one word to the right.  If there are no more words to the right, the cursor will jump to the first word on the next line.
 +
|-
 +
| {{keypress|Return}} ||  put the cursor at the beginning of the next line.  This requires some discussion.  On many text processors, the text is stored as a stream of characters, and the &lt;return&gt; character signals the end of a paragraph.  Dmuse treats each line on the screen as a separate record.  When a window is stored to a file, a &lt;return&gt;&lt;line-feed&gt; character combination is attached automatically to the end of each line.  When a file is loaded to a window, these "record delimiter" characters are simply removed and each record appears on a new line.
 +
|}
 +
</center>
  
Backspace = put a "space" where the cursor is and back up one column
+
Now a word about "record delimiters" for you Linux users.  The use of the character combination &lt;return&gt;&lt;line-feed&gt; as a record delimiter originated with IBM computers, and was adopted early on by Microsoft.  Linux grew out of the old AT&T Unix system, which used only the &lt;line-feed&gt; character as a record delimiter.  Linux recognizes both systems, but some Linux applications (some versions of [http://en.wikipedia.org/wiki/Make_(software) makefiles] for example), still expect to see only the &lt;line-feed&gt; character, and will treat the &lt;return&gt; character as part of the text of a line.  Being able to handle both systems is therefore a priority.  Dmuse provides a way to do this.  If you load a file that uses only the &lt;line-feed&gt; character as a record delimiter, a flag will appear in the right-hand portion of the top frame.  If you later store this file, it will be stored using only the &lt;line-feed&gt; character as a delimiter.  You can toggle the delimiter flag using the keysrokes {{keypress|Ctrl|Shft|KeyPad *}}. When the flag is off, the record delimiter will revert to &lt;return&gt;&lt;line-feed&gt;.  Thus you can load a file in one format, and store it in another.
  
&lt;alt&gt; left-arrow = move the cursor one word to the left. This will also jump back a line if there are no words further to the left.
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Left-Shft|Return}} || puts an actual carriage-return character at the end of the line and puts the cursor on the next line.
 +
|-
 +
| {{keypress|Alt|Return}} || puts the cursor on the next line and below the first (non-blank) character in the previous line
 +
|-
 +
| {{keypress|tab}} || moves the cursor to the next tab or to the next line.
 +
|-
 +
| {{keypress|Left-Shft|tab}} || moves the cursor backward to the previous tab or to the last tab on the previous line.
 +
|-
 +
| {{keypress|Ctrl|tab}} || sets (or removes) a tab position at the cursor location.
 +
|-
 +
| {{keypress|Left-Shft|Ctrl|tab}} || removes all tabs
 +
|-
 +
| {{keypress|F10}} || Toggle button to see where tabs are set.
 +
|}
 +
</center>
  
&lt;alt&gt; right-arrow = move the cursor one word to the right.  This will also jump forward a line if there are no words further to the right.
+
Tabs also require some discussion.  In some Linux applications (again, makefiles are an example), the Tab character is an important delimiter. It must be present for the file to be read properly.  When Dmuse loads a file, it treats the Tab character like a text character.  Yes, the Tab has its own character in Dmuse, which can be entered by typing {{keypress|Shft|Alt|0}}.  This means two things: (1) the Tab is not expanded, and (2) such files can be edited correctly by Dmuse.  If you want the Tab expanded, you need to use the command {{keypress|Ctrl|KeyPad +}} to load the file.  But use caution here.  In expanding the Tab character, you may lose it.  Or you may lose space characters before a Tab.  When in doubt, for files like this, we recommend using another editor entirely.
  
&lt;return&gt; = put the cursor at the beginning of the next line.  This requires some discussion.  On many text processors, the text is stored as a stream of characters, and the &lt;return&gt; character signals the end of a paragraph.  Dmuse treats each line on the screen as a separate record.  When a window is stored to a file, a &lt;return&gt;&lt;line-feed&gt; character combination is attached automatically to the end of each line.  When a file is loaded to a window, these "record delimiter" characters are simply removed and each record appears on a new line.
+
== Wordwrap ==
  
Now a word about "record delimiters" for you Linux usersThe use of the character combination &lt;return&gt;&lt;line-feed&gt; as a record delimiter originated with IBM computers, and was adopted early on by MicrosoftLinux grew out of the old AT&T Unix system, which used only the &lt;line-feed&gt; character as a record delimiter.  Linux recognizes both systems, but some Linux applications (some versions of makefiles for example), still expect to see only the &lt;line-feed&gt; character, and will treat the &lt;return&gt; character as part of the text of a line.  Being able to
+
Most text processors use wordwrap automaticallyIn fact, you cannot disable wordwrap on most text processorsYou cannot put the cursor beyond the end of a line, because the line, itself, is not a separate entityWordwrap has meaning only when there are right and left marginsFor most text processors, these margins are the right and left limits of the window you are typing inChange the horizontal size and you change the margins .
handle both systems is therefore a priorityDmuse provides a way to do thisIf you load a file that uses only the &lt;line-feed&gt; character as a record delimiter, a flag will appear in the right-hand portion of the top frame.  If you later store this file, it will be stored using only the &lt;line-file&gt; character as a delimiterYou can toggle the delimiter flag using the keystoke KeyPad &lt;ctrl&gt;&lt;shft&gt; (*). When the flag is off, the record delimiter will revert to &lt;return&gt;&lt;line-feed&gt;.  Thus you can load a file in one format, and store it in another.
 
  
&lt;shft&gt; return = puts an actual carriage-return character at the end of the line and puts the cursor on the next line.
+
Dmuse has wordwrap as an advanced feature.  But, as you can imagine, this can only work within limits. The first limits are the margins, themselves.  Wordwrap works only when the cursor is between the legal margins. When the cursor is outside the margins, you can still type text, but whatever you type might disappear if the margins are changed, so be careful.
 
 
&lt;alt&gt; return = puts the cursor on the next line and below the first (non-blank) character in the previous line
 
 
 
Tab = moves the cursor to the next tab or to the next line.
 
 
 
&lt;left-shft&gt; Tab = moves the cursor backward to the previous tab or to the previous line.
 
 
 
&lt;ctrl&gt; Tab = sets (or removes) a tab position at the cursor location.
 
  
&lt;shft&gt;&lt;ctrl&gt; Tab = removes all tabs
+
Toggle with {{keypress|F10}} to see where the margins are set. {{keypress|Left-Shft|Alt|Right}}/{{keypress|Left}} will move the left margin. {{keypress|Right-Shft|Alt|Right}}/{{keypress|Left}} will move the right margin. {{keypress|Ctrl|Shft|Right}}/{{keypress|Left}} will move both margins simultaneously.  The default action is for margins to move only for the paragraph the cursor is in.  You can change this default using choices from the menu invoked by {{keypress|Ctrl|F10}}.
  
Toggle the F10 function button to see where tabs are set.
+
Dmuse is initially provided with wordwrap disabled.  You can activate it using a command from the {{keypress|F9}} menu.  When wordwrap is enabled, {{keypress|KeyPad *}} toggles it on and off.  When wordwrap is "on," you will see the wordwrap flag [W] on the right-hand side of the top frame.  We rarely work with wordwrap on, but we do use it to reformat (change the horizontal size of) paragraphs.
  
Tabs also require some discussion.  In some Linux applications (again, makefiles are an example), the Tab character is an important delimiter. It must be present for the file to be read properly.  When Dmuse loads a file, it treats the Tab character like a text character.  Yes, the Tab has its own character in Dmuse, which can be typed &lt;shft&gt;&lt;alt&gt;0.  This means two things: (1) the Tab is not expanded, and (2) such files can
 
  
be edited correctly by Dmuse. If you want the Tab expanded, you need to use the command KeyPad &lt;ctrl&gt; (+) to load the file. But use caution here. In expanding the Tab character, you may lose itOr you may lose space characters before a TabIn the end, for files like this, we recommend using another editor entirely.
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|F10}} || Toggle view of margins.
 +
|-
 +
| scope="row" colspan="2" | The following commands will only work if the text does not exceed the right margin.  These commands will work even when wordwrap is off. A <em>text block</em> is a set of lines which all have text starting at the left margin.
 +
|-
 +
| {{keypress|Ctrl|p}} || Reformat sentences which are in a text block selected by the cursor into a paragraph.
 +
|-
 +
| {{keypress|Ctrl|s}} || Reformat paragraph which is selected by the cursor into a text block of sentences, each sentence starting at the beginning of the line (and wrapping at the right margin if longer than one line). Sentences boundaries are defined by a period (.) followed by two spacesGrammatical sentences ending in question marks (?) or exclamation marks (!) will not be treated as sentences by this commandSentences ending at the right margin must have two spaces after the period in order for this command to work properly.
 +
|}
 +
</center>
  
1.10 Wordwrap
+
When wordwrap is on, the keystrokes {{keypress|Return}}, {{keypress|Insert}} and {{keypress|Delete}} behave differentlyThis difference is documented in the "[[Media:Topics.html|Advanced Topics]]" choice under the "Help" menu in the top frame of the Dmuse screen, and will not be discussed here.
  
Most text processors use wordwrap automatically.  In fact, you cannot disable wordwrap.  You cannot put the cursor beyond the end of a line, because the line, itself, is not a separate entity.  Wordwrap has meaning only when there are right and left margins.  For most text processors, these margins are the right and left limits of the window you are typing in.  Change the horizontal size and you change the margins .
+
== Connect mode ==
  
Dmuse has wordwrap as an advanced featureBut, as you can imagine, this can only work within limits.  The first limits are the margins, themselves.  Wordwrap works only when the cursor is between the legal marginsWhen the cursor is outside the margins, you can still type text, but whatever you type might disappear if the margins are changed, so be careful.
+
Dmuse starts out as a simple screen editorYou can activate the connect mode feature by using a command from the {{keypress|F9}} menuOnce you activate this feature, it stays activated for all future Dmuse sessions until you deactivate it.
  
Toggle the F10 function button to see where the margins are set. &lt;left-shft&gt;&lt;alt&gt; right and left arrow will move the left margin. &lt;right-shft&gt;&lt;alt&gt; right and left arrow will move the right margin. The default action is for margins to move only for the paragraph the cursor is in.  You can change this default using the &lt;ctrl&gt; F10 function key.
+
The {{keypress|Shft|KeyPad *}} keystroke toggles connect mode.  When you enter connect mode, Dmuse responds with the message, "Ready for program," and the connect mode flag [*] comes on in the top frame. Connect mode is window dependent, that is, each window has its own connect mode state.
  
Dmuse is provided with wordwrap disabled.  You can activate it using the F9 function buttonWhen wordwrap is enabled, the KeyPad (*) key toggles it on and off.  When wordwrap is "on," you will see the wordwrap flag [W] on the right-hand side of the top frame.  We rarely work with wordwrap on, but we do use it to reformat (change the horizontal size of) paragraphs.
+
When a window is in connect mode, you can type anything you want and put the cursor anywhere you wantNothing happens until you type {{keypress|Return}}.  When you do that, Dmuse reads whatever is on that line, regardless of how it got there, and sends this to the connect portion of the program. The program at this point expects one of three things:
  
When wordwrap is on, the keystrokes &lt;return&gt;, &lt;insert&gt; and &lt;delete&gt; behave differently.  This is difference is documented internally in Dmuse and will not be discussed here.
+
# the name of a specified program that you want to run. This must be a Zbex program, and it must be in a pre-specified library (see the page describing the [[Dmuse: init file|init file]] for how to do this).
 +
# the command "zz" which invokes the Zbex compiler and interpreter (see the section of Running zbex programs for how this works).
 +
#  "&&" followed directly by a bash-shell command.  For a limited number of commands, this will direct the command to the operating system, with the output from the command being direct back to the Dmuse window you are in.  This works especially well for commands like "man", since you can easily scroll through the entire output, and even grab portions of it to put in other windows -- even make your own documentation files.
  
The margins have meaning, even when wordwrap is off.  If the cursor is in the middle of a group of sentences, each starting at the left margin, the command &lt;ctrl&gt; p will reformat the sentences into a single paragraph.  Likewise, if the cursor is in the middle of a paragraph, the command &lt;ctrl&gt; s will reformat the paragraph into a set of sentences, each starting at the left marginFor these commands to work properly, all text must be to the left of the right margin.
+
The most important point here, and what makes Dmuse different from most other interfaces, is that it doesn't matter how or when something got put on the screen.  If you type return, the entire line gets read and sent to the program.  The Zbex language has an instruction, getc, which works the same way. When executing a getc, Zbex waits -- does not listen to what you type -- does not care if you change windows, insert or delete lines, move the cursor, whateverIt simple waits for you to type {{keypress|Return}}, and when you do, it reads the line the cursor is currently on and sends this to the program.
  
1.11  Connect mode
+
= Keyboard command list in Dmuse =
  
Dmuse starts out as a simple screen editor.  You can activate the connect mode feature using the F9 function key.  Once you activate this feature, it stays activated for all future Dmuse sessions until you deactivate it.
+
Dmuse has a utility called "Keystrokes" which can be called either from the "Help" menu or with the keystroke command {{keypress|Ctrl|F1}}.  Once you enter this utility, each key you press on your computer keyboard returns a complete description of what that keystroke does, including all combinations with {{keypress|Shft}}, {{keypress|Ctrl}}, and {{keypress|Alt}}.  The only way to exit this utility is to push {{keypress|Esc}} twice.  Listed below are some of the most important and useful keystrokes.
  
The KeyPad &lt;shft&gt; (*) keystroke toggles connect mode.  When you enter connect mode, Dmuse responds with the message, "Ready for program," and the connect mode flag [*] comes on in the top frame.  Connect mode is window dependent, that is, each window has its own connect mode state.
+
== The Escape and Function Keys ==
  
When a window is in connect mode, you can type anything you want and put the cursor anywhere you wantNothing happens until you type &lt;return&gt;When you do that, Dmuse reads whatever in on that line, regardless of how it got there, and sends this to the connect portion of the program. The program at this point expects one of three things:
+
<center>
 +
{| class="wikitable" cellpadding= "5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Esc}} || Open dialog box for extended keystrokes.  This is mainly for Laptops, where the keyboard does not include the KeyPad.  {{keypress|Esc}} is also used to exit from various dialog boxes and sub-programs.
 +
|-
 +
| {{keypress|Shft|Esc}} || Toggle between the current window and the previous window.
 +
|-
 +
| {{keypress|Ctrl|Esc}} || (on the Macintosh) = {{keypress|Ctrl|Break}} (PC-Linux).
 +
|-
 +
| {{keypress|Shft|Ctrl|Esc}} || (on the Macintosh) = {{keypress|Shft|PrtSc}} (PC-Linux).
 +
|-
 +
| {{keypress|F1}} || Introduction to help.
 +
|-
 +
| {{keypress|Shft|F1}} || Toggle between the current window and the Help window.  The Help window must first be loaded from the Help menu.
 +
|-
 +
| {{keypress|Ctrl|F1}} || Editor Keystrokes utility.
 +
|-
 +
| {{keypress|F2}} || Activate the top panel with the five pull-down menus.  Once the panel is activated, the cursor arrows, {{keypress|Left}}, {{keypress|Up}}, {{keypress|Right}}, {{keypress|Down}}, can be used to move between choices.  Make a choice with {{keypress|Enter}}.  {{keypress|Esc}} will exit the panel.  The mouse can also be used to activate the panel and make a choice.
 +
|-
 +
| {{keypress|Ctrl|Shft|F2}}|| Exit Dmuse.
 +
|-
 +
| {{keypress|Shft|F2}} || Store the state of Dmuse in a personal default file and then exit Dmuse.
 +
|-
 +
| {{keypress|Ctrl|F2}} || Store the state of Dmuse in a project file you specify and then exit Dmuse.
 +
|-
 +
| {{keypress|F3}} || Move the cursor to a specified line number in the current window.
 +
|-
 +
| {{keypress|Ctrl|F3}} || Check window data structure.  If for some reason you think Dmuse is behaving badly, use this commandIf the data structure is corrupted, Dmuse will tell you and will try to fix itselfFor safety reasons, you should then save important work and exit Dmuse.  Note: Dmuse is quite stable, but ... well, as they say in Islam, only Allah is perfect.
 +
|-
 +
| {{keypress|F4}} || Activate the [[Dmuse: file manager | resident file manager]].
 +
|-
 +
| {{keypress|F5}} to {{keypress|F8}} || These function keys control screen display colors.  There are 16 possible combinations of foreground and background colors in Dmuse.  These can be referenced by the four function keys, {{keypress|F5}}, {{keypress|F6}}, {{keypress|F7}}, and {{keypress|F8}} in their unaltered, {{keypress|Shft}}, {{keypress|Ctrl}}, and {{keypress|Ctrl|Shft}} states.  In normal typing mode, if you push, say {{keypress|Ctrl|F6}}, everything you then type (in the current window) will appear in color combination 10.  Each window keeps track of its own current color combination.  The 16 possible combinations are specified in your [[Dmuse: init file | init file]] (read by Dmuse when it first starts up).  If you have used the {{keypress|Shft}} arrow keys to highlight a (box) section of the screen, then pushing, say {{keypress|Ctrl|F6}}, will switch that area of the screen to color combination 10 (normal typing is not changed).  By convention {{keypress|F5}} switches to the default color combination.
 +
|-
 +
| {{keypress|F9}} || Change global parameters.
 +
|-
 +
| {{keypress|F10}} || Toggle the margin display panel.
 +
|-
 +
| {{keypress|Ctrl|F10}} || Change display parameters for this window.
 +
|-
 +
| {{keypress|F11}} || Search forward (to the right and then down) in the current window for the next occurance of the search string.
 +
|-
 +
| {{keypress|F12}} || Search backward (to the left and then up) in the current window for a previous occurance of the search string.
 +
|-
 +
| {{keypress|Shft|F12}} || Save the current state of Dmuse in a personal default file, but don't exit Dmuse.
 +
|-
 +
| {{keypress|Ctrl|F12}} || Save the current state of Dmuse in a project file you specify, but don't exit Dmuse.
 +
|}
 +
</center>
  
(1)  the name of a specified program that you want to run. This must be a Zbex program, and it must be in prespecified library (see the section init files for how to do this).
+
== The Sidebar Keys ==
  
(2)  the command "zz" which invokes the Zbex compiler and interpreter (see the section of Running zbex programs for how this works).
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|Shft|PrtSc}} || Format the contents of the current window for printing on an HP printer, or any printer that speaks PCL-3 or one of its derivative languages.
 +
|-
 +
| {{keypress|Ctrl|Break}} || Send the Break message to a [[Zbex]] program.
 +
|-
 +
| {{keypress|Insert}} || (1) If a line highlight is present, {{keypress|Insert}} adds the highlighted lines to the line buffer (trash heap).  The line buffer grows larger by this number of lines.  (2) Otherwise, {{keypress|Insert}} toggles the editor between insert mode and overstrike mode.
 +
|-
 +
| {{keypress|Alt|Insert}} || Insert blank line.  Insert an empty line above the line the cursor is currently on.
 +
|-
 +
| {{keypress|Shft|Insert}} || Copy the box (or stream) buffer to the screen.  Insert the contents of the box buffer (if wordwrap = off) or the contents of the stream buffer (if wordwrap = on) at the point of the cursor. The contents of these buffers is not changed.
 +
|-
 +
| {{keypress|Ctrl|Insert}} || Copy the box (or stream) highlight to its buffer.  If the box highlight or the stream highlight is present (set by the {{keypress|Shft}} arrow keys), copy the contents to the appropriate buffer.
 +
|-
 +
| {{keypress|Shft|Alt|Insert}} || Transfer lines from the line buffer to the screen.  Remove the line or lines most recently placed in the line buffer and insert them in the current window above the line the cursor is on.
 +
|-
 +
| {{keypress|Ctrl|Shft|Insert}} || Copy lines from the line buffer to the screen.  Insert the line or lines most recently place in the line buffer into the current window just above the line the cursor is on.  The line buffer is unchanged.
 +
|-
 +
| {{keypress|Delete}} || (1) If material is highlighted, delete material.  If lines are highlighted, Delete removes the highlighted lines from the window and adds them to the line buffer.  If the stream highlight is on (wordwrap = on), {{keypress|Delete}} removes the highlighted stream from the window and reformats the remaining portion of the window.  If the box highlight is on (wordwrap = off), {{keypress|Delete}} removes the material in the highlighted box and shifts the material on the right of the box leftward to fill the space.  (2) Otherwise, delete the character above the cursor.  The current line to the right of the cursor moves left by one column.
 +
|-
 +
| {{keypress|Alt|Delete}} || Delete line.  Remove the line the cursor is currently on and add it to the line buffer (trash heap).
 +
|-
 +
| {{keypress|Shft|Alt|Delete}} || Add the line the cursor is currently on to the line buffer and move the cursor down one line.
 +
|-
 +
| {{keypress|Ctrl|Delete}} || If material is highlighted as a box highlight or a stream highlight, delete this material in the same manner as {{keypress|Delete}}, and also place the deleted material in the box or stream buffer.  The former contents of the box or stream buffer is overwritten.
 +
|-
 +
| {{keypress|Home}} || put the cursor at the top of the window (line 1, column 1).
 +
|-
 +
| {{keypress|End}} || put the cursor below the last line of text in the window and in column 1.
 +
|-
 +
| {{keypress|PgUp}} || Shift the screen view of the window up one page.
 +
|-
 +
| {{keypress|Shft|PgUp}} || If the line highlight has been started, remove 24 lines from the line highlight and scroll down 24 lines if necessary to keep the highlighted text in view.  If there is less than 24 lines in the line highlight to begin with, all highlighted lines will be removed, and the highlight will disappear.  This works with box highlights, too, but not with wordwrap on.
 +
|-
 +
| {{keypress|PgDn}} || Shift the screen view of the window down one page.
 +
|-
 +
| {{keypress|Shft|PgDn}} || Add 24 lines of line highlight and scroll up 24 lines if necessary to keep highlighted text in view.  Works on box highlights, too, but not with wordwrap on.
 +
|-
 +
| {{keypress|Left}} {{keypress|Up}} {{keypress|Right}} {{keypress|Down}} || Move the cursor in the direction of the arrow.  Do not scroll the window up or down; vertical cursor travel is circular.  Horizontal travel is not.  The cursor can move to the right up to column 960, and the screen will scroll so as to always show the cursor.  When the screen scrolls to the left, a "fence" appears in column 11 and the first 10 columns stay fixed.  This way you can always see the beginning of the line you are on, even when the cursor is far to the right.
 +
|-
 +
| {{keypress|Left-Shft}} arrow keys || create a box (wordwrap=off) or a stream (wordwrap=on) highlight.
 +
|-
 +
| {{keypress|Ctrl}} arrow keys || Scroll the contents of the screen in the direction of the arrow.  Since some Laptop keyboards do not have a {{keypress|Right-Ctrl}} button, {{keypress|Right-Shft}} arrow keys will also scroll the contents of the screen.  This way, scrolling can always be done with the right hand alone.
 +
|-
 +
| {{keypress|Alt|Left}} || Move the cursor one word to the left, or to the last word on the previous line.
 +
|-
 +
| {{keypress|Alt|Right}} || Move the cursor one word to the right, or to the first word on the next line.
 +
|-
 +
| {{keypress|Left-Shft|Alt|Right}}/{{keypress|Left}} || Move the left margin to the right or left.
 +
|-
 +
| {{keypress|Right-Shft|Alt|Right}}/{{keypress|Left}} || Move the right margin to the right or left.
 +
|-
 +
| {{keypress|Shft|Alt|Down}} || Copy the line the cursor is on to the line buffer and move the cursor down one line.
 +
|-
 +
| {{keypress|Ctrl|Sft|Right}}/{{keypress|Left}} || Move both margins simultaneously to the right or left.
 +
|}
 +
</center>
  
(3)  "&&" followed directly by a bash-shell command.  For a limited number of commands, this will direct the command to the operating system, with the output from the command being direct back to the Dmuse window you are in.  This works especially well for commands like "man", since you can easily scroll through the entire output, and even grab portions of
+
== The KeyPad Keys ==
  
it to put in other windows -- even make your own documentation files .
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! scope="col" width="500px" | Description
 +
|-
 +
| {{keypress|KeyPad 0..9}} || Change to window 0 through 9, respectively.
 +
|-
 +
| {{keypress|Ctrl|KeyPad 0..9}} || Change to window 10 through 19, respectively.
 +
|-
 +
| {{keypress|Alt|KeyPad 0..9}} || Change to window 20 through 29, respectively.
 +
|-
 +
| colspan="2" | Window change can also be accomplished by clicking with the mouse on one of the numbers in the bottom frame.  The extended keystrokes (activated by {{keypress|Esc}}) also contain commands for changing windows.
 +
|-
 +
| {{keypress|KeyPad .}} || Toggle between the current window and the previous window.  {{keypress|Shft|Esc}} does this also.
 +
|-
 +
| {{keypress|KeyPad /}} || Initiate a search for a string pattern in the current window.  You will be prompted to enter the string pattern.  The search is conducted forward (to the left and then down).  If you press {{keypress|Down}},a box will appear showing the last ten searches that you conducted.  You may choose a search string from this list.  (see also {{keypress|F11}} and {{keypress|F12}})
 +
|-
 +
| {{keypress|KeyPad *}} || Toggle Wordwrap.  Most screen editing is done with wordwrap = off. The wordwrap feature can cause strange things to happen to the contents of a window if it is not used properly.  For this reason, wordwrap is considered an advanced feature and is disabled at the time Dmuse is first installed.  The {{keypress|F9}} function key provides a means for enabling the wordwrap feature.
 +
|-
 +
| {{keypress|Shft|KeyPad *}} || Toggle Connect mode.  The Dmuse environment includes an applications programming language called [[Zbex]].  With connect mode = on, a window behaves like a Terminal connected to the computer.  Zbex programs can be started with the "zz" command.  All features of the editor (except wordwrap) continue to operate.  When you press {{keypress|Enter}}, the computer reads the entire line that the cursor is on.  No distinction is made between text that you may have typed and text written by the computer.  Connect mode is disabled at the time Dmuse is first installed.  The {{keypress|F9}} function key provides a means for enabling connect mode.
 +
|-
 +
| {{keypress|Ctrl|Shft|KeyPad *}} || Toggle File Format flag.  Text files in Linux and Microsoft Windows differ in one respect.  Microsoft Windows uses the two-byte pattern, carriage-return(ASCII-13) + new-line(ASCII-10), to mark the end of a record, whereas Linux uses only the new-line(ASCII-10) byte.  The default with Dmuse is the two-byte pattern, but if a Linux type file is loaded into a window, Dmuse sets a flag (on the right-hand side of the top frame), showing that this file used the single byte delimiter.  If this flag is set when the file is written back to the disk, it will be written in the Linux format. {{keypress|Ctrl|Shft|KeyPad *}} allows the user to toggle this flag.
 +
|-
 +
| {{keypress|KeyPad -}} || Delete the character above the cursor and all characters to the right of the cursor on the current line. (Clear line at and to the right of the cursor.)
 +
|-
 +
| {{keypress|Shft|KeyPad -}} || Delete the character above the cursor and all characters to the right of the cursor on the current line.  Also delete all lines below the cursor.  (Clear screen at and below the cursor.)
 +
|-
 +
| {{keypress|KeyPad +}} || Load file into window.  The load point in the window will be at the line the cursor is currently on.  If the cursor is not at the top of the window, the contents of the window will not match the contents of the file.  Dmuse will ask you for the name of the file you want to load.  If you enter {{keypress|$}}, the file will be loaded in hexadecimal notation.  Also, if Dmuse thinks the file is not an ordinary text file, it will automatically give you the choice of seeing the file as characters or in hexadecimal notation.
 +
|-
 +
| {{keypress|Shft|KeyPad +}} || Store the contents of the current window in a file.  Dmuse will ask you for the name of the output file.  If you enter {{keypress|$}} and if the window was originally loaded from a file, Dmuse will overwrite (update) the source file with the contents of the window.
 +
|}
 +
</center>
  
The most important point here, and what makes Dmuse different from most other interfaces, is that it doesn't matter how or when something got put on the screen.  If you type return, the entire line gets read and sent to the program.  The Zbex language has an instruction, getc, which works the same way. When executing a getc, Zbex waits -- does not listen to what you type -- does not care if you change windows, insert or delete lines, move the cursor, whatever.  It simple waits for you to type &lt;return&gt;, and when you do, it reads the line the cursor is currently on and sends this to the program.
+
== The Main Keyboard; Special Keystrokes ==
  
2. Keyboard command list in Dmuse
+
<center>
 +
{| class="wikitable" cellpadding="5" cellspacing="0" border="1" style="width:700px"
 +
|- {{Style|table header}}
 +
! scope="col" width="150px" | Key sequence
 +
! score="col" width="500px" | Description
 +
|-
 +
| {{keypress|Alt}} used with the numbers 1 ... 9 || These keystrokes are used to add or change diacritical marks over letters.  They can be used in two ways.  If you just typed a letter, such as an "e", which needs an acute accent, you can type {{keypress|Alt|7}} and an acute will appear above the "e", even though the cursor has moved to the next column.  Or if you later want to change that acute to a grave, you put the cursor under the "&eacute;" and type {{keypress|Alt|8}}, and the acute will be replaced by a grave.
 +
|-
 +
| {{keypress|Alt|1}} || Adds a tilde to the letters n (&ntilde;) and o (&otilde;).
 +
|-
 +
| {{keypress|Alt|2}} || Adds a cedilla to c (&ccedil;); add a slash to o (&oslash;); change s to German ss (&szlig;).
 +
|-
 +
| {{keypress|Alt|3}} || Adds an umlaut to letters a, e, i, o, u, and y: &auml;, &euml;, &iuml;, &ouml;, &uuml;, &yuml;.
 +
|-
 +
| {{keypress|Alt|4}} || Adds a circle above letter a (&aring;).
 +
|-
 +
| {{keypress|Alt|5}} || Adds a caron above the letters r (&#345;) and s (&#353;).
 +
|-
 +
| {{keypress|Alt|6}} || Removes accent or alteration from a letter.
 +
|-
 +
| {{keypress|Alt|7}} || Adds an acute accent to letters a, e, i, o, u, and y: &aacute;, &eacute;, &iacute;, &oacute;, &uacute;, &yacute;.
 +
|-
 +
| {{keypress|Alt|8}} || Adds a grave accent to letters a, e, i, o,and u: &agrave;, &egrave;, &igrave;, &ograve;, &ugrave;.
 +
|-
 +
| {{keypress|Alt|9}} || Adds circumflex to letters a, e, i, o, and u: &acirc;, &ecirc;, &icirc;, &ocirc;, &ucirc;.
 +
|-
 +
| {{keypress|Shft|Alt|0}} || Vertical dotted line (used to represent tab character).
 +
|-
 +
| {{keypress|-}} || Dash character.  Also draws a single line around the edge of a box highlight.
 +
|-
 +
| {{keypress|{{=}}}} || Equals character.  Also draws a double line around the edge of a box highlight.
 +
|-
 +
| {{keypress|Backspace}} || Move cursor left one column and place a blank above the cursor.
 +
|-
 +
| {{keypress|Shft|Backspace}} || Move cursor to the left margin.
 +
|-
 +
| {{keypress|Tab}} || Move the cursor to the next tab on the right or move the cursor to the beginning of the next line.
 +
|-
 +
| {{keypress|Left-Shft|tab}} || Move the cursor to the previous tab on the left or move the cursor to the last tab on the previous line.
 +
|-
 +
| {{keypress|Ctrl|Tab}} || Toggle the tab marker at the position of the cursor.
 +
|-
 +
| {{keypress|Left-Shft|Ctrl|Tab}} || Clear all tab markers for this window.
 +
|-
 +
| {{keypress|Right-Shft|tab}} || Same as {{keypress|Tab}}, but proceed in "backup" mode.  In backup mode, the cursor does not move, and as characters are typed, space is made for them by backing up characters previously typed while in this mode.  Backup mode is terminated with the period (decimal) or the &lt;space&gt; bar.  The terminating character is displayed one position to the right, and the cursor now moves forward in normal fashion.  Backup mode has many uses but its primary purpose is for entering columns of numbers.
 +
|-
 +
| {{keypress|Right-Shft|Ctrl|Tab}} || Same as {{keypress|Left-Shft|Tab}}, but proceed in "backup" mode.
 +
|-
 +
| {{keypress|Enter}} (with wordwrap off) || Move the cursor to the left margin and down one line.
 +
|-
 +
| {{keypress|Enter}} (with WW on) || Break line.  Insert a blank line below the current line.  Move the right half of the current line (starting at the cursor) to the new line starting at the left margin.  Move the cursor to the beginning of the new line.
 +
|-
 +
| {{keypress|Ctrl|Return}} with WW off || Break line, as with wordwrap on.
 +
|-
 +
| {{keypress|Enter}} (connect mode) || Send the entire line the cursor is on to the program running in the current window.  Move the cursor to the beginning of the next line.
 +
|-
 +
| colspan="2" bgcolor="white"| The following special characters are available in Dmuse. These are represented internally by byte values that lie outside the standard ASCII range of 32 to 127.  So, if they are written to a file and that file is read by another program, other characters may appear in their place.
 +
|-
 +
| {{keypress|Alt|o}}/{{keypress|p}}/{{keypress|[}}/{{keypress|]}} || shaded cells: one-quarter/one-half/three-quarters/full shade.
 +
|-
 +
| {{keypress|Alt|L}}/{{keypress|{{;}}}}/{{keypress|,}}/{{keypress|.}}  || full shade on a half cell: upper half/ lower half/left half/right half.
 +
|-
 +
| {{keypress|Shft|Alt|9}} || Centered dot.
 +
|-
 +
| {{keypress|Ctrl|Shft|[}} || Small centered box.
 +
|-
 +
| {{keypress|Ctrl|Shft|]}} || Small centered dot.
 +
|-
 +
| {{keypress|Ctrl|Shft|D}} || Centered diamond.
 +
|-
 +
| {{keypress|Ctrl|Shft|Z}} || House character.
 +
|-
 +
| {{keypress|Ctrl|Shft|I}}/{{keypress|J}}/{{keypress|P}}/{{keypress|Q}} || Large arrow head pointing up/down/right/left.
 +
|-
 +
| {{keypress|Ctrl|Shft|X}}/{{keypress|Y}}/{{keypress|M}}/{{keypress|N}} || Small arrow up/down/right/left.
 +
|-
 +
| {{keypress|Ctrl|Shft|E}}/{{keypress|F}} || Top/bottom of large open parenthesis.
 +
|-
 +
| {{keypress|Ctrl|Shft|G}}/{{keypress|H}} || Top/bottom of large close parenthesis.
 +
|-
 +
| {{keypress|Ctrl|Shft|R}} || Small square root.
 +
|-
 +
| {{keypress|Ctrl|Shft|S}} || Top of square root.
 +
|-
 +
| {{keypress|Ctrl|Shft|W}} || Part of a large square root.
 +
|-
 +
| {{keypress|Ctrl|Shft|V}} || Part of a large square root.
 +
|-
 +
| {{keypress|Ctrl|Shft|A}}/{{keypress|B}}/{{keypress|C}} || Musical sharp ({{music|sharp}}), flat ({{music|flat}}), and natural ({{music|natural}}).
 +
|-
 +
| colspan="2" | Dmuse also provides access to the full compliment of line drawing characters.  The nine keystrokes in the block {{keypress|Alt}} (qwe,asd,zxc) together with {{keypress|Alt|r}} and {{keypress|Alt|t}} can be used to draw single line boxes and other single line diagrams; likewise, the nine keystrokes in the block {{keypress|Alt}} (tyu,ghj,bnm) together with {{keypress|Alt|i}} and {{keypress|Alt|k}} can be used to draw double line boxes and other double line diagrams.  {{keypress|Shft|Alt}} with these combinations draws the mixtures (i.e., horizontal-single, vertical-double, and vise versa).  You simply need to experiment with these to understand how they work.  The best way to draw lines and boxes is to use the box highlight and the {{keypress|-}} and {{keypress|{{=}}}} keystrokes, as described above.  Single and Double line boxes can overlap, which explains the need for the mixture characters.
 +
|-
 +
| Key sequence goes here || Description goes here.
 +
|-
 +
| Last sequence || Last description.
 +
|}
 +
</center>

Latest revision as of 02:04, 12 October 2010

Introduction to the Keyboard command list in Dmuse

Initial editing screen shown after starting Dmuse.

After an initial splash screen, Dmuse presents to the user an empty text-editing window as illustrated in the figure to the right. What you see is a view of one out of thirty possible editing windows. You will see a blinking cursor in the upper left-hand corner of the screen. The arrow keys will move the cursor anywhere within the screen. The metaphor here is a blackboard: as you can write anywhere on the blackboard with a piece of chalk, you can write (type) anywhere on a Dmuse window. In this respect, Dmuse does not work like most text processors which contain empty lines that are filled with content from left to right.

The Dmuse interface makes extensive use of the keyboard with numerous combinations of the Shft, Ctrl, and Alt keys. Since the layout and response for the PC-Linux and Macintosh keyboards is slightly different (e.g., the Mac has no Insert key), there are some differences between the PC-Linux and Macintosh versions of the command list. The Dmuse documentation is designed to take this into account; so that if you are running the Mac version of Dmuse, all of the internal documentation will correspond to that version. For purposes of this document, the following descriptions will be for the PC-Linux version of Dmuse. Every keystroke combination in the PC-Linux version has a corresponding keystroke combination for the Mac.


Commands for moving the cursor and viewing the window.

Schematic of a window and a screen in Dmuse.

The first thing to note is the difference between a "window" and the "screen". Using the metaphor above, a "window" is the full blackboard; the "screen" is a view of a portion of that window. Windows in Dmuse can be quite large; up to 960 columns, and up to one million lines of text. The screen size is whatever fits into the X-window you have set up for Dmuse (changeable by your computer's window manager). Here are some commands for moving the cursor and viewing windows:

Key sequence Description
, , , move the cursor left, up, down, or right.
Ctrl+///, or
Right-Shft+//
scroll the contents of a window up, down, left and right.
PgUp, PgDn shift the view of the window up or down by one page. Note, shifting the view of a window up by one page(PgUp) is the same as scrolling the contents of the screen down by one page.
Home put cursor at top of window (line 1, column 1).
End put cursor below last line of text in window and in column 1.
KeyPad 0..9 change between windows 0 through 9, respectively (NumLock turned off).
Ctrl+KeyPad 0..9 access windows 10 to 19, respectively (NumLock turned off).
Alt+KeyPad 0..9 access windows 20 to 29, respectively (NumLock turned off).
KeyPad • toggle between current and previous windows. Shft+Esc (for LapTops) will do this also.

The mouse

Dmuse developed initially as a keyboard only interface, with the mouse being added much later. So the mouse does not do many of the things most users expect. This section describes what the mouse does do; the next section describes some of the keystrokes that provide the functionality you would expect from a mouse (but do not get with Dmuse).

  • Across the bottom frame of Dmuse you will see the numbers 0 to 29. Click on one of these to change to that window. There is also a question mark on that frame. Click on that and you will get a summary description of what is in each of the windows (since it is sometimes hard to remember what you have put where).
  • Click on the word "Window" in the top frame to toggle between windows (same as KeyPad .). Click anywhere else in the top frame to call up the resident file manager.
  • Along the right frame is something that looks like a scroll bar. It is not a real scroll bar, but you can click in different places along the "track" to shift the view to different places in the window. The real purpose of the pseudo scroll bar is to show you approximately where you are in a window. It is not uncommon for a window to contain thousands of lines, and in this case you would like to know if you are somewhere near the top or near the bottom of a window. At the right-hand side of the top frame are two numbers representing the current position of the cursor in the window: line number and column number.
  • If you activate the resident file manager (F4), the mouse can be used to select various commands for this sub-program.
  • Finally, if you click anywhere in the main screen, the cursor will go there.

Keystrokes that highlight, and what you can do with highlighted material.

With many programs the mouse is used to highlight text. This requires the "hold and drag" motion of the mouse, something Dmuse does not currently do. Instead, Dmuse has the following keystrokes to highlight areas of the window. In Dmuse, there are two kinds of highlight: box highlight and line highlight.

Box highlighting commands

Key sequence Description
Left-Shft+/// box highlight a region of the window, moving from the current cursor position to the left, up, down, or right.
Ctrl+Shft+/// move box selection around in the window. After contents have been moved, any other keystroke will deposit content of the box in its new location, overwriting whatever was there on the screen.
Ctrl+Insert load contents of box into the "box buffer." There is only one box buffer, so whatever was previously in the box buffer will be replaced.
Shft+Insert copy contents of box buffer to the screen at cursor location. The box buffer is universal to all Dmuse windows, so you can use the box buffer to copy material from one window to another. Copying from the box buffer does not change the contents of the buffer.
Delete delete window region covered by the highlight. Anything to the right of deleted material moves left.
- or _ draw single or double line around the edge of the box. You can use this facility to build up complicated line patterns and templates.
~ used with the box highlight, the tilde key will remove any line characters around the edge of the highlighted area.
t if highlighting a column of numbers, calculates the sum and places the total underneath highlighted region.
a if highlighting two columns of numbers side by side, gives a third column which is the row-by-row sum. Be sure your highlight includes space for the third column of numbers.
s similar to a but gives a third column which is the difference between the two highlighted columns. If your columns contain commas, you will get commas in your answer; and if one of your numbers has a dollar sign, you will get a dollar sign in your answer. (works with pounds and yen, too).

Line highlighting commands

The second type of highlight is the line highlight. The line buffer does not work like the box buffer. It is a last-in, first-out trash heap. And its size is limited only by the size of your disk! The line buffer works across all windows, so you can use this feature to move material between windows.

Key sequence Description
Left-Shft+/ Start/adjust a line highlight selection range, one line up or down. Cursor must be positioned at starting line of selection.
Left-Shft+PgDn/PgUp Start/adjust a line highlight selection range, one page up or down. Cursor must be positioned at starting line of selection.
Delete Delete highlighted lines from the window.
Insert Copy highlighted lines (they are not deleted, and highlighting is removed from lines).
Shft+Alt+Insert Retrieve the last "block" of lines placed into the line buffer, whatever number of lines that was, and insert them into your current window just above the cursor. If Shft+Alt+Insert is used more than once, it will continue to retrieve lines from the line buffer (trash heap), but only one line at a time.
Ctrl+Shft+Insert Similar to the previous command, but will copy instead of retrieve lines from the line buffer. You can use Ctrl+Shft+Insert multiple times to copy the same group over and over again.
Alt+Delete Delete a line to the trash heap without using the line highlight.
Shft+Alt+Delete Copies a line to the trash heap but does not delete it. Instead the cursor moves down one line. Holding down Left-Shft+Alt and pushing Delete several times will copy serveral lines (one at a time) to the trash heap. Holding down Left-Shft+Alt and pushing Delete and Insert in alternation will copy the same line over and over again.

Note: We normally use the line highlight method to delete or copy lines. Not only does this allow groups of lines to be deleted/copied, but also for safety reasons it is helpful to see what you are deleting before it is deleted. Note also that all lines deleted in this way can always be recovered at least once. The trash heap never goes away, but the top layer can be removed. There are two other commands that delete lines (covered below), which do not put deleted material on the trash heap. Material delete by those commands goes away completely (from the window, anyway).

Loading and storing files.

Key sequence Description
KeyPad + load a file to the current window, at the line the cursor is currently on.
Shft+KeyPad + store contents of the current window (the entire contents) to a file.

It is very important to make a distinction between the contents of a window and the contents of a file that might have the source for that window. First of all, any changes to the contents of the window are NOT reflected in the file unless and until the window is stored back to the file. Second, if a file is loaded into a window anywhere below the top line, the window and the file will be different right away. Dmuse provides a flag in the top frame, which signals when the contents of a window is different from the file which was its source (if there was one). If a file is loaded into a window (at any location), the top frame contains the name of the source file. If a window was not loaded from a file, no source is specified.

When you type KeyPad +, you will be asked for the name of the file to load. If you respond with $, you will be asked for the name again, and the file will be displayed as a Hex dump (handy for looking as such things as MIDI files). If a file is loaded as a Hex dump, the contents of the window do not match the contents of the file. You therefore do NOT want to store the window back to the file which was its source. To prevent this error from happening, a "read-protect" lock is put on the window. The word "Window" at the left of the top frame turns Blue. This way, the window cannot be "read" back to any file. You can toggle the read-protect flag using a command from the menu invoked by the Ctrl+F10 keystroke. If you totally clear a window, the read-protect flag automatically goes off.

When you type Shft+KeyPad +, you will be asked for the name of the file to which the window is to be stored. If you enter $, the window will be stored back to the file from which it was last loaded (as noted in the top frame). When a window is stored to a file, the contents of the window and the file are the same, and the "difference flag" in the top frame goes off.

You can load one window from another by typing KeyPad + and then giving "*<number>" as the name of the file to load, <number> being the number of the source window. A window loaded in this way has no "source" per se.

There are two mouse shortcuts to loading and storing windows. Under the "File" title, "Load" has the same effect as KeyPad +. "Save" has the same effect as the combination Shft+KeyPad + followed by the dollar sign. In other words, it can only save the window back to its source, not to another file.

Clearing a window

Key sequence Description
KeyPad - clear only the current line to the right of cursor.
Shft+KeyPad - clear a window to the right and below the cursor.

Material cleared in this way cannot be retrieved. Clearing a window has NO EFFECT on files. The source file, if there be one, is unaffected.

Menu sequence Description
File→Clear move the cursor to Home (line 1, column 1) and clear the window (Shft+KeyPad -)

Searching a window

Key sequence Description
KeyPad / search for a string in the current window. You will be prompted for the search string. If you type , you will be presented with a choice of the last 10 search strings you have entered. This allows you to redo former searches without having to retype the string.
F11 repeat the search starting at current cursor position, going forward in the window.
F12 repeat the search starting at current cursor position, going backward in the window.

What else?

Key sequence Description
Insert toggles between insert and overstrike mode. A plus sign (+) appears in the top frame when you are in insert mode.
Delete delete character; move the rest of the line one column to the left.
← Backspace back the cursor up one column and replace whatever is there with a "space".
Alt+ move the cursor one word to the left. If there are no more words to the left, the cursor will jump back a line to the last word on that line.
Alt+ move the cursor one word to the right. If there are no more words to the right, the cursor will jump to the first word on the next line.
Return put the cursor at the beginning of the next line. This requires some discussion. On many text processors, the text is stored as a stream of characters, and the <return> character signals the end of a paragraph. Dmuse treats each line on the screen as a separate record. When a window is stored to a file, a <return><line-feed> character combination is attached automatically to the end of each line. When a file is loaded to a window, these "record delimiter" characters are simply removed and each record appears on a new line.

Now a word about "record delimiters" for you Linux users. The use of the character combination <return><line-feed> as a record delimiter originated with IBM computers, and was adopted early on by Microsoft. Linux grew out of the old AT&T Unix system, which used only the <line-feed> character as a record delimiter. Linux recognizes both systems, but some Linux applications (some versions of makefiles for example), still expect to see only the <line-feed> character, and will treat the <return> character as part of the text of a line. Being able to handle both systems is therefore a priority. Dmuse provides a way to do this. If you load a file that uses only the <line-feed> character as a record delimiter, a flag will appear in the right-hand portion of the top frame. If you later store this file, it will be stored using only the <line-feed> character as a delimiter. You can toggle the delimiter flag using the keysrokes Ctrl+Shft+KeyPad *. When the flag is off, the record delimiter will revert to <return><line-feed>. Thus you can load a file in one format, and store it in another.

Key sequence Description
Left-Shft+Return puts an actual carriage-return character at the end of the line and puts the cursor on the next line.
Alt+Return puts the cursor on the next line and below the first (non-blank) character in the previous line
Tab moves the cursor to the next tab or to the next line.
Left-Shft+Tab moves the cursor backward to the previous tab or to the last tab on the previous line.
Ctrl+Tab sets (or removes) a tab position at the cursor location.
Left-Shft+Ctrl+Tab removes all tabs
F10 Toggle button to see where tabs are set.

Tabs also require some discussion. In some Linux applications (again, makefiles are an example), the Tab character is an important delimiter. It must be present for the file to be read properly. When Dmuse loads a file, it treats the Tab character like a text character. Yes, the Tab has its own character in Dmuse, which can be entered by typing Shft+Alt+0. This means two things: (1) the Tab is not expanded, and (2) such files can be edited correctly by Dmuse. If you want the Tab expanded, you need to use the command Ctrl+KeyPad + to load the file. But use caution here. In expanding the Tab character, you may lose it. Or you may lose space characters before a Tab. When in doubt, for files like this, we recommend using another editor entirely.

Wordwrap

Most text processors use wordwrap automatically. In fact, you cannot disable wordwrap on most text processors. You cannot put the cursor beyond the end of a line, because the line, itself, is not a separate entity. Wordwrap has meaning only when there are right and left margins. For most text processors, these margins are the right and left limits of the window you are typing in. Change the horizontal size and you change the margins .

Dmuse has wordwrap as an advanced feature. But, as you can imagine, this can only work within limits. The first limits are the margins, themselves. Wordwrap works only when the cursor is between the legal margins. When the cursor is outside the margins, you can still type text, but whatever you type might disappear if the margins are changed, so be careful.

Toggle with F10 to see where the margins are set. Left-Shft+Alt+/ will move the left margin. Right-Shft+Alt+/ will move the right margin. Ctrl+Shft+/ will move both margins simultaneously. The default action is for margins to move only for the paragraph the cursor is in. You can change this default using choices from the menu invoked by Ctrl+F10.

Dmuse is initially provided with wordwrap disabled. You can activate it using a command from the F9 menu. When wordwrap is enabled, KeyPad * toggles it on and off. When wordwrap is "on," you will see the wordwrap flag [W] on the right-hand side of the top frame. We rarely work with wordwrap on, but we do use it to reformat (change the horizontal size of) paragraphs.


Key sequence Description
F10 Toggle view of margins.
The following commands will only work if the text does not exceed the right margin. These commands will work even when wordwrap is off. A text block is a set of lines which all have text starting at the left margin.
Ctrl+p Reformat sentences which are in a text block selected by the cursor into a paragraph.
Ctrl+s Reformat paragraph which is selected by the cursor into a text block of sentences, each sentence starting at the beginning of the line (and wrapping at the right margin if longer than one line). Sentences boundaries are defined by a period (.) followed by two spaces. Grammatical sentences ending in question marks (?) or exclamation marks (!) will not be treated as sentences by this command. Sentences ending at the right margin must have two spaces after the period in order for this command to work properly.

When wordwrap is on, the keystrokes Return, Insert and Delete behave differently. This difference is documented in the "Advanced Topics" choice under the "Help" menu in the top frame of the Dmuse screen, and will not be discussed here.

Connect mode

Dmuse starts out as a simple screen editor. You can activate the connect mode feature by using a command from the F9 menu. Once you activate this feature, it stays activated for all future Dmuse sessions until you deactivate it.

The Shft+KeyPad * keystroke toggles connect mode. When you enter connect mode, Dmuse responds with the message, "Ready for program," and the connect mode flag [*] comes on in the top frame. Connect mode is window dependent, that is, each window has its own connect mode state.

When a window is in connect mode, you can type anything you want and put the cursor anywhere you want. Nothing happens until you type Return. When you do that, Dmuse reads whatever is on that line, regardless of how it got there, and sends this to the connect portion of the program. The program at this point expects one of three things:

  1. the name of a specified program that you want to run. This must be a Zbex program, and it must be in a pre-specified library (see the page describing the init file for how to do this).
  2. the command "zz" which invokes the Zbex compiler and interpreter (see the section of Running zbex programs for how this works).
  3. "&&" followed directly by a bash-shell command. For a limited number of commands, this will direct the command to the operating system, with the output from the command being direct back to the Dmuse window you are in. This works especially well for commands like "man", since you can easily scroll through the entire output, and even grab portions of it to put in other windows -- even make your own documentation files.

The most important point here, and what makes Dmuse different from most other interfaces, is that it doesn't matter how or when something got put on the screen. If you type return, the entire line gets read and sent to the program. The Zbex language has an instruction, getc, which works the same way. When executing a getc, Zbex waits -- does not listen to what you type -- does not care if you change windows, insert or delete lines, move the cursor, whatever. It simple waits for you to type Return, and when you do, it reads the line the cursor is currently on and sends this to the program.

Keyboard command list in Dmuse

Dmuse has a utility called "Keystrokes" which can be called either from the "Help" menu or with the keystroke command Ctrl+F1. Once you enter this utility, each key you press on your computer keyboard returns a complete description of what that keystroke does, including all combinations with Shft, Ctrl, and Alt. The only way to exit this utility is to push Esc twice. Listed below are some of the most important and useful keystrokes.

The Escape and Function Keys

Key sequence Description
Esc Open dialog box for extended keystrokes. This is mainly for Laptops, where the keyboard does not include the KeyPad. Esc is also used to exit from various dialog boxes and sub-programs.
Shft+Esc Toggle between the current window and the previous window.
Ctrl+Esc (on the Macintosh) = Ctrl+Break (PC-Linux).
Shft+Ctrl+Esc (on the Macintosh) = Shft+PrtSc (PC-Linux).
F1 Introduction to help.
Shft+F1 Toggle between the current window and the Help window. The Help window must first be loaded from the Help menu.
Ctrl+F1 Editor Keystrokes utility.
F2 Activate the top panel with the five pull-down menus. Once the panel is activated, the cursor arrows, , , , , can be used to move between choices. Make a choice with Enter. Esc will exit the panel. The mouse can also be used to activate the panel and make a choice.
Ctrl+Shft+F2 Exit Dmuse.
Shft+F2 Store the state of Dmuse in a personal default file and then exit Dmuse.
Ctrl+F2 Store the state of Dmuse in a project file you specify and then exit Dmuse.
F3 Move the cursor to a specified line number in the current window.
Ctrl+F3 Check window data structure. If for some reason you think Dmuse is behaving badly, use this command. If the data structure is corrupted, Dmuse will tell you and will try to fix itself. For safety reasons, you should then save important work and exit Dmuse. Note: Dmuse is quite stable, but ... well, as they say in Islam, only Allah is perfect.
F4 Activate the resident file manager.
F5 to F8 These function keys control screen display colors. There are 16 possible combinations of foreground and background colors in Dmuse. These can be referenced by the four function keys, F5, F6, F7, and F8 in their unaltered, Shft, Ctrl, and Ctrl+Shft states. In normal typing mode, if you push, say Ctrl+F6, everything you then type (in the current window) will appear in color combination 10. Each window keeps track of its own current color combination. The 16 possible combinations are specified in your init file (read by Dmuse when it first starts up). If you have used the Shft arrow keys to highlight a (box) section of the screen, then pushing, say Ctrl+F6, will switch that area of the screen to color combination 10 (normal typing is not changed). By convention F5 switches to the default color combination.
F9 Change global parameters.
F10 Toggle the margin display panel.
Ctrl+F10 Change display parameters for this window.
F11 Search forward (to the right and then down) in the current window for the next occurance of the search string.
F12 Search backward (to the left and then up) in the current window for a previous occurance of the search string.
Shft+F12 Save the current state of Dmuse in a personal default file, but don't exit Dmuse.
Ctrl+F12 Save the current state of Dmuse in a project file you specify, but don't exit Dmuse.

The Sidebar Keys

Key sequence Description
Shft+PrtSc Format the contents of the current window for printing on an HP printer, or any printer that speaks PCL-3 or one of its derivative languages.
Ctrl+Break Send the Break message to a Zbex program.
Insert (1) If a line highlight is present, Insert adds the highlighted lines to the line buffer (trash heap). The line buffer grows larger by this number of lines. (2) Otherwise, Insert toggles the editor between insert mode and overstrike mode.
Alt+Insert Insert blank line. Insert an empty line above the line the cursor is currently on.
Shft+Insert Copy the box (or stream) buffer to the screen. Insert the contents of the box buffer (if wordwrap = off) or the contents of the stream buffer (if wordwrap = on) at the point of the cursor. The contents of these buffers is not changed.
Ctrl+Insert Copy the box (or stream) highlight to its buffer. If the box highlight or the stream highlight is present (set by the Shft arrow keys), copy the contents to the appropriate buffer.
Shft+Alt+Insert Transfer lines from the line buffer to the screen. Remove the line or lines most recently placed in the line buffer and insert them in the current window above the line the cursor is on.
Ctrl+Shft+Insert Copy lines from the line buffer to the screen. Insert the line or lines most recently place in the line buffer into the current window just above the line the cursor is on. The line buffer is unchanged.
Delete (1) If material is highlighted, delete material. If lines are highlighted, Delete removes the highlighted lines from the window and adds them to the line buffer. If the stream highlight is on (wordwrap = on), Delete removes the highlighted stream from the window and reformats the remaining portion of the window. If the box highlight is on (wordwrap = off), Delete removes the material in the highlighted box and shifts the material on the right of the box leftward to fill the space. (2) Otherwise, delete the character above the cursor. The current line to the right of the cursor moves left by one column.
Alt+Delete Delete line. Remove the line the cursor is currently on and add it to the line buffer (trash heap).
Shft+Alt+Delete Add the line the cursor is currently on to the line buffer and move the cursor down one line.
Ctrl+Delete If material is highlighted as a box highlight or a stream highlight, delete this material in the same manner as Delete, and also place the deleted material in the box or stream buffer. The former contents of the box or stream buffer is overwritten.
Home put the cursor at the top of the window (line 1, column 1).
End put the cursor below the last line of text in the window and in column 1.
PgUp Shift the screen view of the window up one page.
Shft+PgUp If the line highlight has been started, remove 24 lines from the line highlight and scroll down 24 lines if necessary to keep the highlighted text in view. If there is less than 24 lines in the line highlight to begin with, all highlighted lines will be removed, and the highlight will disappear. This works with box highlights, too, but not with wordwrap on.
PgDn Shift the screen view of the window down one page.
Shft+PgDn Add 24 lines of line highlight and scroll up 24 lines if necessary to keep highlighted text in view. Works on box highlights, too, but not with wordwrap on.
Move the cursor in the direction of the arrow. Do not scroll the window up or down; vertical cursor travel is circular. Horizontal travel is not. The cursor can move to the right up to column 960, and the screen will scroll so as to always show the cursor. When the screen scrolls to the left, a "fence" appears in column 11 and the first 10 columns stay fixed. This way you can always see the beginning of the line you are on, even when the cursor is far to the right.
Left-Shft arrow keys create a box (wordwrap=off) or a stream (wordwrap=on) highlight.
Ctrl arrow keys Scroll the contents of the screen in the direction of the arrow. Since some Laptop keyboards do not have a Right-Ctrl button, Right-Shft arrow keys will also scroll the contents of the screen. This way, scrolling can always be done with the right hand alone.
Alt+ Move the cursor one word to the left, or to the last word on the previous line.
Alt+ Move the cursor one word to the right, or to the first word on the next line.
Left-Shft+Alt+/ Move the left margin to the right or left.
Right-Shft+Alt+/ Move the right margin to the right or left.
Shft+Alt+ Copy the line the cursor is on to the line buffer and move the cursor down one line.
Ctrl+Sft+/ Move both margins simultaneously to the right or left.

The KeyPad Keys

Key sequence Description
KeyPad 0..9 Change to window 0 through 9, respectively.
Ctrl+KeyPad 0..9 Change to window 10 through 19, respectively.
Alt+KeyPad 0..9 Change to window 20 through 29, respectively.
Window change can also be accomplished by clicking with the mouse on one of the numbers in the bottom frame. The extended keystrokes (activated by Esc) also contain commands for changing windows.
KeyPad . Toggle between the current window and the previous window. Shft+Esc does this also.
KeyPad / Initiate a search for a string pattern in the current window. You will be prompted to enter the string pattern. The search is conducted forward (to the left and then down). If you press ,a box will appear showing the last ten searches that you conducted. You may choose a search string from this list. (see also F11 and F12)
KeyPad * Toggle Wordwrap. Most screen editing is done with wordwrap = off. The wordwrap feature can cause strange things to happen to the contents of a window if it is not used properly. For this reason, wordwrap is considered an advanced feature and is disabled at the time Dmuse is first installed. The F9 function key provides a means for enabling the wordwrap feature.
Shft+KeyPad * Toggle Connect mode. The Dmuse environment includes an applications programming language called Zbex. With connect mode = on, a window behaves like a Terminal connected to the computer. Zbex programs can be started with the "zz" command. All features of the editor (except wordwrap) continue to operate. When you press Enter, the computer reads the entire line that the cursor is on. No distinction is made between text that you may have typed and text written by the computer. Connect mode is disabled at the time Dmuse is first installed. The F9 function key provides a means for enabling connect mode.
Ctrl+Shft+KeyPad * Toggle File Format flag. Text files in Linux and Microsoft Windows differ in one respect. Microsoft Windows uses the two-byte pattern, carriage-return(ASCII-13) + new-line(ASCII-10), to mark the end of a record, whereas Linux uses only the new-line(ASCII-10) byte. The default with Dmuse is the two-byte pattern, but if a Linux type file is loaded into a window, Dmuse sets a flag (on the right-hand side of the top frame), showing that this file used the single byte delimiter. If this flag is set when the file is written back to the disk, it will be written in the Linux format. Ctrl+Shft+KeyPad * allows the user to toggle this flag.
KeyPad - Delete the character above the cursor and all characters to the right of the cursor on the current line. (Clear line at and to the right of the cursor.)
Shft+KeyPad - Delete the character above the cursor and all characters to the right of the cursor on the current line. Also delete all lines below the cursor. (Clear screen at and below the cursor.)
KeyPad + Load file into window. The load point in the window will be at the line the cursor is currently on. If the cursor is not at the top of the window, the contents of the window will not match the contents of the file. Dmuse will ask you for the name of the file you want to load. If you enter $, the file will be loaded in hexadecimal notation. Also, if Dmuse thinks the file is not an ordinary text file, it will automatically give you the choice of seeing the file as characters or in hexadecimal notation.
Shft+KeyPad + Store the contents of the current window in a file. Dmuse will ask you for the name of the output file. If you enter $ and if the window was originally loaded from a file, Dmuse will overwrite (update) the source file with the contents of the window.

The Main Keyboard; Special Keystrokes

Key sequence Description
Alt used with the numbers 1 ... 9 These keystrokes are used to add or change diacritical marks over letters. They can be used in two ways. If you just typed a letter, such as an "e", which needs an acute accent, you can type Alt+7 and an acute will appear above the "e", even though the cursor has moved to the next column. Or if you later want to change that acute to a grave, you put the cursor under the "é" and type Alt+8, and the acute will be replaced by a grave.
Alt+1 Adds a tilde to the letters n (ñ) and o (õ).
Alt+2 Adds a cedilla to c (ç); add a slash to o (ø); change s to German ss (ß).
Alt+3 Adds an umlaut to letters a, e, i, o, u, and y: ä, ë, ï, ö, ü, ÿ.
Alt+4 Adds a circle above letter a (å).
Alt+5 Adds a caron above the letters r (ř) and s (š).
Alt+6 Removes accent or alteration from a letter.
Alt+7 Adds an acute accent to letters a, e, i, o, u, and y: á, é, í, ó, ú, ý.
Alt+8 Adds a grave accent to letters a, e, i, o,and u: à, è, ì, ò, ù.
Alt+9 Adds circumflex to letters a, e, i, o, and u: â, ê, î, ô, û.
Shft+Alt+0 Vertical dotted line (used to represent tab character).
- Dash character. Also draws a single line around the edge of a box highlight.
= Equals character. Also draws a double line around the edge of a box highlight.
← Backspace Move cursor left one column and place a blank above the cursor.
Shft+← Backspace Move cursor to the left margin.
Tab Move the cursor to the next tab on the right or move the cursor to the beginning of the next line.
Left-Shft+Tab Move the cursor to the previous tab on the left or move the cursor to the last tab on the previous line.
Ctrl+Tab Toggle the tab marker at the position of the cursor.
Left-Shft+Ctrl+Tab Clear all tab markers for this window.
Right-Shft+Tab Same as Tab , but proceed in "backup" mode. In backup mode, the cursor does not move, and as characters are typed, space is made for them by backing up characters previously typed while in this mode. Backup mode is terminated with the period (decimal) or the <space> bar. The terminating character is displayed one position to the right, and the cursor now moves forward in normal fashion. Backup mode has many uses but its primary purpose is for entering columns of numbers.
Right-Shft+Ctrl+Tab Same as Left-Shft+Tab , but proceed in "backup" mode.
Enter (with wordwrap off) Move the cursor to the left margin and down one line.
Enter (with WW on) Break line. Insert a blank line below the current line. Move the right half of the current line (starting at the cursor) to the new line starting at the left margin. Move the cursor to the beginning of the new line.
Ctrl+Return with WW off Break line, as with wordwrap on.
Enter (connect mode) Send the entire line the cursor is on to the program running in the current window. Move the cursor to the beginning of the next line.
The following special characters are available in Dmuse. These are represented internally by byte values that lie outside the standard ASCII range of 32 to 127. So, if they are written to a file and that file is read by another program, other characters may appear in their place.
Alt+o/p/[/] shaded cells: one-quarter/one-half/three-quarters/full shade.
Alt+L/;/,/. full shade on a half cell: upper half/ lower half/left half/right half.
Shft+Alt+9 Centered dot.
Ctrl+Shft+[ Small centered box.
Ctrl+Shft+] Small centered dot.
Ctrl+Shft+D Centered diamond.
Ctrl+Shft+Z House character.
Ctrl+Shft+I/J/P/Q Large arrow head pointing up/down/right/left.
Ctrl+Shft+X/Y/M/N Small arrow up/down/right/left.
Ctrl+Shft+E/F Top/bottom of large open parenthesis.
Ctrl+Shft+G/H Top/bottom of large close parenthesis.
Ctrl+Shft+R Small square root.
Ctrl+Shft+S Top of square root.
Ctrl+Shft+W Part of a large square root.
Ctrl+Shft+V Part of a large square root.
Ctrl+Shft+A/B/C Musical sharp (), flat (), and natural ().
Dmuse also provides access to the full compliment of line drawing characters. The nine keystrokes in the block Alt (qwe,asd,zxc) together with Alt+r and Alt+t can be used to draw single line boxes and other single line diagrams; likewise, the nine keystrokes in the block Alt (tyu,ghj,bnm) together with Alt+i and Alt+k can be used to draw double line boxes and other double line diagrams. Shft+Alt with these combinations draws the mixtures (i.e., horizontal-single, vertical-double, and vise versa). You simply need to experiment with these to understand how they work. The best way to draw lines and boxes is to use the box highlight and the - and = keystrokes, as described above. Single and Double line boxes can overlap, which explains the need for the mixture characters.
Key sequence goes here Description goes here.
Last sequence Last description.