


|
Shortcutter for Palm
by Brad A. Myers
Updated for version 5.0

Shortcutter allows you to draw panels of controls (buttons, scroll bars,
knobs and other widgets) on the Palm and then use them to control any
PC application. The buttons can be big enough to hit with a finger, or tiny
so that many will fit on a screen. Key features of Shortcutter include that
it can provide customizable interfaces on the Palm even for applications
that do not have a customization facility on the PC. You can use Shortcutter
to build custom extensions to applications. Since these are on the Palm,
you can take them with you and use them even on other people's computers.
For the newest PDAs such as the Palm V and Palm IIIc that have rechargeable batteries,
you are supposed to leave the device connected to the PC whenever the user
is next to the PC since it is recharged in the cradle. Therefore, using
Shortcutter to create panels of controls that might be useful for the PC's
applications makes even more sense.
Note that you can set the Palm to always stay on when it is recharging in
the cradle using the checkbox on the standard "Prefs" application of the
Palm V and IIIc.
Please send us examples of interesting panels you make with Shortcutter
so we can find out what people find it useful for. Let us know if it is OK
to share these panels with others. Send to
pebbles@cs.cmu.edu.
There is also a separate Windows CE / Pocket PC version which has
separate documentation.
The Shortcutter is downloaded with the rest of the Pebbles applications in
one big zip file. See the
main downloading instructions.
- Install shortcutter.prc on your Pilot.
- You can also install the optional example panels we created (see
Panels section below) such as
ShortCutter_Number_Pad.PDB, ShortCutter_Scrollers.PDB,
etc.
Each screen-full of controls is called a "panel". The user can create many
different panels to control different applications. Panels can also be renamed
and deleted. The panel menu at the top-right of the Shortcutter screen shows
the currently displayed panel, and the list of other panels. When in edit
mode, the "Panel" menu has items for creating, renaming and deleting panels, and you can also use
the bottom item in the panel menu to add, rename, or delete panels. Shortcutter
stores each panel in a different database on the Palm. This means that when
you hotsync, each Shortcutter database will be stored in a different file
on the PC. The name of the file is the name of your panel, prefixed with
"Shortcutter_". For example, the "Main" panel becomes the file
"Shortcutter_Main.PDB" which is put into your regular backup directory. This
makes it easy to share and distribute panels of controls. You can select
any of the PDB files and load them onto the Palm like any .PRC file, and
then the next time you run Shortcutter, it will load in these new panels.
For example, in the distribution of Shortcutter, we have included some sample
panels (see pictures below):
- ShortCutter_Number_Pad.PDB - A numberpad on the Palm, for
example
for laptops that don't have a numberpad.
- ShortCutter_Scrollers.PDB - A variety of scrollers on the Palm,
to make it fast and convenient to scroll applications on the PC. For
example,
this allows scrolling to be performed with the left hand while using
the
mouse with the right hand.
- ShortCutter_Internet_Explor.PDB - Some controls that might be
useful
for Internet Explorer. You might want to change the center button to
go to
your favorite page! To modify for Netscape, change the Key assignments
for
the buttons.
- ShortCutter_WinAmp.PDB - This allows the Palm to control the
popular
WinAmp PC program (see
http://www.winamp.com/) that plays
sound
files (like mp3 files) on the PC. The Shortcutter panel includes buttons
for Play, Stop, Pause, Next and Previous Tracks, and Louder and Softer.
This
allows the full PC's screen to be used for visualizations or other tasks
while the Palm is used for controlling the sound.
If you make some nice panels either for a particular application, or
for applications in general, please email them to
pebbles@cs.cmu.edu so we can see what you have made,
and share them with others.
Shortcutter
has two global modes: Editing and Running. You can switch using the menu
commands Edit / Switch to Run Mode and Options / Switch to Edit Mode. Both
have the same accelerator: Command T.
When in edit mode, you can create panels, add new buttons and other widgets
to the panels, set their properties, move them around, delete them, etc.
The screen shows a pattern of dots to show you are in edit mode. Note that
the dots do not align with the grid; they are just to show that you are editing.
To create a button or other widget in edit mode, simply put the stylus at
the top left of where you want the widget to go, and drag to the bottom right.
The button must be of a big-enough size, or nothing will be created (just
tapping won't create a button -- you have to drag towards the bottom right).
After the button is created, the "Item Properties" screen will immediately
appear to allow you to name the button and set its appearance and properties.
If you hit OK, the button will be created, and if you hit Cancel, the button
will not be created.
The label
of the widget is displayed for most kinds of widgets. You can also select
the font in which the label is displayed. The next item is the widget type.
The various types are discussed below. Depending on the type, you can then
set the actions associated with the widget.
Button-style widgets allow you to set the Appearance of the widget. Current
choices are "Rounded Rect", regular "Rectangle" or "No Border", and a checkbox
determines whether it is Filled or not (black with white text or white with
black text).
The Shortcutter uses a standard direct manipulation drawing editor style
of manipulation. The selected widget is shown with four black squares at
its corners (the button "Read" is selected in the picture above). Tap on
a widget to select it. Tap where there is no widget (in the background) to
make there be no selection. You can drag in the center of the widget to move
it and drag on a square to resize the widget. For small widgets, it might
be easier to press and drag with the stylus rather than tapping and then
trying to drag from the center since the widget might be covered by the selection
handles. The selected widget can be deleted using the menu command Edit /
Delete. (The menu commands Cut, Copy and Paste are not implemented yet, sorry.)
Undo is supported for creating, moving and deleting widgets (but not yet
for changing properties or deleting a panel).
You can get back to the properties form shown when the widget was created
using the Edit / Properties menu item or by double tapping on a widget.
The size and position of the widgets is controlled by the current Gridding
amount, which is set with the Options / Set Grid form. The default is 10
x 10 pixels. The grid also determines the minimum size object, and where
the widgets are placed. The screen is 160 x 160 pixels in size, and the
Shortcutter header is 16 pixels tall. Note that the dots in edit mode do not
correspond to the grid amount.
Shortcutter keeps all edits in memory, not in the database, while you
are editing. Therefore, if Shortcutter crashes, all the edits are lost (like
a regular PC program, but unlike most other Palm programs). The edits are
saved to the database only when you exit Shortcutter, by switching
to another application. Shortcutter has a few bugs that may cause it to crash
while editing (like it can run out of memory). Therefore, you should
exit Shortcutter frequently to save your work.
Note that after leaving and returning, the undo history is gone,
but at least all your widgets are safe in databases, and will be backed up
at your next Hotsync.
The
first choice to make when creating a control is which kind of widget it should
be. The choices are as follows (see picture at right):
- Button - This is a regular button that does one action when
it is
pressed. You can choose one action, and control the appearance of the
button,
as described above.
- Up-Down Button - This is similar to a button, but it does one
action
when the button is pressed, and a completely independent action when
the
button is released. If you move outside before releasing, only the down
(first)
action is performed.
- Scroll Slider - This widget allows you to scroll the current PC
application by dragging your finger (or stylus) up and down (or left
and
right) in the widget. If the widget is taller than it is wide, then it
scrolls
up and down (vertically) and if it is wider than tall it scrolls
horizontally.
Note that you usually want to make a long thin Scroll Slider; it doesn't
make much sense for it to be square. You don't have to stay inside the
scroll
widget for the scrolling to continue. The scroll slide is equivalent
to the
sliders in the Pebbles SlideScrl application.
- Scroll Joystick - This widget is a different style of scrolling.
Pressing
down in the center of the widget, and then moving out starts scrolling
in
that direction at a speed proportional to how far you move. Moving farther
from the center scrolls faster. You do not need to stay in the widget
while
scrolling - you can move all the way to the edge of the Palm screen to
get
increased speed, as long as you start in the center. Therefore, it is
good
to put a scroll joystick widget at the center of the screen. It is equivalent
to the Pebbles RateScrll application.
- Gesture Pad - This interesting widget allows you to specify nine
(9)
different actions, and then invokes the appropriate one depending on
what
"gesture" you make inside the widget. Currently, 9 different gestures
are
supported. If you make the widget big enough, it will display 8 arrows
and
a dot to show the various gestures supported. You must make the gesture
in
a single stroke. In run mode, the current gesture arrow or dot will be
highlighted as you make the gesture. If the gesture isn't recognized,
an
error sound will be made and none of the arrows will be highlighted.
Also,
if your stroke is too long, a error beep will be sounded continuously
(only
short gestures are supported). The current gestures are:
- Tap: The dot in the center corresponds to tapping and releasing in
the same
place anywhere in the widget.
- Up: The up pointing arrow signifies pressing in the widget and then moving
up before releasing.
- Down: To move down and then release.
- Left: Move to the left and then release
- Right: Move to the left and then release
- Down-Up: This means to move down and then to move back up without releasing.
That is, to make a "U" or a real "V" (note, not a Graffiti "v": moving to
the side will abort the gesture).
- Up-Down: This means to move up and then to move back down without releasing.
That is, to make an upside down "V" or "U".
- Left-Right: Move to the left and then back to the right.
- Right-Left: Move to the right and then back to the left.
- Knob - A knob displays like a physical knob and allows you
to assign
two actions. One is performed when you move clockwise and one for
counter-clockwise. In run mode, you can put your finger or the stylus
in
the knob and stir it around (you don't have to stay inside the widget
while
stirring). The appropriate action will be sent to the PC for each incremental
movement. The Action Speed selection on the form controls how fast the
actions
are sent (or equivalently, how far you have to move around the circle
before
the next action is sent to the PC).
Mouse Pad -
This supports controlling the PC's cursor in the same way as the Pebbles
RemoteControl, Scribble and MultiCursor applications. You get to choose
whether the mouse pad widget controls the real mouse (like RemoteControl),
whether it Scribbles on the screen (like Scribble)
or whether it creates an special cursor per user in custom applications (like MultiCursor).
Usually if you have a mouse pad widget, you would make the Application buttons
have actions like mouse left-down, or else have on-screen Toggle Button
widgets whose actions are mouse left-down, etc. Be sure the control for the
mouse button actions match that of the Mouse Pad widget (e.g., all should be
Mouse, or all Scribble, or all MultiCursor).
- Toggle Button - When you tap on a toggle button, it stays
highlighted, and when you tap again, it becomes un-highlighted. When the
action is a mouse button down, then the second tap will send that mouse button
up. When the action is the key SHIFT, CONTROL or ALT (by themselves without
another key), then the first tap will send that modifier down, and the second
tap will send that modifier up. For most other actions, the release (going
un-highlighted) doesn't do anything.
- Graffiti Pad - This widget lets you do Graffiti actions in the upper
part of the screen. For example, you could make a Graffiti Pad widget be the
entire size of the main screen. For the Shortcutter Graffiti pad, you can
decide whether it will accept only characters, only numbers, or both. If both,
the it is divided into two sides, like the main Graffiti area. Note that for
the Graffiti strokes to be sent through to the application, the global "Send
Graffiti" mode must be on (see below).
Each of the widgets supports one or more actions, which occur when you invoke
the widget. The currently supported actions are:
Key
- This
sends a single keystroke to the PC. Selecting this action pops up the
Select
Key form which contains all the PC's keys, including the function keys.
Note
that the modifiers like Alt, Ctrl and Shift are available as well. To
send
Ctrl-Shift-F1 from a Shortcutter button, simply select the Ctrl, Shift
and
then F1 buttons on the Select Key form. If you want a Shortcutter button
to act like the PC's Alt, Shift or Ctrl modifiers, you can hit these
buttons
on the form and then click Done. With auto-repeat
turned off (see below), key-down and key-up will be sent separately, so
such widgets can be used to control games that care about how long a key is
held down. [This is new in version 5.]
- Send String - This will send a whole string to the PC as if it
was
typed at the PC's keyboard. This might be useful for creating abbreviations
or any other longer string to be sent. This only supports sending
alphanumeric
characters, though. You currently cannot include special characters or
control
characters in the string. Menu items for Cut, Copy and Paste are available
during type-in so you can transfer text from other Palm applications.
Open
-
This tells the PC to open an application or any file or URL. If the
application is already running, however, the Open action will switch to it
instead of opening another copy. [This is new in
version 5.] You can
type
in the name of a file or URL, and the PC will open it with the appropriate
application. Menu items for Cut, Copy and Paste are available during
type-in
so you can transfer text from other Palm applications. If you have the
Pebbles
RemoteClipHack running, then you can select a file on the PC (for example
in the Windows Explorer or an icon in the My Computer windows), use the
Copy
menu command on the PC, and then Paste into the Open field in Shortcutter
on the Palm and the full filename of that file will appear in the field.
The button "Load from current PC application" tries to figure out which
application is at the front on the PC, and find the ".exe" file for that
application, and load its full file name into the field. A special Open
action is to use the devicectl.exe file to control
X-10 devices, see below.
Scroll Button - This pops up a list of various scrolling actions.
When the button is invoked at run-time, the corresponding scrolling action
will be sent to the PC. Note that this sends a Windows scroll event
to
the application, and many applications do not support these scrolling
actions,
so if nothing happens, you might try a different event. Also, note that
scroll
pagedown and key page down are different: the scroll page down uses the
special
scroll windows message whereas the key just sends the keyboard key labeled
page down.
Mouse Button - This allows the Shortcutter widget to pretend to
be
the PC's mouse buttons. You can control whether the Left, Middle, or Right mouse
button
is sent, and then set modifiers for whether to send a double click, and
whether
it should be modified by Shift, Ctrl and/or Alt. You should make sure the
"Control" option matches that for the MousePad widget. Usually, you
will want "Mouse" to press the button for the "real"
mouse. Scribble will allow control of drawing if the MousePad is in Scribble
mode as well. Similarly with MultiCursor.
Switch Panel - This action switches to a different Shortcutter
panel.
Unlike all the other actions, it does not send anything to the PC, but
just
changes the state on the Palm itself. The list of currently defined panels
is presented.
Macro - This allows a sequence of the other actions to be sent to the PC.
See the full explanation below.
PC Menu / Tool Item - Many PC commands you might want to invoke
do
not have a keyboard shortcut. This action tries to allow you to invoke
them
using a Windows hack. Most PC menu and toolbar actions use a special
Windows
message to notify the application of what was hit. The PC Menu / Tool
Item
action tries to capture this command then send it to the PC as if the
menu
item or toolbar had been hit. To use this action, you click on the Record
button on the Shortcutter form, then invoke the desired menu item or
toolbar
button on the PC. If it works, Shortcutter will beep and display a command
number. Since these command numbers are pretty meaningless, you can type
in a Description of what the command does, so you can remember later.
At
run time, this command number will be sent to the PC. Note that even
if the
recording works, sometimes applications do not respond to the command
number
in the expected manner.
Application Specific - This kind of action will do a different action
depending on which application is running on the PC. There can be up to three
different actions, with an optional default ("otherwise") action.
Any of the choices can be blank. The application name for the "when"
part must match exactly, so it is best to use the "Load from current PC
application" button to make sure the string names are identical.
For some widgets, such as the buttons, you can choose whether the action
will "Auto-Repeat", which means that the action repeats if you continue to
press on the button. (You can see the check box for Auto-Repeat and Silent
on the "Open" screen above.) There is a short delay before the repeating
begins. If you move outside of the button while pressing, the repeat action
stops. If the auto-repeat check box is not checked, the the action happens
once each time you press the button.
You can also choose "Silent" which means the action doesn't emit a click
on the Palm when you select the button (see the Run Mode
section). Note that although Silent is on the action form, it actually
applies to the entire widget, so making one action of a multi-action widget
(like a knob) silent will also make all the actions of that widget be silent.
Version 4 of Shortcutter introduced support for "macros", which
are simply a series of actions. Unlike macros in some other systems, in
Shortcutter, you cannot record the actions by example, but rather you have to
specify each step using the regular action specification dialog box described
above. The main screen for macros allow you to type a description of the
macro. This can be used to remind you what the macro will do, and it is what is
displayed on the Palm as feedback when the macro is invoked. The
screen for editing the macro steps is shown at right. It will initially come up
empty (with no steps). Use the "New" button to add a new step to the
macro. That step will then be selected (the picture shows step 10 selected). If
there is more than one step, you can tap on a different step to select it
instead. Hitting "New" when a step is selected, will create the new
step directly after the selected step, and if nothing is selected, then the new
step goes at the end.
You can edit or delete the selected step using the
buttons at the bottom. (As a shortcut to editing a step, if you click on the
step number, it will select it and then immediately start editing.) You can
specify that step's action using the regular dialog boxes. The arrows in the
center bottom allow you to re-order the steps of the macro by changing the
position of the selected step. If there are more than 9 steps, then the scroll
bar appears and you can scroll by tapping on the scroll bar or by using the
physical up-down buttons (note: not the arrow icons on the screen, which reorder
the steps). Hit the OK button for the edits to go into effect, or hit Cancel
to ignore the edits. Unfortunately, editing of macros is not undo-able, but you
can hit cancel to abort the edits and start over.
New in version 5 is a program that can be used to control Proxima
projectors and X-10 devices which are connected to a serial port of your
computer. (If you have other devices connected to the serial port that you want
to control, let us know.) The devicectl.exe program is included in the standard
Pebbles download, and by default ends up in the same directory as PebblesPC.exe.
You can list devicectl.exe in the Open action with the parameters that will
cause devicectl to send commands to the various devices.
The syntax for devicectl is:
devicectl -com <port num> -proxima <proj code>
or
devicectl -com <port num> -x10 <house code> <device code> <command>
The first parameter to devicectl must be "-com N" where the N
is replaced by the serial COM port that the device is plugged into. For example,
if your projector is plugged into the COM 2 port, you would use "-com
2".
The next parameter is whether to control a Proxima projector or an
ActiveHome X10 device. This is specified using "-proxima" or
"-x10".
For a Proxima projector, you would then include the appropriate code for
the projector. Contact Proxima to get the appropriate codes. For example, the
following code will turn on my Proxima projector:
C:\Pebbles\devicectl -com 2 -proxima C00 For X10, you give the
house code number, then the device code number, and then one of the following
commands:
ON
OFF
DIM
BRIGHT
ALLLIGHTSON
ALLUNITSOFF
For example, the following will turn the device numbered A2 off, where the
X10 device is plugged into the COM2 port of the computer.
C:\Pebbles\devicectl -com 2 -x10 a 2 OFF
You
can assign actions to the six hardware buttons on the Palm. Using the "Edit
/ App Buttons Actions" menu item, a form pops up with which you can assign
an action to the DateBook, Address Book, ToDo List, and Memo buttons, and
the Scroll Up and Scroll Down buttons in the center. If the application buttons
have an action assigned to them, then they perform that action when in run
mode. If they have no action: "<none>" assigned, then they perform
their usual action (switching to the appropriate application). Note that
the assignments are global and do not change if you change panels. The actions
for the hard buttons are stored in a separate Palm database from all of the
panel actions, called ShortCutter__HARDBUTTONS.PDB, which you can
also share (see the discussion with the panels about
databases).
You
can have the Graffiti strokes done in the Graffiti area of the Palm or in a
Graffiti pad widget (see above) sent through to the application as if they were
typed on the PC's keyboard. This works in the same way as in RemoteCmd. This is
enabled by default, but you can turn it off using the dialog box (shown at
right) which is available from the menu command Edit / Graffiti Preferences (in
Edit mode). The same dialog box is also available from the Options / Global
Preferences (in either mode) dialog box.
Unfortunately, we don't yet
support the pop-up keyboard from the Graffiti "abc" area like
RemoteCmd. Another feature we were thinking of adding eventually is the ability
to map a Graffiti stroke to an arbitrary Shortcutter action, but this also isn't
available yet.
When you switch to Run Mode, then all the buttons and other widgets perform
their assigned actions. The dots on the screen are removed in run mode, so
it is easy to tell. When the actions operate successfully, then a beep is
sounded. This means that the Palm and the PC are correctly connected together,
PebblesPC is running on the PC handling the correct serial (COM) port, PebblesPC
found the appropriate Pebbles plug in on the PC, and the command was successfully
sent to the plug in. If there is silence, then either the sounds for the
Palm were turned off globally in the Palm preference dialog, the sound for
that button was turned off by setting its action to be silent, or else the
command didn't get sent to the PC. If there is no action (action type
"<None>") for the widget, there will also be no sound.
In
run mode, by default, each action that is performed provides feedback to show
what it is doing. This is displayed as a one-line text string containing the
kind of command and then the value. The string goes away when the button is
released, or on the next command. You can turn off the display of this feedback
using the "Show Action Names" item in the Global Preferences dialog
box.

Version 4 of Shortcutter introduced a global preferences dialog box.
This has check boxes for controlling the feedback for actions, and for
controlling whether the Palm powers off when Shortcutter is running. Be careful
if you un-check this box that the Palm doesn't run out of battery! The
next buttons provide access to the preferences for Application Keys and
for Graffiti (which are also available directly from menus in Edit mode).
Edit Mode
Edit menu:
- Undo: undoes the last create, delete, move or grow operation. Does
not yet
undo changing properties or delete panel or editing of a Macro step.
- Cut, Copy, Paste: Not yet implemented.
- Delete: Deletes the selected widget. If nothing is selected, then beeps.
- Switch to Run Mode: changes so the widgets begin operating, and the actions
are performed.
- App Button Actions: Pop up the form to edit the actions assigned to the
six
hardware buttons.
- Graffiti Preferences: Control whether Graffiti characters are sent through
to the application.
- Properties: Display the properties of the selected object. This allows
you
to change any of the settings of the widget. If nothing is selected,
then
beeps.
Options menu:
- Help: Sorry, no help screens for Shortcutter yet.
- About Shortcutter: displays the current version of Shortcutter.
- Set Grid: Displays the form for setting the grid amount for editing.
- Global Preferences: Display the global
preferences dialog.
- Connection... Control how the Palm connects to the PC, as described
elsewhere.
Panels menu:
- New Panel: Prompts for the name of the new panel.
- Delete Current Panel: If the currently displayed panel is not empty,
then
prompts to confirm, otherwise immediately deletes the current panel,
and
switches to the first panel. You cannot delete the last panel.
- Rename Current Panel: Changes the name of the currently displayed panel.
This will also delete the database with the old name from the Palm and
create
a database with the new name.
Run Mode
Options menu:
- Help: Sorry, no help screens for Shortcutter yet.
- About Shortcutter: displays the current version of Shortcutter.
- Switch to Edit Mode: go back to edit mode so the widgets can be edited.
- Global Preferences: Display the global
preferences dialog.
- Connection... Control how the Palm connects to the PC, as described
elsewhere.
- The Shortcutter sometimes runs out of memory and crashes when
editing. Be
sure to exit the Shortcutter (switch to some other application or to
the
Palm launcher using the Application button) frequently to avoid losing
work.
- Cut, Copy, Paste are not implemented.
- Undo doesn't work for properties or delete panel.
- There is probably some limit on the number of panels that can be open
at
once.
- Sometimes the PC Menu/ Tool Item action doesn't correctly read an action
on the PC, and when it does read an action, it can fail to execute correctly.
- Many PC applications do not implement the Scroll Button actions. If this
is a problem, try using different scroll actions, or even the Key action
for Page Up and Page Down, or the arrow keys.
- Probably many more.... Let me know what you want fixed!
pebbles@cs.cmu.edu
Maintained by Brad Myers
|