You are on page 1of 32

The launcher is the first thing that is seen when opening the BlowTorch application.

It provides
functionality to create and connect to multiple different game servers. The current functionality is
pretty basic.
Contents:
1. New Connection
2. Edit/Delete Connection
3. Connecting to a Server
4. Export/Import List
5. Extra Information

New Connection

Press the "New" Button at the bottom of the screen, this will launch the Connection Properties
dialog with blank fields for a new connection.

Display Name - Name to be used in the display list


Host Name - Host name to use for the connection, usually a url, but can be an IP address.

Port Number - Port to connect to on the specified server.

Edit/Delete Connection
This can be done by long clicking the item in the list, a Modify/Delete alert will provide options for
what you wish to do. The Connection Properties dialog will be launched with the connection info
filled into the fields for editing.

Connecting to a Server

Valid entries will be made list items. Clicking on a item will initiate the server. The last connection
established will always be sorted to the top of the launcher list.

Export/Import List

1.0.5 is putting out a better more beefy launcher. It can export/import the list so you can
always have a backup. This is accomplished by pressing MENU on the launcher screen.

Extra Information

Settings are maintained on a per connection basis, saved in the internal application storage
with a cannonical name involving the connection name with spaces/special chars stripped.
You can use this to create multiple settings for the same server by having 2 differently
named connection to the same server/port.

The Main Program Window

This section will include anything related to the text output from the server. Input from the user sent
to the server will also be covered.

Portrait / Landscape Mode

The orientation for the BlowTorch window is now configurable. By default it is


Automatically chosen from the phone accelerometer data, but it can be specified to be
always landscape or always portrait. These options are accessable through the options page.
At this time there is no automatic switch for button sets upon device rotation. Landscape
button sets will not be useable for portrait mode. However in the alternate configuration,
there is more exposed area to place buttons that will be off-screen in the normal
configuratoin. So a button can be placed to change to a desired portrait set.

Data Displayed

The font face and size may be specified in the Options Page. Additional true type fonts may
be selected from the list if they are included in the /BlowTorch directory on the SD card.
System fonts are included in the list. NON-MONOSPACED FONTS MAY BE USED BUT
MAY CAUSE PROBLEMS IN DISPLAYING SOME DATA
The window will store a variable number of lines of text avaiable for specifying on the
Options Page.

Break Mode

BlowTorch now supports word wrap or line break modes. The limit may be selected or
automatically calculated to fit the current font size and window orientation.
Word wrap is a little more expensive to use than line breaking. Disabling it will make the
phone work less hard.
Currently there is no way to disable both line breaking and word wrapping, if no line break
is desired, then a arbitrarily large value can be used.

User Input

Input may be supplied by tapping the input bar. By default the extracted ui editor is not used,
this is to allow the last few lines of data to be seen. The option to use the full screen editor is
available in the Options Page. IF THE FULL SCREEN EDITOR IS NOT USED, AUTOSUGGEST/CORRECT OPTIONS WILL NOT BE GIVEN, CURRENTLY UNDER
INVESTIGATION
Previous commands sent to the server can be accessed by using the history slideout widget.
This can be shown by clicking the blue icon in the input bar, this will show the history
manipulator. The up arrow goes up the list, the down arrow goes down the list, the forward
arrow sends the current text to the server.

Any text that is left in the input bar will be used at the primary click command for new
Buttons.

Clicking the history widget icon while expanded will hide it.

The "Keep Last" option has been added, this will allow text entered into the input bar to
remain, and be selected, so you can spam the enter button to send the same command
repeatedly, and the next text entered will clear the selected text. This can be enabled in the
Options Page

Buttons, Buttons and more Buttons!

Touchable buttons that send commands to the server is the bread and butter of mudding from a
mobile phone.
Currently BlowTorch supports any number of button organized into pages of buttons that are
referred to as Button Sets. The buttons are used to send a predefined text commands to the server.
Contents:

1. Create New Button


2. Button Actions
3. Move/Edit Buttons
4. Button Properties
5. Large Labels

Create New Button


Long clicking the screen in any place other than the input bar or another button will result in a new
button being created at the pressed location. Any input text currently in the input bar will be used as
the primary "click" command.

Button Actions
BlowTorch buttons offer 2 modes of operation. Normal and a gesture motion called "flip"
Normal

A finger down and up ("Pressing") the button will result in the click command being sent to
the server.

Flip

A finger down, moved off of the button and released ("Flipped") will send the flip command
to the server. Any direction will work, as long as the origin is the button, and the end is not
the button.

Move/Edit Button

Long pressing the button will allow you to move it according to the current move mode set for the
button, default is "Free". Holding the long press without moving the button will launch the
properties dialog.

Button Properties

