Command Summary

This section has a list of all of the commands that can be configured to be invoked from the keyboard or the mouse, and what they do. If you have read the section on the plugin architecture, this more specific description may be useful: this section lists all Factories in the KeyboardMouseAction protocol.

Ideally there would be a way to include documentation with plugins, and some command in Fungimol would give the documentation to the user. This has not been implemented yet. It is possible to get Fungimol to list all of the commands that belong in this section, but no documentation exists outside of this web page and the source code. Instructions for getting Fungimol to list all of the Factories in the KeyboardMouseAction protocol are in the section on exploring the keyboard commands.

AnyCommand
Can be configured to run any command. This is most useful when used with ConfigureAndRun, below. Meta-semicolon is bound to ConfigureAndRun wrapped around AnyCommand.
AnyFileSceneLoader
Look at the part of a filename after the dot, and configure run another Action based on that part of the filename to load the file. For example, if the filename is foo.pdb, we'll configure and run PDBSceneLoader. Control-R is bound to ConfigureAndRun wrapped around AnyFileSceneLoader.
AnyFileSceneWriter
Like AnyFileSceneLoader, except it writes files. If the file is named foo.pdb, we'll configure and run PDBSceneWriter. Control-S is bound to ConfigureAndRun wrapped around AnyFileSceneWriter.
AnyMouseTrackball
Interpret mouse motion as virtual trackball motion, and pass the implied Transforms to a configured TransformAction. Control-middle-mouse is bound to this wrapped around TransformWorldMove. Control-right-mouse is bound to this wrapped around TransformSelectionRHScreen.
AnyMouseXYZMove
Interpret mouse motion as translation in X, Y, and Z screen coordinates, and pass the implied Transforms to a configured TransformAction. Left-mouse and shift-left-mouse are bound to this wrapped around TransformWorldMove. RIght-mouse and shift-right-mouse are bound to this wrapped around TransformSelectionRHScreen.
BumpScale
Increase or decrease the scale by a fixed amount. I used to have this bound to the upward and downward rolls on my Intellimouse wheel, but right now it is bound to nothing.
ChangeAtomType
Replace the atoms in the configuration with atoms from a new factory specified in the configuration. "." is bound to ConfigureAndRun wrapped around this.
ConfigureAndRun
The configuration for this Action has a pointer to another Action. It lets the user edit the configuration of the action in the text window, and then runs the action. Many commands are bound to ConfigureAndRun wrapped around some other command. Search for "ConfigureAndRun" elsewhere on this web page to find them.
CopySelection
Copy the selection. Control-C is a macro that invokes this and then uses TransformSelectionRHScreen to move the selection slightly to the right.
CreateAtom
Create an atom, using the factory specified in the configuration. Bound to comma. ConfigureAndRun wrapped around this is bound to shift-comma, and the code ensures that the configuration configured by ConfigureAndRun when you press shift-comma is the same one that is used when you press comma.
CursorBallToCG
Move the cursor ball to the center of gravity of the selection (if anything is selected) or the center of gravity of the scene (if there is anything in the scene) or the origin (if there is nothing at all). This is not used. The cursor ball is only useful with the Space Orb, and even with the Space Orb I think it was a bad idea.
DSceneLoader
Load a .d format file, which is the input and output from brennermd. Used by Control-R.
DSceneWriter
Save a .d format file, which is the input and output from brennermd. Used by Control-S.
DeleteLink
Delete a link (that is, a chemical bond), either between the two selected objects, or between the object under the mouse and the one selected object. Bound to shift-L.
DeleteObject
Delete the object under the mouse. Does not pay attention to the selection. Bound to the delete key.
DeleteSelection
Delete the selection. Bound to Control-X.
DeselectAll
Deselect all objects. Used in a macro to implement the behavior of the left mouse button.
DoNothing
Do nothing. A good default action for commands that have an action in their configuration.
EdgeHex
Append hexagons (or other polygons, depending on the configuration) to the permeter of the selected figure. Has bugs if non-permeter atoms are selected. Bound to shift-E.
EditConfiguration
Edit the top-level configuration. Bound to "c".
GrowSelectionConnected
Select the smallest connected component of the scene that is a superset of the selection. Used as part of a macro to implement control-left-mouse.
GrowSelectionNearby
Find the distance between the selection and the nearest non-selected object, add some fuzz to the distance, then select the smallest subset of the scene such that the subset includes the selection and all objects within the fuzzed-up distance from an object in the set are also in the set. This is meant to be a substitute for GrowSelectionConnected when there are no chemical bonds in the scene. It is slow and not needed.
Hi
The sample plugin.
IdentifyAction
Identify the two selected objects, or the object under the mouse and the one selected object. Bound to semicolon.
IdentifyNear
Search the selection (or the entire scene, if nothing is selected) for all pairs of objects that are nearly in the same place, and identify them. Bound to shift-semicolon.
InferBonds
Search the selection (or the scene if nothing is selected) for atoms that are near enough to each other, and insert bonds between them. Bound to "b".
InspectAtom
Print information about the atom under the mouse, or the size of the selection if there is no atom under the mouse. Bound to "/".
KeyboardMouseDispatcher
Maintain a table mapping keys to commands in the configuration, and dispatch to a command based on the table. This dispatches every keystroke and mouse event.
LoadPlugin
Load a .so file. Not bound to any key.
MacroAction
The configuration of this Action has a list of other Actions, and it invokes them in series. Used to implement many keyboard commands; search elsewhere in this web page for examples.
MacroKeyboardMouseAction
Like MacroAction, but permits any KeyboardMouseAction to be in the macro, instead of just Actions.
MakeLink
Create a chemical bond between the two selected objects, or between the object under the mouse and the one selected object. Bound to "L".
Motion
Print information about the most recent event. Not bound to anything.
NewScene
Replace the entire present scene with the scene specified in the Scene Generator slot of the top-level configuration, as configured with "c". Bound to "n".
NewTopLevel
Replace the TopLevel with the TopLevel specified in the top-level configuration as edited with "c". This was once useful when I had both X windows and OpenGL TopLevel's, but maintaining two TopLevel implementations was not worthwhile so the OpenGL TopLevel is presently gone and this is not presently useful. Nevertheless, this command is bound to "w".
PDBSceneLoader
Used in AnySceneLoader to implement reading .pdb files.
PDBSceneWriter
Used in AnySceneWriter to implement writing .pdb files.
PlayBrennerMovie
Play the xmol.d file generated by brennermd. Bound to control-m.
ReportTimes
Print the time in milliseconds of recent events, like drawing the scene and doing numerical integration. Bound to "t".
SaveMovie
Write one or more graphics frames to a .ppm file. Not bound.
SelectAddUnderMouse
Add the one object that was pointed to by the mouse to the selection. Not bound; we presently use SelectCube or SelectFrustrum instead.
SelectCube
Add some of the objects in the rectangle swept out by the mouse to the selection. The shallowest object selected is the shallowest object in the rectangle, and the deepest object is no deeper than the depth of the shallowest object plus the greater of the width and height of the rectangle swept out by the mouse. Bound to shift-left-mouse, and used in a macro to implement left-mouse.
SelectFrustrum
Select all objects in the rectangle swept out by the mouse. Not presently used.
SelectUnderMouse
Select the one object under the mouse. Not presently used.
SelectionInvisible
Turn the selection invisible, or if nothing is selected, turn all invisible objects visible and select them. Bound to "i".
StartStopTime
Start or stop time in the numerical integration. Bound to "s".
TestSceneLoader
Create a cube of objects as described in the configuration. Used twice to create the initial scene with the bouncing balls.
TransformCursorBallRHScreen
A TransformAction. Move the Cursor Ball as described in the configuration. Not presently used.
TransformMacro
A TransformAction. The configuration includes a vector of TransformActions, and this command will run all of them. Not presently used.
TransformSelectionRHScreen
A TransformAction. Move the selection as specified in the Configuration. Used to implement all commands that move the selection.
TransformWorldMove
A TransformAction. Change the world coordinate system as described in the configuration. Used to implement control-middle-mouse.
TranslateOrScale
Translate or scale the viewpoint. Bound to middle-mouse and shift-middle-mouse. The implementation is suboptimal, since the scaling always happens around the origin, but it should happen around the mouse location at the time the shift key went down.
VectorSceneLoader
The configuration has a list of other SceneLoaders. SceneLoader is a subprotocol of Action that inserts new objects into the scene, while possibly translating them. Used to create the initial scene with the bouncing balls.

Copyright 2003 Tim Freeman <tim@fungible.com>