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.
- 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.
- 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
- Like AnyFileSceneLoader, except it writes files. If the file is
foo.pdb, we'll configure and run PDBSceneWriter.
Control-S is bound to ConfigureAndRun wrapped around
- 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
- 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.
- 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.
- Replace the atoms in the configuration with atoms from a
new factory specified in the configuration. "." is bound to
ConfigureAndRun wrapped around this.
- 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.
- Copy the selection. Control-C is a macro that invokes this and
then uses TransformSelectionRHScreen to move the selection slightly to
- 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.
- 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.
- Load a .d format file, which is the input and output from
brennermd. Used by Control-R.
- Save a .d format file, which is the input and output from
brennermd. Used by Control-S.
- 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.
- Delete the object under the mouse. Does not pay attention to the
selection. Bound to the delete key.
- Delete the selection. Bound to Control-X.
Deselect all objects. Used in a macro to implement the behavior of
the left mouse button.
- Do nothing. A good default action for commands that have an
action in their configuration.
- 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.
- Edit the top-level configuration. Bound to "c".
- Select the smallest connected component of the scene that is a
superset of the selection. Used as part of a macro to implement
- 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.
- The sample plugin.
- Identify the two selected objects, or the object under the mouse
and the one selected object. Bound to semicolon.
- 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.
- 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".
- Print information about the atom under the mouse, or the size of
the selection if there is no atom under the mouse. Bound to "/".
- 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.
- Load a
.so file. Not bound to any key.
- 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.
- Like MacroAction, but permits any KeyboardMouseAction to be in the
macro, instead of just Actions.
- Create a chemical bond between the two selected objects, or between the
object under the mouse and the one selected object. Bound to "L".
- Print information about the most recent event. Not bound to
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".
- 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".
- Used in AnySceneLoader to implement reading .pdb files.
- Used in AnySceneWriter to implement writing .pdb files.
- Play the xmol.d file generated by brennermd. Bound to control-m.
- Print the time in milliseconds of recent events, like drawing the
scene and doing numerical integration. Bound to "t".
- Write one or more graphics frames to a .ppm file. Not bound.
- Add the one object that was pointed to by the mouse to the
selection. Not bound; we presently use SelectCube or SelectFrustrum
- 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.
- Select all objects in the rectangle swept out by the mouse. Not
- Select the one object under the mouse. Not presently used.
- Turn the selection invisible, or if nothing is selected, turn all
invisible objects visible and select them. Bound to "i".
- Start or stop time in the numerical integration. Bound to "s".
- Create a cube of objects as described in the configuration. Used
twice to create the initial scene with the bouncing balls.
- A TransformAction. Move the Cursor Ball as described in the
configuration. Not presently used.
- A TransformAction. The configuration includes a vector of
TransformActions, and this command will run all of them. Not
- A TransformAction. Move the selection as specified in the
Configuration. Used to implement all commands that move the selection.
- A TransformAction. Change the world coordinate system as
described in the configuration. Used to implement control-middle-mouse.
- 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.
- 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 <email@example.com>