Aside from the labels and commands for the click and flip commands, the following properties are
also available for editing.
Movement Method

Free - The default movement method. The button will track the finger as it moves around
the screen. This can be problematic because the single point of touch may jitter.
Nudge - For fine tuning the placement of a button, this is essentially the "Free" method
scaled down by 10. So finer grained control may be used.
None - This will disable this button for moving, the move state will still happen before the
property editor is launched on long press.

Switch to named button set

Entering the name of a button set in this field will cause the button to load that named set
into the window when clicked. Currently no click/flip command is sent to the server if this
field contains data.

Colors
Colors may be chosen for the following states via the Color Picker

Normal - Color of the button while it is idle.


Focused - Color used when in the "click" state.

Flipped - Color used when in the "flipped" state.

Label - Color used for the label on top of the "Normal" and "Focused" color.

FlipLabel - Color used for the label on top of the "Flipped" color.

Type in controls

Label Size - The vertical size of the label text. Overrides value provided from the [[Button
Set]] defaults. Unit is a Density Independent Pixel (dip).
X coord - The X coordinate of the center of the button. Unit is in pixels.

Y coord - The Y coordinate of the center of the button. Unit is in pixels.

Width - The width of the button. Overrides value provided from the [[Button Set]] defaults.
Unit is a Density Independent Pixel (dip)

Height - The height of the button. Overrides value provided from the [[Button Set]]
defaults. Unit is a Density Independent Pixel (dip)

Explanation of a "Density Independent Pixel" as described by the Android SDK


Documentation

Large Labels
If the label size exceeds the bounds of the button rectangle, the options will now be given to "fit"
the button to the new label. The option to fit the label is given when the property editor is closed. If
the option is denied, no changes will be made, and the large label will be drawn over the small
button.
BlowTorch supports an unlimited number of buttons organized into pages called Button Sets. Any
connection will have a button set called "default" with no buttons by default. All new buttons
created in currently selected set will be loaded with the default values provided by the button set.
Contents:
1. Create New Button Set
2. Switch To Button Set
3. Remove Button Set
4. Modify Button Set Defaults
5. Button Set Behavior for Landscape and Portrait orientations
6. Button Set Behavior in Portrait Mode regarding keyboard and full screen mode

Create New Button Set

Creating a new button set may be done by pressing MENU->Button Sets. This will launch the
button set selector, click "Add new" to create a new button set. This will be switched to
automatically, and newly created buttons will be made in the new set.

Switch To Button Set


A set may be loaded by pressing MENU->Button Sets. The list of button sets will be loaded, and
selecting one from the list will load the buttons into the window.

Remove Button Set


