The main window must have the keyboard focus in order for Xic to receive keyboard input. Under some window managers, including under Windows, the frame of the main window can be clicked on to give that window the focus, and the focus will remain with that window regardless of the location of the pointer. In other cases, the pointer must be in the main window in order to give the main window the focus.
If a command is active that is prompting for input, the keystrokes will appear on the prompt line, the key press display will be replaced with buttons, and the prompt line background will appear in a lighter color. See 3.1.1 for a description of the key bindings that are in force while in editing mode.
If not in editing mode, the characters will be added to the buffer displayed in the keys area. After each character is added to the buffer, the buffer is compared with all menu command names, and if the buffer uniquely matches the first characters of a menu button name, that button will be activated. Only a few characters can be saved in the buffer, and after the buffer is full, keystrokes will be ignored. The buffer can be cleared with Ctrl-u (hold the Ctrl key and press u). The buffer is also cleared after each command match, although the display will show the full name of the command. The Backspace key will delete the last character entered. There are other accelerators for most menu commands.
The `!' character will switch the prompt line to editing mode to solicit one of the text-mode commands. The `?' character will switch the prompt line to editing mode to obtain a help keyword or directive. There are many other keys with special significance to Xic, summarized in the table below. These keys should be memorized by the user, as there is no alternative way to invoke their function.
Character | Result |
---|---|
! | Enter text-mode command |
? | Enter help keyword, URL, or path to image or HTML file |
Esc | Exit current command, or deselect selections |
Tab | Undo operation |
Shift-Tab | Redo last undone operation |
Delete | Delete selected objects |
Forward Slash | Swap current transform with saved (Register 0) transform value. |
Arrow Keys | Pan |
Shift-Arrow Keys | Fine pan |
Ctrl-Arrow Keys | Cycle rotation and mirror transformations |
Numeric + | Zoom in, expand by 2 |
Shift-Numeric + | Zoom in by 10 percent |
Numeric - | Zoom out, shrink by 2 |
Shift-Numeric - | Zoom out by 10 percent |
Home | Center full view cell |
Page Down | Show next DRC error in Show Errors command |
Page Up | Show previous DRC error in Show Errors command |
Ctrl-a | Select associated labels |
Ctrl-c | Interrupt |
Ctrl-e | Enter coordinate |
Ctrl-g | Change grid |
Ctrl-k | Delete-to-end when editing |
Ctrl-n | Save view |
Ctrl-p | Deselect associated labels |
Ctrl-r | Redraw window |
Ctrl-u | Clear input buffer |
Ctrl-v | Print program version |
Ctrl-x | Expand cells |
Ctrl-z | Iconfiy |
Just as the `!' character switches the prompt line to editing mode to accept a command (see 19, the `?' character will switch to editing mode, to accept a ``help directive''.
A ``help directive'' can be one of the following:
Character | Result |
---|---|
!, b, B | Giving exactly one of these characters will print a listing of the `!' commands that are available in the program. |
v, V | Giving exactly one of these characters will print a listing of the variable names that have significance within the program. Variables are listed whether or not the variable is actually set. |
s, S | Giving exactly one of these characters will print a list of variables that are currently set, the same as the !set command without arguments. |
f, F | Giving exactly one of these characters will print a list of all of the internal script interface functions available within the program. |
Each listing will provide the listed items as colored links. Clicking on the links will pop up help about the item.
The Xic program is modular, and the XicII and Xiv virtual programs are effectively Xic with only a subset of modules. The listings provide definitive summaries of the functions and variables actually available in the feature set, in case this is not clear from the documentation.
The Esc (Escape) key terminates any command and clears the key press buffer. Many commands can also be terminated by pressing the command button a second time, or by selecting a new command. After pressing Esc, the mode listed in the status area should be ``MAIN''.
If pressed in idle mode, all selected objects will be deselected.
The Tab key performs an Undo command, which will undo the last operation, and has the same effect as pressing the Undo button in the Modify Menu. Pressing the Shift key along with the Tab key will instead redo the last undone operation, which is the same as pressing the Redo button in the Modify Menu.
Pressing the Delete key will delete any objects currently selected. Objects in a drawing can be selected with button 1 operations (see 3.6.1). This has the same effect as the Delete button in the Modify Menu. If the Rulers button in the View Menu is active, the Delete key will delete rulers and not other objects.
Outside of any command, pressing the forward slash `/' key will swap the current transform with the saved transform in Register 0, if any. The saved transform is the one in force for the last move or copy operation. The current transform is also saved when terminating a Move, Copy, or Place command.
Without the Ctrl or Shift keys pressed, the arrow keys will pan the display in the drawing window which contains the pointer by one-half screen in the direction of the arrow. If Shift (but not Ctrl)is held while pressing the arrow keys, the display will instead pan by ten percent. Panning can also be performed with the middle mouse button (button 2), and with the mouse wheel.
Holding Ctrl (but not Shift) while pressing the left and right arrow keys will cycle the current rotation setting, otherwise set with the xform command in the side menu. This affects moved and copied objects and new instances.
Holding Ctrl (but not Shift) while pressing the up arrow key will toggle the current Reflect Y state of the Current Transform.
Holding Ctrl (but not Shift) while pressing the down arrow key will toggle the current Reflect X state of the Current Transform.
Holding both Shift and Ctrl while pressing the left or right arrow keys will cycle through the previous views in the window which has keyboard focus. This is similar to the prev and next menu commands in the View command of the View Menu. The last five views of a cell are saved.
Holding both Shift and Ctrl while pressing the up or down arrow keys will increment or decrement the subcell expansion depth, as if giving a `+ ' or `- ' to the Expand pop-up, affecting the drawing window that has the keyboard focus.
The arrow keys may have special functions in individual commands, which override the behavior above. This is noted in the descriptions of the commands.
The + and - keys in the numeric keypad area will zoom the display in or out by a factor of two, respectively, in the drawing window where the pointer was located at the time of the key press. The action is similar to the Zoom command in the View Menu, and the button 3 operations. On some systems, these keys must be defined using the mapping facility provided by the Key Map button in the Attributes Menu.
If the Shift key is held while pressing the numeric keypad + /- keys, the zoomin/zoomout factor is reduced to 10%.
Pressing the Home key will center and fully display the current cell, in the window where the pointer was located at the time of the key press. This can also be done with the View command. On some systems, this key must be mapped with the Key Map command in the Attributes Menu in order for this functionality to be available.
The Page Up and Page Down keys are used with the Show Errors command in the DRC Menu. Page Down will show the first and subsequent errors. Page Up will show the previous error(s). Pressing Ctrl-f will have a similar effect to Page Down, and either Ctrl-b or Ctrl-p will simulate a Page Up press. On some systems, the Page Up and Page Down keys must be mapped using the Key Map command in the Attributes Menu.
The command line interface through the prompt area provides an interface to operating system commands, as well as to a number of internal commands which are often rather specialized and not associated with a menu button. Each of these commands starts with an exclamation point (`!'), and may be entered when no other command is active, or inside of many commands. These key presses are not recorded in the ``keys'' area below the side menu. If the command entered matches one of the internal commands, that command is executed. Otherwise, an operating system shell and associated window is produced to execute the command, with the exclamation mark stripped. If the `!' is followed immediately by Enter, an interactive subshell window is brought up. See Chapter 19 for a listing of the `!' commands.
The keyboard function keys, usually labeled F1 - F12, can be mapped by the user to provide an alternate means of pressing buttons in the menus. The mappings are added to the technology file with a text editor, following the syntax described in A. These mappings are completely up to the user to define, and no default mapping is installed (though the supplied technology file contains a mapping).
There are several control characters (characters entered while holding the Ctrl key) which perform operations in Xic. These are hard coded, and are in addition to any accelerators listed in the drop-down menus from the main toolbar. These are also in addition to accelerators from pop-up windows that have accelerators in their menus. These control keys supersede a menu accelerator using the same key.
When entering text to the prompt area, Ctrl-a will move the cursor to the beginning of the line.
Under Microsoft Windows, pressing the Pause/Break key also sends an interrupt signal if Xic has the keyboard focus.
When the ``wait'' cursor is active when the mouse pointer is in a drawing window, Xic is ``busy''. When busy, Xic locks out all key press events except for Ctrl-c, and most mouse button events. If a locked-out event is received, a pop-up will appear that informs the user that Xic is busy and to use Ctrl-c to abort the operation. This pop-up will disappear after three seconds (trying to destroy it with the mouse won't work).
When Xic is busy and Ctrl-c is pressed, the operation may be paused, and the user is asked (on the prompt line) whether to abort or continue. While waiting for input, most buttons are desensitized. Those that are not are the Help Menu, View/Allocation, and Attributes/Main Window/Freeze. Thus, these features are available during the pause.
All other events are dispatched normally while busy, so that visual updates should happen fairly quickly. Unlike early releases, there is no attempt to save unhandled events and handle them later.
When editing a string on the prompt line, Ctrl-e will move the cursor to the end of the string.
Pressing Ctrl-p is equivalent to pressing the Page Up key when the DRC Show Errors command is active.
Finally, the Shift and Ctrl keys are often used in conjunction with the pointer buttons to initiate new operations or modify current operations. The sections describing the commands will provide examples.