Long press an item in the list and it will give an option to modify the set defaults or delete the
button set. The button set can be cleared if desired, or deleted entirely. The default set will be loaded
if the deleted set is the currently loaded set. The default set can not be deleted (or renamed, which
can't be done outside of editing xml).

Modify Button Set Defaults

To enter the button set defaults editor, long click (click and hold) one of the entries in the
button set selection dialog. Select Modify from the options.
The following attributes may be set for any given button set

Changing these values will affect buttons that currently have the same value as the default.
Buttons that have been modified will keep the values that have been modified, but values
that match the set default will be updated.

Colors may be chosen for the following states via the Color Picker by clicking the swatch.

Normal - Color of the button while it is idle.

Focused - Color used when in the "click" state.

Flipped - Color used when in the "flipped" state.

Label - Color used for the label on top of the "Normal" and "Focused" color.

FlipLabel - Color used for the label on top of the "Flipped" color.

Type in controls

For precise control over the following options. All units are in Density Independent
Pixels.

Label Size - The vertical size of the label text.

Width - The width of the button.

Height - The height of the button.

Explanation of a "Density Independent Pixel" as described by the


Android SDK Documentation.

Button Set Behavior for Landscape and Portrait orientations

Button sets always use the top left corner of the screen as the origin for the coordinate
system.
The "Button set area" can have buttons that are visible in portrait view and not in landscape,
landscape and not in portrait and a shared area where buttons will be displayed on both
screens.

This behavior is demonstrated in the figure to the right.

Button Set Behavior in Portrait Mode regarding keyboard and full screen mode

When in non-full screen mode (the notification bar shown) the screen layout is updated to
shorten the window when the keyboard pops up. As a result of this, when the keyboard pops
up, the button set coordinate origin does not move. Buttons that appear in the keyboard area
will be obscured by the keyboard.
When in full screen mode (the notification bar hidden) the screen layout is not updated to
shorten the window when the keyboard pops up. When this happens the coordinate origin is
shifted up when the keyboard is shown. Buttons appearing at the top of the screen will be
pushed off screen and buttons that are in the keyboard area are shifted up.
This is demonstrated in the figure below.

The Color Picker Dialog

Aliases

Aliases are a pretty standard feature in mud clients. BlowTorch provides a basic from/to alias
replacement system that can be infinitely nested.
BlowTorch aliases can be almost infinity deep. As long as there are no circular replacements, they
can be as many levels deep as you want.
Contents
1. Create New Alias
2. Modify/Delete Alias
3. Save List
4. Line Matching Options
5. Alias Commands with Formatted Text
6. Circular Dependencies

Create New Alias


Selecting MENU->Aliases will launch the alias selection dialog. Clicking New Alias will launch the
new alias dialog.

Modify/Delete Alias
Long pressing an alias in the list will launch and alert for modifying/deleting the button. Selecting
modify will launch the alias property editor with the fields filled in for the selected alias.

Save List
Currently the behavior of the app is to save/retrieve the full list of aliases. This is inconsistent with
the button set editor or the trigger editor. In the future this will be changed, but for now, any
changes made to the alias list will need to be saved by clicking the "Save List" button which will
close the dialog.

Line Matching Options


In v1.1.1, aliases now have the ability to have thier matching behavior set. The default behavior is
for aliases to match word boundaries (white space, punctuation, etc.) and this results in undesired
behavior if you have an alias "i" for "inventory" and the command sent to the mud is: "chat i have to
leave, thanks for the group!" will be transformed into "chat inventory have to leave, thanks for the
group!" which is undesireable.
This can now be avoided by setting line matching options in the alias editor dialog. Checking both
the options, Matches start of line (^) and Matches end of line ($) will make it so that the alias will
only fire if it is the only text on the line or between semicolons. Only setting the "Matches start of
line (^)" will give the desired result if only "i" is entered. However if the command looks like "i
have something to do" it will still replace the leading "i", but this mode of operation can be useful
for sending formatted text to the server. See the section below. The regular expression markers ^
and $ can be entered directly into the "Replace:" field, but will be stripped out and check the
appropriate options automatically.

Alias Commands with Formatted Text


If the alias has "Matches start of line (^)" checked, and does not match the end of line, it will supply
formatted text to the replaced text much like the trigger capture group replacement. Aliases of this
form are entered as "alias arg1 arg2 arg3" and will replace arguments in the replacement text of the
form $1, $2, $3 etc. With this funcionality it is possible to build shorthand, client-side "alias
commands"
Example One:
Alias: "portal" replaces with text "get $1 bag; hold $1;enter $1;remove $1;put $1 bag"
Entering "portal crystal" into the input bar or from a button will cause "get crystal bag;hold
crystal;enter crystal;remove crystal;put crystal bag" to the server
Example Two:
Alias: "money" replaces with text "give $1 coins to $2"
Entering "money 5000 dan" will cause "give 5000 coins to dan" to be sent to the server.

Circular Dependencies
I have tried to build a system to catch circular dependencies (resulting in an infinite loop) when
entering new aliases into the system. The alias editor should highlight all offending aliases in red.

Currently when offending circular references are found, the dialog does not prevent you
from saving them and going about business as usual, however using one of the offending
aliases will result in an infinite loop and crash the program.

Triggers

Triggers are a feature that has been offered by MUD Clients for some time. BlowTorch gives a
feature rich implementation of triggers.
Contents:
1. Create New Trigger
2. Modify/Delete Trigger
3. Trigger Options
4. Action Responses
1. Notification Response
2. Toast Message Response
3. Ack With Response
5. Capture Group Replacement

Create New Trigger


Selecting MENU->Triggers will launch the trigger selection dialog. Click the "New Trigger" button
to launch the trigger editor for a new trigger.

Modify/Delete Trigger
Clicking a trigger in the trigger list will launch the editor for that trigger. Long pressing the trigger
in the list will give the option for deleting it.

Trigger Options

Name - This is the name displayed in the trigger selection dialog.


Pattern - The pattern to trigger off of. When this pattern is matched by data from the server,
the appropriate responders will fire.

Interpret as literal - Interpret this pattern as plain text. Turning off this option will cause
the pattern to be processed as a regular expression, and can be written as such.

Only fire once? - Checking this box will make it so that this trigger only fires one time per
session.

Action Responses

Triggers can have as many responders as you wish. Each responder may be fired when the window
is open, closed or always. There are three kinds of responders, Notification, Toast Message and Ack
With. Adding a new responder by clicking the "Add new responder" button. Responders may be
modified by clicking the text displayed in the "Type" column. Window firing behavior is operated
by modifying the checkboxes in the "Window Open" and "Window Closed" columns. Responders
may be deleted by clicking the red "X" in the "Delete" column.

Notification Response

The notification responder launches a notification in your notification bar. The following options
are configurable for the notification.

Play Sound - Unchecking and rechecking this box will launch the (my crappy hax) sound
picker dialog that will allow you to pick which sound file this will play. This will be
revamped soon, hopefully allowing a smoother sound selection process.
Vibrate? - This allows control over the vibrate pattern that will happen when this
notification is launched. Currently there are a few to play with, unfortunately at this time
there is no way to preview/test a vibrate pattern other than triggering the trigger that will
launch this responder.

Show lights? - This allows control over what color light will blink when this notification is
received.

Spawn New? - If this is checked, a new notification will be launched each time the
responder is fired. If not, it will recycle the same notification and re-post it with the new
time stamp.

Use On-Going? - This will replace the default on-going notification with this notification.
Currently does nothing as the on-going notification is under construction.

Toast Message Responder


The toast responder will put up a small grey floating dialog over the top of all windows for the
specified amount of seconds when fired.

Ack With Responder

The ack with responder sends a specified command to the server when fired.

Capture Group Replacement


Trigger Responders can use the captured text from regex triggers by using the text $1,$2,$3 etc,
where the number following the $ is the captured group.

Currently there is no method for "discovering" what groups captured what text. So trial and
error must be used. A $X wont be replaced if there is no group or the group did not match
any text.

Example

A regex trigger with the pattern "^(.+) has sent you a tell.$" will match text like "Foobar has sent
you a tell." and if the message in a notification response is "$1 WANTS TO TALK TO YOU!" the
notification that will be put into the bar when this trigger fires would be "Foobar WANTS TO
TALK TO YOU!"

Timers!

Timers were a requested feature for the application. And I hope my implementations does not
disappoint.
Contents:
1. Add Timer
2. Modify/Delete Timer
3. Operating Timers
4. Examples

Add Timer
The timer selection dialog (MENU->Timers) is loaded by default with no timers. A timer can be
created by pressing the "New Timer" button in the lower left. Pressing this button will launch the
timer editor dialog with a new, blank timer.

Modify/Delete Timer

The timer editor dialog can be used to edit the properties and set up what actions are executed when
the timer expires.

Name: A short description/function name. String value.


Seconds: The number of seconds to count down. Integer value.

Repeat: Will this timer repeat when it expires. On/Off.

Execute Actions: The actions that will be executed when the timer expires. May be a
Notification, Toast Message or a command sent to the server. More details about the actions
can be seen on the Triggers page. Triggers and timers can use all the same response actions.

Operating Timers
From the Menu Dialogue
To operate a timer, it must first be selected in the list. The 0 timer is selected by default when the
dialog is launched. With the timer selected, the play, pause, reset and edit controls may be used to
operate the timer.

From Buttons
Operating timers from buttons requires using the ".timer" special command. Details on the Special
Commands Page.

Examples
Tick timer
1. The mud I play can be configured to send some specific text each time the tick happens
(roughly 30 seconds). So I set up a new timer (will have an index of 0) with the name "tick"
for "30" seconds with repeat off and whatever responders you wish (I use none because my
goal is to execute step 3).
2. With a trigger that has the pattern "^--> TICK <-- \(.+\($" I can match the tick text sent from
the server. This trigger executes an "ack with" responder with the response ".timer reset 0
silent,.timer play 0 silent" This resets and plays the timer when the tick comes (with no
messages).

3. A button on desired button set that has the primary command ".timer info 0". When this
button is pressed, I see a toast message with the message "Timer 0: 10 seconds left." or
whatever the countdown is, and a prediction about when the next tick is coming. And if the
timer expires, it will read "Timer 0 not running." And the next tick will be coming real soon,
or I have been disconnected.

DisconnectOmeter
1. Use a slightly longer timer, say 150 seconds, no repeat and a notification response with the
"super long buzz" option.
2. Use the same tick trigger from the tick timer example to reset the timer. So now ever tick
will start the countdown over.
3. If the timer ever expires, it means you have missed 5 ticks, and the super long buzz
notification will alert you.

Special Commands
I needed a method for setting the replacement text of aliases from the command line. To
accommodate this there are "dot commands". This is also useful for executing some extra
commands (like closing the window without asking to keep the service alive) from
buttons/command line.
Contents:
1. Setting alias replacement text
2. Special function commands
1. Color Debug Mode
2. Close Window Now!
3. Timer Operation
4. Pipe to Keyboard
5. Toggle Fullscreen
6. Do Bell
7. SpeedWalk
8. Load Button Set
9. Clear All buttons
3. Muds that need commands with leading periods

Setting alias replacement text

The format required to execute an alias replacement text swap is:


o .alias argument string

where alias is the text to replace.

where "argument string" is the text to replace it with.

Example Alias Update


1. An alias set up with the text to replace "starget"
2. A button with the primary command "stab starget"
3. Typing ".starget bear" will update the starget replacement text to bear, and allow you to
press the button and have "stab bear" sent to the server.

Special function commands


Color Debug Mode

A fast way to modify the properties of the drawing routine was needed to aid in debugging
color problems.
o The command is ".colordebug arg"

Where "arg" is an integer 0,1,2 or 3 that correspond to the following debug


modes.

0:Normal color processing, ansi color codes are processed and not
displayed.

1:Debug Mode 1, ansi color codes are processed and also displayed.
Currently the buffer is not line broken to the color code additions, so
the font size will need to be reduced in order to fit complete lines to
the screen width (if needed).

2:Debug Mode 2, ansi color codes are not processed (all text will be
white), but are drawn in the text window (also white).

3:Debug Mode 3, ansi color codes are not processed (all text will be
white), and are not drawn in the text window.

Example of Color Debug

Entering ".colordebug 3" will remove all color processing, so all text should appear white.
Entering ".colordebug 0" will resume normal color processing operations.
o

Can be used as the commands for buttons. Easy switching!

Close Window Now!

Exiting the main program window and keeping the service alive can be done from the
command line or buttons. Exiting the window and keeping the service alive was only done
through pressing the back button and answering yes to the dialog.
o The command is ".closewindow"

Example of Close Window Now!

Create a button and have its command be ".closewindow", Pressing this button will
immediately close the window and leave the service running.

Timer Operation

Timers can be operated from buttons and the command line. The command name is ".timer
function index [silent]" where
o function is the operation: play, pause, reset, info

play, pause and reset will do exactly as they are and throw a toast message
describing the options. The silent flag can suppress the toast message.

info will give you a toast message with the time remaining on the timer, e.g
"Timer 0: 13 seconds left."

index is the integer value displayed next to the timer in the timer selection dialog.

[silent] is an optional flag that when specified, will suppress the toast message
describing the action.

Example of Timer Operation

Having a button with ".timer info 0" as the primary command will display a toast message
with the status of the timer at index 0.

Pipe to Keyboard

Buttons can replace/append text to the input bar and optionally pop it up. The command
name is ".keyboard [popup]|[add]|[flush]|[close]|[clear] message"
o The "popup" flag will replace the current input bar text with "message" and pop up
the keyboard. Can be combined with "add".
o

The "add" flag will append the current text to the input bar. Can be combined with
"popup".

The "flush" command will transmit and clear the contents of the input bar. Any
supplied message will be lost.

The "close" flag will close the software keyboard if it is open. Does not affect text in
the input bar.

The "clear" flag will clear the input bar of any existing text.

Example of Keyboard Command

A button with the click command ".kb popup reply " will pop up the keyboard with the text
"reply " in the input bar.

Toggle Fullscreen

The full screen mode that hides the notification bar can be toggled with ".togglefullscreen"
o This operation takes no arguments.

Example of Toggle Fullscreen

A button with the click command ".togglefullscreen" will show/hide the notification bar
when pressed.

Do Bell

As of 1.0.5, BlowTorch supported the bell character. The options are on the Options Page,
but if you just want to force a bell event to happen, use ".dobell"
o This operation takes no arguments.

Example of Do Bell

Trigger that fires an ack with action ".dobell" will cause a bell event to be generated, causing
either the vibration, notification or visual bell as per the options.

SpeedWalk

The speedwalk command is ".run directions" where directions can be n,e,s,w,h,j,k or l, and
each direction may have an integer value preceding it to execute the direction the specified
number of times.
o n = north
o

e = east

s = south

w = west

h = northwest

j = northeast

k = southeast

l = southwest

The direction stream may be broken and resumed with commas "," and commands
may be inserted into the direction stream.

The speedwalk command is also configurable, press MENU->More->Speedwalk


configuration to bring up the editor. The editor allows the configuration of single character
"directions" to server commands. In this way if a server only accepts long form "southwest"
commands, you can change BlowTorch to send that to the server when "l" is in the direction
stream.
o

To edit an existing direction, press the hexagon bolt in the row entry.

To delete an existing direction, press the red X delete button in the row entry.

To Add a new mapping, press the "New Direction" at the bottom of the screen.

Example of .run command

".run 3d3snjk" will send, d;d;d;s;s;s;n;ne;se to the server.


".run 3d3s,cross bridge,njk" will send, d;d;d;s;s;s;cross bridge;n;ne;se to the server.

".run 3d3s,cross bridge,open gate,njk" is invalid, only one command may be used between
the commas. If multiple commands are needed, break the command up with semicolons (;)

Load Button Set

The load button set command syntax is ".loadset setname" where setname is the named
button set to be loaded. Execution of this command may happen from triggers, aliases, or
other buttons. This command will replace the "Load Named Set" option under the button
property editor. This command also allows buttons to execute commands, as well as change
button set.

Example of .loadset command

.loadset default_settings will load the button set named default_settings.


A button with the command "runto town;.loadset home_town" will send the command
"runto town" to the server as well as loading the button set named home_town.

Clear All Buttons

The clear all buttons command syntax is ".clearbuttons" with no argument. It will remove all
the buttons from the currently loaded set, and add one programatically generated "back"
button in the lower right that will always return to the set that was last loaded. It is designed
to replace the need for having a "blank" button set and having linking buttons between the
desired set and the empty set.

Example of .loadset command

A button with the command ".clearbuttons" will clear all the buttons on the screen when
pressed. It will provide a single button to re-load all the buttons that were unloaded when the
command was given.

Muds that need commands with leading


periods
Currently there is no way to change the "." part of the command to another character if desired, but
in the future that will be configurable.
Some MUDs may expect you to send commands with a dot, if you want to send these commands, a
double dot "..command" will be sent to the server as ".command" if dot command processing is
enabled.
To toggle special command processing, enter ".." on it's own and the special command processing
will be toggled.

Options Page

In 1.0.3, the options dialog has been re-organized into sub pages. The top level options dialog gives
access to window, button, input and service settings, leaving the reset, import and export actions on
the top page. Selecting a top level category will open the sub menu of options for the category.
Contents:
1. Encoding
2. Window Options
3. Hyperlink Options
4. Button Options
5. Input Options

6. Service Options
7. Bell Options
8. Import/Export

Encoding
This option is the first in the list because of its importance. This will allow the user to select an
encoding to use for text processing and drawing for the connection.

Window Options

Orientation

Automatic - The window will change depending on the physical orientation of the phone.
Landscape - Regardless of phone orientation.

Portrait - Regardless of phone orientatoin.

Word Wrap?

Tells the window to wrap whole words to the next line. Enabled by default.

Break Limit

The amount of characters that will cause a break event. Automatic will use the default phone
and phone orientation to fill the screen.

Disable ANSI Color?

If you believe there is a problem, or just want to, the ansi color processing can be disabled.
Checking this checkbox will disable color processing, unchecking it will resume normal operation.

Keep Screen On?


If this option is enabled, the screen will be kept on. If disabled, it will turn off the screen after a
period of idle time specified by your system settings.

Font Size
Vertical size of a character (in pixels).

Line Spacing
Amount of extra space between each line, used to fine tune some font sets.

Use Fullscreen Window


This option hides or reveals the notification bar, may be toggled with the Toggle Full Screen Special
Command.

Text Buffer Size


Number of lines to save for scrolling in the window.

Font
Allows selection of a true type font for displaying the data with. May use any system font or a true
type font placed in the /BlowTorch directory on the sdcard.

Hyperlink Options

Enable Hyperlinks?
With this setting enabled, text that begins with http:// or www. will be highlighted using the chosen
decoration mode. Clicking on these links will launch a web browser to view the link.

Hyperlink Mode
There are a few options for how detected links will be shown.

None - Hyperlinks will not be decorated, but will still be clickable.


Underline - Hyperlinks will be underlined in whatever ANSI color is currently in effect.

Underline with specified color - Hyperlinks will be underlined and colored with the
specified color.

Underline and Colorize, only if no ANSI color is specified - Hyperlinks will be


underlined and colored with the specified color only if no ANSI color code is currently
supplied. For example, if the default ANSI grey is in effect, links will be colorized with the
specified color, if any other ANSI color is in effect, the link will take on that color.

Background highlight with specified color - Hyperlinks will be highlighted by drawing a


background color behind the text. The background color will be the specified Hyperlink
Color, the text color will be calculated to be the most contrasting color to the specified color.

Hyperlink Color
Clicking on the color swatch will launch the color picker. The color chosen will be used to decorate
links as specified in the Hyperlink Mode.

Button

Automatically Launch Editor?


With this setting enabled, new buttons will have the property editor launched by default.
Unchecking the box will prevent this from happening.

Haptic Feedback on Create/Modify


This setting controls weather or not haptic feedback will happen in the following button states,
created, entered move state, launching property editor.

Auto: This setting performs haptic feedback if the system setting is on.
Always: This setting ignores the system setting and performs haptic feedback always.

Never: Never ever perform haptic feedback.

Haptic Feedback on Press


This setting will dictate if haptic feedback happens when buttons are pressed.

Auto: This setting performs haptic feedback if the system setting is on.
Always: This setting ignores the system setting and performs haptic feedback always.

Never: Never ever perform haptic feedback.

Haptic Feedback on Flip


This setting will dictate if and how haptic feedback happens when buttons are flipped.

Auto: This setting performs haptic feedback if the system setting is on.

Always: This setting ignores the system setting and performs haptic feedback always.

Never: Never ever perform haptic feedback.

Input

Use Full Screen Editor


Use this to switch between the full extracted editor (and auto-suggest/correct functions) and
viewing the server output while entering text.

Use Suggestions
Some keyboards don't play so well with mixing suggestions and the "no-extracted-ui" editor. This
option will attempt to force the editor into using suggestions when the full screen editor isn't used.

Keep Last Entered?


With this enabled, text in the input bar will remain, and be selected after the enter key is pressed,
this will allow rapid re-entering of the same command.

Enter Compatibility Mode?


At least on the Samsung Mesmerize, if the full-screen editor is not used, backspace wont work.
Enable this and it will trigger a different input mechanism to be used, however this other method
may suffer from a different bug. This also fixes the backspace button on preinstalled versions of
Swype.

Service

Local Echo?
Locally echos back commands to the text window. If disabled, no text will be returned.

Process Dot Commands


Allows toggling of Special Command processing by the service.

Throttle Service In Background?


This slows down the service when the main window is closed. Triggers may fire up to 1.5 seconds
late when throttled. This is an attempt to save as much battery power as possible.

Process Semicolons?
When enabled, the service will replace the semicolon character with a newline, allowing multiple
commands to be given from a single line. In v1.0.8, semicolons may be escaped with "~", so
entering ~; into the input bar will send the ";" character to the server.

Keep Wifi Radio Active?


Make this app attempt to keep the Wifi radio on if it's in use. It is policy that android shut off the
wifi radio when the device isn't being used, which is bad news for a persistent connection.

Cull Extraneous Colors?

Color data comes such as "[RED]roses [RED] are [RED] red[RESET]" will be stripped of
the extra red color data: "[RED] roses are red[RESET]" This can save overhead on colorized
ascii art and make scrolling that data much smoother. It is optional to allow mud developers
to view the raw, unmodified output from the mud.

Debug Telnet Options?

This option, when enabled, will print a debug message about incoming/outgoing telnet
negotiations.

Bell

Vibrate
Will the phone vibrate when bell is received?

Generate Notification
If enabled, a notification will be spawned alerting of the received bell.

Display Bell
If enabled, will display a small gui in the upper right corner of the screen when a bell is received.

Import/Export
Reset Settings to Defaults
If you messed up your settings and just want to start over, hit this option. All aliases, triggers and
buttons will be removed and selections for options in this dialog will be reset to default.

Import Settings from File


This will load a list of files ending with ".xml" from the /BlowTorch directory on the SD card and
use them for the currently open connection.

Export Settings to File


This will export the current settings, including aliases, trigger, buttons and program settings to an
XML file of the specified name in the /BlowTorch directory on the SD card. The .xml extension is
not added by default.

XML Configuration
XML Configuration of BlowTorch
The settings for a BlowTorch connection can be exported and imported into the app. All settings can
be modified in this XML file.

How settings are stored


At this point the settings storage and importing/exporting are a little convoluted. In the internal app
storage of the program resides the configuration file for the connection. Exporting settings will copy
this file to a location on the SD Card in the /BlowTorch directory. Importing settings will read the
configuration from a file in the /BlowTorch directory and use those settings for the currently open
connection, which will then be saved to the internal app storage area. In the future connections will
have a "settings location" option so this import/export business will be obsolete.

Export/Import Settings
Importing and Exporting settings files can be done from the MENU->Options page. When clicking
the export option, a dialog asking for a file name will be given, it will use this name to create a file
in the /BlowTorch directory on the SD Card (the .xml extension is not added automatically). The
import option will give a list of files with a .xml extension that currently exist in the /BlowTorch
directory on the SD Card, the selection will be imported for the currently open connection.

Window Settings
Window settings are all attributes of the <window> node under the <root> node. They include:

lineSize: Vertical height of the desired font in pixels.


spaceExtra: Extra space inbetween lines, in pixels.

maxLines: Number of lines that the window will keep.

fontName: Name of the font to use, this will be monospace, sans-serif or default if fontPath
is none.

fontPath: Path to the true type font to use.

wrapMode: (This setting currently doesn't do anything, but in the future will be used for
none, line break or word wrap wrapping modes).

Service Settings
Service settings are attributes of the <service> node.

processSemi: Weather or not semicolons will be replaced with newlines when sent to the
server. Can be "true" or "false"
processPeriod: Weather or not commands with leading periods will be processed as Special
Commands. Can be "true" or "false"
throttle: Weather or not the service will throttle itself when the window is not open. Can be
"true" or "false"

Button Sets
Settings for Button Sets are attributes of the <buttonset> node. These nodes should be children of
the <buttonsets> node which should be a child of the <root> node. A <buttonset> may have an
unlimited amount of <button> children. The attributes available for the <buttonset> node are:

setName: The name of the button set, this is what will be used in the button set selection
dialog, and as targets for other buttons to switch to. This value is a string.
Colors: all color values are 8 byte AARRGGBB hexadecimal values written as strings. (no
leading #,0x or 0h values needed).
o

color - idle button color.

flipColor - flipped button color.

labelColor - idle label color.

flipLabelColor - flipped label color.

Screen Display Info: all values are in pixels.


o

buttonHeight - height of the button.

buttonWidth - width of the button.

labelSize - height of text used as the label.

Individual Buttons
Button data is stored as <button> nodes that are children of a <buttonset> node. nodes can have the
following attributes:

label: text that is displayed in the idle state.


command: the command sent to the server when this button is clicked.

flipLabel: the label displayed in the button's idle state.

flipCommand: the command sent to the server when this button is flipped.

moveMethod: the current movement method for this button, value is an integer of the
following:
o

0: "Free" the button tracks the movement of the finger when moving.

1: "Nudge" the button tracks the movement of the finger at 1/10 scale when moving.

2: "Freeze" the button does not move, although the movement state can still be
observed.

targetSet: if this is set, this button will switch to the named button set when clicked.
String value.

xPos: x position of the center of the button, in pixels.

yPos: y position of the center of the button, in pixels.


o

If settings are moved to a phone with different screen size/resolution, buttons may
appear off the screen.

The following are the same attributes available in the <buttonset> node. If these are set,
changing the <buttonset> value will not affect this button.
o

Colors: all color values are 8 byte AARRGGBB hexadecimal values written as
strings. (no leading #,0x or 0h values needed).

color - idle button color.

flipColor - flipped button color.

labelColor - idle label color.

flipLabelColor - flipped label color.

Screen Display Info: all values are in pixels.

buttonHeight - height of the button.

buttonWidth - width of the button.

labelSize - height of text used as the label.

Aliases
Aliases are stored as <alias> node children of the <aliases> node that has the <root> node as a
parent. <alias> nodes have the following attributes:

pre: the text to replace. String value.


post: the replaced text. String value.

Triggers

Triggers are stored as <trigger> nods of the top level <triggers> node. <trigger> nodes may have the
following attributes:

title: String value used for display in the trigger selection dialog.
pattern: String value that will cause the trigger to fire. Can be "true" or "false"

interpretLiteral: Indicates weather or not the pattern should be interpreted as literal text or as
a regular expression.

I think this is currently backwards, if interpretLiteral = false, it is interpreted as a literal. If


interpretLiteral = true, then it is interpreted as a regular expression.

fireOnce: Indicates if this trigger will only fire once per connection session. Can be "true" or
"false"

hidden: Indicates if this trigger will not show up in the trigger selection dialog. Can be
"true" or "false"

Triggers may also have an unlimited number of children nodes that represent the responders
that are fired when the trigger pattern is encountered.

Responders
The 3 different responder types can be represented by <ack>,<toast> and <notification> nodes.
These nodes are used as children of <trigger> nodes.

fireWhen attribute
Each of the following nodes may have a "fireWhen" attribute set that will describe the fire behavior
of the responder. Values that can be used:

never: This responder will never fire


windowOpen: This responder will fire only if the main app window is open.

windowClosed: This responder will fire only if the main app window is closed.

always: This responder will fire always, regardless of the application window state.

<notification>

title: String value used as the title in the notification bar.


message: String value to indicate more information used as subtext in the notification.

useSound: Boolean string indicating if notification will play a sound. Can be "true" or
"false".

soundPath: Path to the sound to use, if this is blank ("") and useSound="true", the default
notification sound will play.

useLights: Boolean string indicating if lights will be shown for this notification. Can be
"true" or "false"

lightColor: AARRGGBB hexadecimal string indicating which light color to use. Hardware
will do its best to approximate. No leading #,0x or 0h used. If this is blank ("") and
useLights = true, then the default system light color will be used.

useVibrate: Boolean value indicating if this notification will vibrate when fired. Can be
"true" or "false"

vibrateType:
o

0: Default

1: Very Short

2: Short

3: Long

4: Super Long

spawnNew: Boolean string indicating if this notification will spawn a new notification each
time it is fired, or recycle the same notification but update the timestamp. Can be "true" or
"false"

useOngoing: Currently does nothing, but will be a Boolean string indicating if this
notification will use the main app's ongoing notification for it's output.

<toast>

message: String to be displayed as the toast message.


delay: Duration of the message in seconds. Integer value.

<ack>

with: String to be sent as a command to the server when this responder is fired.

You might also like