diff --git a/converter.sh b/converter.sh
new file mode 100644
index 0000000..f451165
--- /dev/null
+++ b/converter.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+for file in $(find . -name "*.html")
+do
+ basefile=`basename $file`
+ withoutextension=${basefile%.html}
+ therealpath=`realpath $file`
+ relativedir=`realpath --relative-to=$PWD $therealpath`
+ echo "Converting $basefile"
+ pandoc $therealpath -f html -t markdown -s -o $(dirname ${relativedir})/${withoutextension}.md
+done
\ No newline at end of file
diff --git a/en/activity_actionedit.md b/en/activity_actionedit.md
new file mode 100644
index 0000000..ae3d090
--- /dev/null
+++ b/en/activity_actionedit.md
@@ -0,0 +1,128 @@
+---
+title: 'Tasker: Action Edit'
+---
+
+Action Edit 
+--------------------------------
+
+This screen allows configuration of a single action in a Task.
+
+#### General
+
+At top left is the name of the action. Tapping on this allows it to be
+changed.
+
+Bottom-right is a help button. Please be sure to read the action help of
+every action before you use it for the first time, there may be e.g.
+device specific restrictions you should know about.
+
+#### Action Parameters
+
+A *parameter* gives extra detail about how the action is to be carried
+out.
+
+##### Text Parameters
+
+- are sometimes optional: in that case the text *Optional* will appear
+ as a hint unless the entry box has already been filled in
+- sometimes have a dialog to help you fill in a value which you can
+ access by clicking the magnifying glass icon next to them
+- can have [variables](variables.html) automatically inserted by
+ clicking the tag icon next to them.
+
+##### Numeric Slider Parameters
+
+Clicking the arrows icon next to numeric sliders allows you to specify
+the number textually or use a [variable](variables.html) for the
+parameter instead, if the value will not be known until the action is
+actually executed.
+
+##### *If* (Condition) Parameter
+
+*(most actions)*
+
+Allows specification of one or more conditions which must match if this
+action is to execute.
+
+Single conditions consist of a *left-hand side* (usually a variable
+name), an *operator* and a *right-hand-side* for example
+`%number, Equals, 1` indicates that the action will be executed if the
+variable %number has the value 1.
+
+When more than one condition is specified, they must be combined via
+*And* (all conditions must be true), *Or* (at least one condition must
+be true) or *Xor* (exactly one must be true). These \'combiners\' are
+called *boolean operators*.
+
+Usually, 2 or 3 conditions will be combined with all *And*s or all
+*Or*s, but in order to allow more complicated logic, Tasker also offers
+*And* and *Or* in high-precedence versions. Of the 4 boolean operators
+which are available, the selection goes from low to high precedence
+ones.
+
+The higher the precedence of a boolean operator, the further to the
+right it is shown. This enables the logical groups to be visualised.
+
+Examples:
+
+`True | False & True | False` is the same as
+`( True | False ) & ( True | False )` so is **True**.
+
+`True & False | True & False` is the same as
+`True & ( False | True ) & False` so is **False**.
+
+`True & False | True |+ False` is the same as
+`True & ( False | ( True | False ) )` so is **True**.
+
+Note that the order of the conditions can mean that some conditions are
+never evaluated. For instance, when two conditions are present and the
+one above an *And* is **false** then the condition below it will never
+be evaluated. This can be advantageous if the second condition takes
+relatively more resources e.g. involves matching against a lot of text.
+
+Please see the section on [Flow Control](flowcontrol.html) for more
+information.
+
+##### *Continue Task After Error* Parameter
+
+*(selected actions only)*
+
+By default, if an action fails with an error (e.g. the user specified to
+delete a file that doesn\'t exist) Tasker will stop the task immediately
+and the remaining actions will never be executed.
+
+This parameter specifies that the task should continue even if this
+action fails.
+
+In addition, if it\'s checked, errors will be logged in the system log
+as diagnostics instead of errors and error popups will be surpressed.
+
+##### *Label* Parameter
+
+*(all actions)*
+
+A label for the action which is shown on the Task Edit screen. This
+parameter could also be used to add comments to actions to help
+understand how the task works.
+
+Labels are also used with `Goto` actions to jump from one part of the
+task to another.
+
+#### Menu Options
+
+##### *Search*
+
+Search for and jump to a specified action. The entered term is searched
+against action properties in the following order:
+
+1. the action number
+2. the action label if present
+3. the action name
+4. the action description, including the action parameter contents
+
+The matching is case-insensitive. Searching starts from the current
+action and wraps around. Only the header action (
+
+If
+
+or *For*) of closed blocks is searched.
diff --git a/en/activity_elementedit.md b/en/activity_elementedit.md
new file mode 100644
index 0000000..e2e4457
--- /dev/null
+++ b/en/activity_elementedit.md
@@ -0,0 +1,258 @@
+---
+title: 'Tasker: Scene Element Edit'
+---
+
+Scene Element Edit 
+---------------------------------------
+
+Allows configuration of the properties of a scene element. The different
+types of property are divided into tabs.
+
+- [UI](#ui)
+- [Items](#items)
+- [Background](#background)
+- [Event](#event)
+ - [Change](#checkchange)
+ - [Focus](#focus)
+ - [Tap, Long Tap](#tap)
+ - [Item Select](#itemselect)
+ - [Value Selected](#value)
+ - [Item Tap](#itemtap)
+ - [Stroke](#stroke)
+ - [Text Changed](#text)
+ - [Link Tap](#linktap)
+ - [Page Loaded](#pageloaded)
+ - [Video](#video)
+
+Not all elements have all tabs.
+
+[]{#ui}
+
+### UI
+
+For the most part, configures the visual style of the element.
+[]{#items}
+
+### Items
+
+Only relevant to Menu and Spinner elements.
+
+Each row configures an item in the menu/spinner. Starting from the left,
+the controls are:
+
+- **selection checkbox**\
+ this is only present when *Selection Mode* is set to **Single** or
+ **Multi**. It stipulates whether the item will be shown as selected
+ when the menu is displayed.
+- **icon button**\
+ the icon to show for the item. If you don\'t want to show an icon,
+ hide the icon element in the Layout parameter in the UI tab
+- **label text**\
+ the label to show for the item. If you don\'t want to show a label,
+ hide the label element in the Layout parameter in the UI tab
+- **action button**\
+ an action to run when the item is tapped
+
+To add an item, click the plus button at the bottom of the screen. Items
+can be rearranged and deleted by click-and-dragging at the right hand
+side.
+
+[]{#background}
+
+### Background
+
+Configures a rectangle shape to be used as the background for the
+element when it is displayed. The background will be stretched to fit
+the size of the element.
+
+If you want to use an image for a background, create a separate Image
+element and place it underneath. []{#event}
+
+### Event Tabs
+
+Event tabs stipulate what Tasker should do when the user interacts with
+the element in some way. When the scene is showing, the event will also
+occur if an action (probably Element Value) sets the element.
+
+Most events consist only of a task to specify but some allow a filter
+specification so that the task only runs if the event matches the
+filter.
+
+To help the task to decide what to do with the event and to allow a
+single task to handle many different events if desired, Tasker sets
+certain local variables which give specific information about it. The
+variables are easily accessible by clicking the usual variable tag icon
+in any action in the task.
+
+The following variables are available in all such tasks:
+
+- **%scene\_name**\
+ the name of the scene containing the element
+- **%element\_name**\
+ the name of the element that the user interacted with (e.g. Button1)
+- **%element\_type**\
+ the type of element (e.g. Button)
+- **%event\_type**\
+ the name of the event (e.g. Tap)
+
+[]{#text}
+
+#### Text Changed
+
+Elements: *TextEdit*
+
+This event is triggered whenever the text changes e.g. because a letter
+key has been pressed while the element had focus.
+
+- **%new\_val**\
+ the new text
+- **%old\_val**\
+ the old text
+
+Text entry is buffered so that it may be up to 1 or 2 seconds before new
+input is seen, and that input may include several accumulated changes.
+
+[]{#checkchange}
+
+#### Change
+
+Elements: *CheckBox, Toggle*
+
+- **%new\_val**\
+ the new state of the element (*on* or *off*)
+- **%old\_val**\
+ the last state (*on* or *off*)
+
+[]{#focus}
+
+#### Focus
+
+This event is triggered when the element gains or loses focus, probably
+because the user has tapped it or another focusable element.
+
+Elements: *TextEdit*
+
+- **%focused**\
+ whether the element now has focus (*true*) or not (*false*)
+
+[]{#tap}
+
+#### Tap, Long Tap
+
+Elements: *Button, Doodle, Image, Map, Oval, Rectangle, Text*
+
+In a *Map* element, the following variables are available:
+
+- **%coord**\
+ the latitute,longitude of the tapped location on the map
+- **%label**\
+ the label of the tapped GeoMarker (if any). You can add GeoMarkers
+ to a Map element with the action Scene / Element Add GeoMarker
+
+[]{#value}
+
+#### Value Selected
+
+Elements: *Number Picker, Slider*
+
+- **%new\_val**\
+ the new value of the element (e.g. 50)
+- **%old\_val**\
+ the last selected value (e.g. 43)
+
+[]{#itemtap}
+
+#### Item Tap, Item Long Tap
+
+Elements: *Menu*
+
+- **%select\_indices**\
+ a comma-separated list of currently selected items in the list (e.g.
+ 3,4)
+- **%select\_labels**\
+ a comma-separated list of the labels of currently selected items in
+ the list (e.g. Blue,Yellow)
+- **%tap\_index**\
+ the index of the item that was tapped to cause this event (e.g. 3)
+- **%tap\_label**\
+ the label of the item that was tapped to cause this event (e.g.
+ Blue)
+
+[]{#stroke}
+
+#### Stroke
+
+Elements: *Doodle, Image, Oval, Rectangle, Text*
+
+A stroke has two filter parameters.
+
+- **Direction**\
+ the direction from the start point of the stroke to the end point
+- **Length**\
+ minimum distance in (approximate) pixels from the start point of the
+ stroke to the end point
+
+If either of these parameters don\'t match the event, the task will not
+run.
+
+- **%stroke\_dir**\
+ Direction, as described above
+- **%stroke\_len**\
+ Length, as described above
+
+[]{#itemselect}
+
+#### Item Select
+
+Elements: *Spinner*
+
+Occurs when a **new** item is selected.
+
+- **%tap\_index**\
+ the index of the item that was selected
+- **%tap\_label**\
+ the label of the item that was selected
+
+[]{#linktap}
+
+#### Link Tap
+
+Elements: *WebView*
+
+A Link Tap has two filter parameters:
+
+- **URL**\
+ the URL of the tapped link. If entered, the tapped URL must
+ [match](matching.html) the entry (e.g. http://\*.fruit.com) for the
+ task to run
+- **Stop Event**\
+ whether to stop the WebView following the link
+
+
+
+- **%url**\
+ URL as described above
+
+[]{#pageloaded}
+
+#### Page Loaded
+
+Elements: *WebView*
+
+- **%url**\
+ the URL of the page (e.g. http://i.hate.fruit/except/mangos.html)
+
+[]{#video}
+
+#### Video
+
+Elements: *Video*
+
+Occurs when the state of the video playback changes.
+
+- **%event\_subtype**\
+ the type of the video event, possible values being: *Prepared,
+ BufferStart, BufferEnd, RenderStart, Lagging, Finished*
+
+Note that the **Finished** event will never occur if the Video element
+has the `Loop` parameter checked.
diff --git a/en/activity_eventedit.md b/en/activity_eventedit.md
new file mode 100644
index 0000000..97787b5
--- /dev/null
+++ b/en/activity_eventedit.md
@@ -0,0 +1,53 @@
+---
+title: 'Tasker: Event Edit'
+---
+
+Event Edit 
+-------------------------------
+
+This screen allows configuration of an [Event
+Context](eventcontext.html).
+
+#### Event Name
+
+The name of the event is given at the top of the screen. Clicking on it
+allows changing to another event type.
+
+In the top right is a button to show help for the displayed event type.
+
+#### Priority
+
+Only present for relevant events.
+
+Selects the priority at which this event will be detected. An event can
+be processed by other Tasker Profiles, other installed applications and
+system processes.
+
+If priority is high, then this profile will be more likely to detect the
+event before other processes, and vice versa.
+
+#### Stop Event
+
+Only present for relevant events.
+
+If checked, then once this profile has dealt with the event, other user
+or system applications will no longer be able to see it.
+
+You can achieve different effects by combining *Priority* and *Stop
+Event*. For instance, if you want to show a Tasker menu when the camera
+button is pressed, you would set *Priority* **High** and check the *Stop
+Flag*, because you do not want the camera application to appear
+afterwards.
+
+#### Event Parameters
+
+Some events have paramaters to specify more details about the event. To
+get help on particular parameters, click the question-mark icon at top
+right.
+
+Text parameters are treated as [pattern matches](matching.html).
+
+If you would like to make more complex comparions (e.g. mathematical
+expressions), leave the event parameter blank and instead put a
+[condition](flowcontrol.html#condition) on the first action of the task
+you execute with the profile.
diff --git a/en/activity_locselect.md b/en/activity_locselect.md
new file mode 100644
index 0000000..cc11a3e
--- /dev/null
+++ b/en/activity_locselect.md
@@ -0,0 +1,74 @@
+---
+title: 'Tasker: Location Edit'
+---
+
+Location Edit 
+----------------------------------
+
+This screen allows configuration of a [Location
+Context](loccontext.html).
+
+#### Map Display
+
+The map shows the location (base of the flag icon), radius and names of
+all defined location contexts
+
+The location currently being defined has a yellow base, other location
+contexts have a blue base.
+
+#### Map Controls
+
+- **long-click** on the map to select a location for this context.
+- **long-click then drag** on the flag for the current location to
+ drag it
+
+Use the pull-down selector under the map to specify the radius for this
+context.
+
+**Important:** if your radius is too small compared to the accuracy of
+the fixes you are receiving, your context may never go active. If you
+can\'t get a fix, try increasing the radius. Typically, a good radius
+would be around twice the accuracy of the fixes you are receiving.
+
+If you have no internet available in order to retrieve the map tiles,
+you can still use the **Get Fix** button (see below) to specify your
+current location.
+
+#### Action Bar Options
+
+##### Grab (\'My Location\') Button
+
+Acquires a location fix using the enabled and available providers (make
+sure the GPS Button is clicked first if you want to use GPS).
+
+Once a fix is acquired, the latitude, longitude and radius of this
+location context are set according to it. If you reduce the radius after
+a fix, Tasker may no longer accurately detect whether you are in or out
+of the context.
+
+When trying to determine current location, Tasker will keep going with
+fixes until they stop improving (e.g. as the GPS locks on to more
+satellites). If you get impatient you can press the Get Fix button again
+to stop the process (its label is changed to **Stop** while a fix is
+being acquired).
+
+##### Address Menu Item
+
+Allows entry of an address for which this location context should be
+active.
+
+#### Bottom Buttons
+
+##### Net Button
+
+The Net toggle button specifies whether to use the
+[Network](loccontext.html#net) location provider to monitor for this
+location
+
+##### GPS Button
+
+The GPS toggle button specifies whether to use
+[GPS](loccontext.html#gps) to monitor for this location (assuming it is
+available on the device). If GPS is not used, the network will need to
+be available in order to query for location fixes based on cell-towers
+or WiFi data.
diff --git a/en/activity_main.md b/en/activity_main.md
new file mode 100644
index 0000000..2199691
--- /dev/null
+++ b/en/activity_main.md
@@ -0,0 +1,224 @@
+---
+title: 'Tasker: Main Screen'
+---
+
+Main Screen 
+--------------------------------
+
+This is the first screen shown when you startup Tasker. It allows you to
+organize and configure Tasker\'s four main \'building blocks\':
+*Profiles, Tasks, Scenes* and *Variables*.
+
+- Main Tabs
+ - [Profiles](#profiles)
+ - [Tasks](#tasks)
+ - [Scenes](#scenes)
+ - [Variables](#variables)
+- [Action Bar](#action)
+- [Menus](#menus)
+- [Projects](#projects)
+
+### Main Tabs
+
+Displayed in the action bar on most devices.
+
+- **Click** on a tab to view a list of the relevant things
+- **Click** on an **already selected** tab to get options for it
+
+[]{#profiles}
+
+#### *Profiles*
+
+Each item in the list represents a profile. The profile links contexts
+(conditions) on the left to tasks which should be run on the right. The
+profile name is green if the profile is active. There are three main
+parts to each profile.
+
+##### *1. Title Bar*
+
+This shows the profile name (or description if it has no name) and a
+switch on the right shows whether the profile is enabled or not.
+
+- **Click** on the name to expand / collapse the profile. When
+ expanded, the contexts and tasks (described below), are visible.
+- **Long-click** on the profile name to get profile options or to drag
+ profile(s) around
+- **Click** on the switch to control whether the profile is enabled or
+ not.
+
+Important: the switch being set to **on** does **not** mean the profile
+is **active** (will run its tasks), it means that the profile **can**
+become active **if** its conditions are met.
+
+##### *2. Contexts*
+
+On the left hand side of the profile are an icon and text for each
+context in the profile. The contexts dictate when the profile should
+become active. When **all** contexts are active then the profile will be
+active.
+
+- **Click** on the context to edit it
+- **Long-click** to show management options, such as editing or adding
+ a new context
+
+You can configure what clicks and long-clicks on contexts do in
+`Menu / Prefs / UI`.
+
+##### *3. Tasks*
+
+On the right hand side of the profile are one or two tasks to carry out
+based on its activation status.
+
+- **Click** on the task to edit it
+- **Long-click** to show management options.
+
+A task indicated with a **green, right-pointing** arrow is an *entry*
+task, executed when the profile first becomes active.
+
+A task indicated with a **red, left-pointing** arrow is an *exit* task,
+executed when the profile becomes inactive again.
+
+Exception: a profile containing an event context or a repeating or
+non-ranged time context has two green arrows, to denote that both tasks
+are executed immediately because the profile activation and deactivation
+is instantaneous.
+
+Click on the **Profiles** tab when it is already selected for general
+profile-related options such as sorting.
+
+[]{#tasks}
+
+#### Tasks
+
+The task list shows the named [tasks](tasks.html) which have been
+created.
+
+- **Click** on a task to edit it
+- **Long-click** for options or to drag task(s) around
+
+Note that a profile can be assigned an *anonymous* task (one without a
+name) which is not accessible in the task list, only via the relevent
+profile in the profile list.
+
+Click on the **Tasks** tab when it is already selected for general
+task-related options such as sorting.
+
+[]{#scenes}
+
+#### Scenes
+
+The scene list shows the [scenes](scenes.html) which have been created.
+
+- **Click** on a scene to edit it
+- **Long-click** for options or to drag scene(s) around
+
+Scenes with a green name have been created but may be invisible
+(hidden).
+
+Click on the **Scenes** tab when it is already selected for general
+scene-related options such as sorting.
+
+[]{#variables}
+
+#### Variables
+
+The Variables tab is not shown if [Beginner Mode](beginner.html) is
+enabled.
+
+By default, all global [user-variables](variables.html) that Tasker
+knows about are listed, which includes any that have a value set or are
+mentioned somewhere in a profile, task or scene.
+
+- **Click** on a variable to edit it
+- **Long-click** for options
+
+Note that variables whose names are all lower-case are *local* variables
+and not shown because they are only valid within the task that refers to
+them.
+
+Click on the **Vars** tab when it is already selected for general
+variable-related options such as sorting and filtering.
+
+The filter controls function as follows:
+
+- **Indexed** (button)\
+ includes variables whose names end in a number e.g. `%LOC3`,
+ otherwise they are excluded.
+- **Empty** (button)\
+ includes variables which have currently have no value assigned,
+ deselect to show only variables that have a value.
+- **Referenced** (button,home project only)\
+ includes variables which are referenced in profiles, tasks or
+ scenes.\
+ Deselect to show only \'orphan\' variables.
+- **Filter** (textbox)\
+ excludes variables which don\'t contain the specified text somewhere
+ in their name (case-sensitive)
+
+In a user-created project, only variables referenced by that project are
+shown.
+
+Unlike most screens in Tasker, changes made in the variable list cannot
+be cancelled.
+
+[]{#action}
+
+#### Action Bar
+
+##### *Apply* Button
+
+Save and apply any changes which have been made **without** exiting the
+UI.
+
+This is unnecessary prior to leaving the UI via the back button or home
+key, it\'s just for convenience when testing changes.
+
+Not visible in [Beginner Mode](beginner.html).
+
+##### *Overflow* Button
+
+Click to access menu options if no menu hard-key is available on the
+device. []{#menus}
+
+### Menus
+
+#### Menu Item: Browse Examples
+
+Links to websites with projects, profiles etc offering solutions for
+common problems. Important: once downloaded you need to import the file
+into your active user data. For example, profiles are imported by
+long-clicking the profile tab and selecting Import.
+
+#### Menu Items: Data
+
+##### Clear
+
+Removes all data that has been created to that point. Does not remove
+preferences (use `Menu / Preferences` and click **Defaults** for that)
+or variables (long-click on the Variables tab for that).
+
+##### Backup
+
+Saves the existing user data to a backup file on external storage.
+
+##### Restore
+
+Options for restoring backups of various types. []{#projects}
+
+### Projects
+
+Tasker allows organisation of profiles, tasks, scenes and variables into
+groups called *Projects*, each with a separate *Project Tab*.
+
+The projects tabs are hidden in [Beginner Mode](beginner.html).
+
+- **Click** on a project tab to switch to viewing only things in that
+ project
+- **Long-click** on a project tab for options, including adding a new
+ tab. Options can also be accessed by a single click on the selected
+ project tab.
+- **Long-click and Select**, then drag to a project tab, any items you
+ want to move to that project
+
+The first tab has a slightly special status, it cannot be removed and
+anything which is not a member of another project is placed there.
diff --git a/en/activity_runlog.md b/en/activity_runlog.md
new file mode 100644
index 0000000..fa088bf
--- /dev/null
+++ b/en/activity_runlog.md
@@ -0,0 +1,140 @@
+---
+title: 'Tasker: Run Log'
+---
+
+Run Log 
+----------------------------
+
+The *Run Log* shows profile status changes and task/action execution to
+help when things aren\'t working as expected. Log entries will only be
+recorded when the log is enabled by the switch in the top right.
+
+Items are colour-coded according to what they refer to:
+
+- purple: a task
+- orange: a profile
+- light blue: an action
+- black/white: the monitor or execution service
+
+Most items are long-clickable for options e.g. to view the corresponding
+item from the user configuration.
+
+### Details Column
+
+Displays the thing which the entry refers to. For example, `MyTask.Wait`
+refers to a *Wait* action in the task *MyTask*.
+
+Some notable details are:
+
+- `System` refers to a task created by Tasker, usually to restore a
+ [setting](settings.html) when a profile deactivates.
+- `Anon` refers to an *anonymous* task (has no name) which is the
+ entry or exit task of a profile.
+- actions with a variable paramater show (after the action name) what
+ the value of the variable was **after** the action has completed
+
+### ID Column
+
+Shows Tasker\'s internal ID for the thing which the entry refers to.
+This is most useful for actions e.g. `2.4` refers to the fourth action
+in the task with ID 2.
+
+Some task or action ID entries may also have a number after a colon;
+since multiple copies of a particular task can run at the same time,
+each task also receives a unique *execution* ID to distinguish it from
+others with the same *data* ID. The execution ID is shown with a colon
+e.g. a task with ID`2:3` is the task with data ID 2 and execution ID 3.
+
+Usually, the execution service will start up, run a task and then stop,
+so most tasks have execution ID 1. The Run Log doesn\'t show the
+execution ID in that case.
+
+### Status Column
+
+Describes the new status of whatever has changed which caused a log
+entry to be made. A status which is erronous (a problem occured) is
+displayed in red text.
+
+##### Services
+
+- *Start*\
+ the service has started. Unexpected *Start* entries for the Monitor
+ service are usually caused by Android killing the service because
+ the `Run In Foreground` has been disabled in Tasker\'s Monitor
+ preferences
+- *Stop*\
+ the service has stopped
+- *Restart*\
+ the service was restarted, usually because new data must be loaded
+ due to the user changing the configuration.
+
+##### Profiles
+
+- *Active*\
+ the profiles conditions were met so it became active
+- *Inactive*\
+ the profiles conditions were no longer all met, so became
+ deactivated
+- *Instant*\
+ an [instant profile](faq-other.html#instant) had a momentary
+ activation
+
+##### Tasks
+
+- *RejBad*\
+ task was rejected because it was malformed task e.g. had no actions
+- *RejCopy*\
+ task was rejected because it\'s a second copy of a task which has
+ *Abort New Task* set for *Collision Handling* in its preferences
+- *RejMaxQ*\
+ the maximum number of queued tasks (determined in Action
+ preferences) has been reached
+- *RejOff*\
+ Tasker was disabled at the time the task was submitted
+- *Running*\
+ the task has been entered in the run queue. Other tasks may still
+ have their actions executed before this one (see [Task
+ Scheduling](tasks.html#scheduling))
+- *ExitErr*\
+ the task has stopped after an error
+- *ExitOK*\
+ the task has finished all its actions and stopped
+- *ExitRep*\
+ the task has stopped because a second copy of it has arrived and
+ *Abort Existing Task* s specified for its *Collision Handling*
+ preferences
+- *ExitKill*\
+ the task has been stopped because the execution service is stopping
+
+##### Actions
+
+- *Disabled*\
+ the action was disabled via the UI so was skipped
+- *Err*\
+ an error occurred while running the action, causing the task to stop
+- *ErrIgnore*\
+ an error occurred, but the task could continue (probably because
+ *Continue On Error* was specified in the action parameters
+- *Exception*\
+ a totally unexpected error occurred (things like bugs in Tasker or
+ Android), causing the action to fail and the task to stop
+- *OK*: the action completed OK
+
+### Pause/Play Indicator
+
+The Pause/Play indicator shows whether the list of entries is updating.
+That\'s only the case when the list is at the top i.e. the most recent
+chronological entries are showing.
+
+### Filter Controls
+
+Below the list of log entries are some filter controls.
+
+Profiles, tasks and action entries are only shown if the corresponding
+button is toggled on.
+
+If a filter text is entered in the text box, entries will only be
+displayed if they have text which matches the filter.
+
+When an entry is excluded by the filter controls, it\'s shown as a small
+bar on the left side of the list.
diff --git a/en/activity_sceneedit.md b/en/activity_sceneedit.md
new file mode 100644
index 0000000..edcfe65
--- /dev/null
+++ b/en/activity_sceneedit.md
@@ -0,0 +1,114 @@
+---
+title: 'Tasker: Scene Edit'
+---
+
+Scene Edit 
+-------------------------------
+
+The scene editor is used for designing custom scenes.
+
+The editor consists of three areas:
+
+### Display Area
+
+The main part of the editor, where the position and size of elements are
+arranged. The display area has two modes dependent on the setting of the
+magnifying glass icon in the corner.
+
+#### Preview Mode
+
+This mode shows the scene as it will appear when displayed.
+
+- Click-and-drag on the **edge** of the scene to resize it
+
+#### Editing Mode
+
+This mode is zoomed to make editing easier.
+
+- **Long-click** on an **empty** area to create a new element
+ positioned there
+- **Long-click** on an **element** to get options for the element
+- **Click** on an **element** to edit it.
+- **Click-and-drag** on the **centre** of an element to move it
+- **Click-and-drag** on the **edge** of an element to resize it
+
+When moving and resizing, the sides of elements are snapped to a grid to
+make alignment easier. The grid size is unique to each scene and can be
+changed via **Menu / Grid Size**.
+
+### Tool Bar
+
+#### Touch Mode
+
+There are four touch modes which decide the effect of taps on the
+display area. *Normal Mode* is described above. *Edit Mode* is the same
+as *Normal Mode* except that all controls except the Touch Mode selector
+are hidden to allow access to small controls along the scene edges.
+*Move Mode* is intended to make it easier to reposition elements.
+*Resize* mode is for making resizing easier.
+
+#### Element Picker
+
+Allows selection of an element by name. This is most useful when an
+element is difficult to directly click on due to other elements or
+because it\'s very small.
+
+Both short and long clicks on the element names behave the same as short
+and long clicks on the element itself.
+
+#### Undo
+
+Allows undo of all operations, up to 20 steps in the past.
+
+#### New Element
+
+Create a new element in the **middle** of the scene. Useful if the scene
+is already cluttered with a lot of elements so there is no free space.
+
+### Menu Options
+
+#### Background Colour
+
+A complex background can be set by long-tapping an element and
+specifying it as the [background element](#back). If a uniform colour is
+sufficient, it can also be specified with this menu option.
+
+However, there is a special case where it\'s a good idea to specify a
+background colour even if you already have a background element. A scene
+is resized to fit the container into which it\'s placed, but in some
+cases (e.g. when it is shown as a full screen activity) there will be
+margins left on one side of the container because the *aspect ration* of
+the scene (the relative size of its width and height) of a scene is
+never changed. In such a case, the margins are coloured with the
+background colour specified here.
+
+### Element Long-Click Options
+
+[]{#back}
+
+#### Set Background
+
+An element which is set as the scene background is resized to always
+fill the whole scene and interferes less with selection of other
+elements. To reverse this, long-tap on it and select **Set Foreground**.
+
+#### Pin
+
+When an element is positioned satisfactorily, it can be pinned to make
+it easier to select and manipulate other elements. To reverse this,
+long-tap on it and select **Unpin**.
+
+#### Set Depth
+
+Each element has a particular depth which is unique to it. Deeper
+elements are obscured by shallower elements which overlap them.
+
+### Orientation
+
+The geometry (**position** and **size**) of each element can be
+configured independently for portrait and landscape display orientations
+by rotating the device to the desired orientation in the editor.
+
+If no geometry is configured for a particular orientation when the scene
+is displayed, Tasker will attempt to fit the elements into the scene
+based on the geometry of the elements in the other orientation.
diff --git a/en/activity_scenepropertiesedit.md b/en/activity_scenepropertiesedit.md
new file mode 100644
index 0000000..3cb912a
--- /dev/null
+++ b/en/activity_scenepropertiesedit.md
@@ -0,0 +1,156 @@
+---
+title: 'Tasker: Scene Properties Edit'
+---
+
+Scene Properties Edit 
+------------------------------------------
+
+Allows configuration of the general properties of a scene. The different
+types of property are divided into tabs.
+
+Each basic type of scene (*Overlay, Dialog* and *Activity*) has a
+different set of relevant properties. The *Property Type* parameter in
+the **UI** tab determines which properties are shown for configuration.
+
+- [UI](#ui)
+- [Actions](#actions)
+- [Event](#event)
+ - [Key](#key)
+ - [Home Tap](#hometap)
+ - [Tab Tap](#tabtab)
+
+[]{#ui}
+
+### UI
+
+Configures the visual style and content of the scene.
+
+*Geometry* (not shown in [Beginner Mode](beginner.html)) allows precise
+specifiction of the pixel size of the scene in portrait and/or landscape
+modes.
+
+*Orientation* determines how to make the decision about whether the
+scene should be displayed in portrait or landscape mode. The [Android
+developer
+guide](https://developer.android.com/reference/android/R.attr.html#screenOrientation)
+explains the various options.
+
+The *Action Bar Style, Title, Subtitle, Icon* and *Tab Labels* are only
+relevant to Activity scenes and refer to properties of the action bar.
+
+*Icon* refers to the home icon in the top-left of the action bar. When
+clixked it generates a [Home Tap](#hometap) event.
+
+*Tab Labels* is a comma-separated list of tabs to show in the action
+bar. When a tab is selected it generates a [Tab Tap](#tabtap) event.
+
+[]{#actions}
+
+### Actions
+
+Only relevant for Activity scenes.
+
+Each row configures an action item in the action bar. Starting from the
+left, the controls are:
+
+- **icon button**\
+ the icon to show for the item
+- **label text**\
+ the label to show for the item
+- **action button**\
+ an action to run when the item is tapped
+
+To add an item, click the plus button at the bottom of the screen. Items
+can be rearranged and deleted by click-and-dragging at the right hand
+side.
+
+Whether the items are shown in the main bar or the *Overflow Menu*
+(accessed via the 3 dots in the top right of the action bar) is decided
+using the following rules:
+
+- items with **just an icon** will always be shown in the main bar
+- items with **icon and label** will be shown if there is room
+- items with **just a label** will always be in the overflow menu
+
+[]{#event}
+
+### Event Tabs
+
+Event tabs stipulate what Tasker should do when the user interacts with
+the scene in some way. Most consist only of a task to specify but some
+allow a filter specification so that the task only runs if the event
+matches the filter.
+
+To help the task to decide what to do with the event and to allow a
+single task to handle many different events if desired, Tasker sets
+certain local variables which give specific information about it. The
+variables are easily accessible by clicking the usual variable tag icon
+in any action in the task.
+
+The following variables are available in all such tasks:
+
+- **%scene\_name**\
+ the name of the scene containing the element
+- **%event\_type**\
+ the name of the event (e.g. Tab Tap)
+
+[]{#key}
+
+#### Key
+
+Available only for Dialog and Activity scenes.
+
+Occurs when a key has been pressed which has **not been dealt with
+elsewhere**. Note that EditText elements with focus will absorb key
+presses and they won\'t generate a separate Key event.
+
+The filter part of the Key event acts as follows:
+
+- *Keys*: a slash-separated (/) list limiting the keys to handle,
+ other keys will be passed on to the system to handle. When no keys
+ are specified, all keys will be handled.\
+ The keys can be specified via code or name e.g. **back/78/a**
+- *Stop Event*: if checked, any keys handled by the scene will not be
+ passed on to the system. Example use: prevent a user leaving the
+ scene via the back key.
+
+The following variables are available in tasks triggered by *Key*
+events:
+
+- **%key\_code**\
+ the unique numeric identifier
+- **%key\_name**\
+ the human name of the key
+
+Key codes and their names can be found on the Android
+[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent.html)
+reference page. Note that Tasker removes the KEYCODE prefix in keynames
+to save typing.
+
+[]{#hometap}
+
+#### Home Tap
+
+Available only for Activity scenes and when an *Icon* has been specified
+in the UI tab.
+
+The event is triggered when the user taps the home icon in the top left
+of the action bar.
+
+[]{#tabtap}
+
+#### Tab Tap
+
+Available only for Activity scenes and when one or more *Tab Labels*
+have been specified in the UI tab.
+
+The event is triggered when the user taps a tab in the action bar.
+
+The following variables are available in tasks triggered by *Tab Tap*
+events:
+
+- **%tap\_index**\
+ the tab number, starting at 1
+- **%tap\_label**\
+ the tab label, as specified in the Tab Labels parameter of the UI
+ tab
diff --git a/en/activity_stateedit.md b/en/activity_stateedit.md
new file mode 100644
index 0000000..1068353
--- /dev/null
+++ b/en/activity_stateedit.md
@@ -0,0 +1,34 @@
+---
+title: 'Tasker: State Context'
+---
+
+State Context 
+----------------------------------
+
+A *State Context* allows specification of the continuing state of a
+software or hardware entity.
+
+The State Edit screen allows configuration of the state and its
+parameters.
+
+#### State Name
+
+The name of the state is given at the top of the screen. Clicking on it
+allows changing to another state type.
+
+Next to the name is a button to show help for the displayed state type
+and its parameters. Be sure to check the help text if you have trouble
+with a particular state.
+
+#### State Parameters
+
+##### General Parameters
+
+All states have parameters to specify more details about the state.
+
+Text parameters are treated as [pattern matches](matching.html).
+
+##### Invert Parameter
+
+All states have an *invert* parameter, which specifies that the context
+should become active when it would usually be inactive, and vice-versa.
diff --git a/en/activity_taskedit.md b/en/activity_taskedit.md
new file mode 100644
index 0000000..7ee6869
--- /dev/null
+++ b/en/activity_taskedit.md
@@ -0,0 +1,98 @@
+---
+title: 'Tasker: Task Edit'
+---
+
+Task Edit 
+------------------------------
+
+This dialog allows editing of the actions in a task, and various
+properties of the task.
+
+#### Action List
+
+The main part of the screen is a list of the actions contained in the
+currently selected task.
+
+- **Click** on an action to edit it
+- **Long-click** on an action to enter multi-select mode and for
+ options
+- **Click-and-drag** at the right hand side of the action to move it
+ around e.g. to the trash bin
+
+If a particular action is a [setting](settings.html), that will be
+indicated on the right-hand side of the action.
+
+##### Condition and Block Colours
+
+If an action has had a condition set for it, the condition is shown with
+a red or green bar next to it; **green** indicates that the condition is
+currently met (the action will execute), **red** indicates the opposite.
+Of course, when the task is executed it could be that it changes things
+so that the condition is then met.
+
+If an action is within an `If / End If` block it is displayed indented
+with a red or green margin. The colours have the same significance as
+for individual action conditions described above.
+
+If an action is within a [For loop](flowcontrol.html#for) it is
+displayed indented with a **grey** margin. If the `For` action has a
+condition on it which is not met, the margin will be **red** (because
+the actions in the loop will never execute, like an `If / End If`
+block).
+
+#### Task Control Row
+
+Directly underneath the action list is a row of buttons with icons.
+
+##### Play/Step Buttons
+
+Run the task.
+
+The Play button will run the task right through till the end, the Step
+button will run a single task each time it\'s pressed.
+
+During tasting, the current action is shown with an arrow and the next
+task with a faded arrow.
+
+The success of each action is shown when it finishes with a green
+(action OK) or red (action failed) circle.
+
+Tasks run via the Play or Step button have priority **10**.
+
+Long-click the Play or Test button to manually set the priority of the
+task when it runs **during the test**. Please be aware that setting a
+lower priority can result in interference from other tasks running which
+are e.g. triggered by profiles.
+
+Tip: pressing the Step button while a task is playing will cause the
+task to switch to stepping mode when the current action finishes.
+
+##### Add Action Button
+
+Add an action to the end of the task. When in multi-select mode, adds an
+action after the current selected item, if only one item is selected.
+
+##### Task Properties
+
+Show extended properties for the task. Not visible in [Beginner
+Mode](beginner.html).
+
+##### Task Icon
+
+Shows the icon associated with the task. Clicking on it allows changing
+of the icon.
+
+#### Menu Items
+
+##### Action Labels
+
+Toggle display of action labels (which are specified in the [Action
+Edit](activity_actionedit.html) screen).
+
+##### Param Names
+
+Toggle display of the name of each action parameter.
+
+##### Icons
+
+Toggle display of the setting/action indicator icon for each action.
diff --git a/en/activity_widget_configure.md b/en/activity_widget_configure.md
new file mode 100644
index 0000000..84a9165
--- /dev/null
+++ b/en/activity_widget_configure.md
@@ -0,0 +1,21 @@
+---
+title: 'Tasker: Widget Configure'
+---
+
+Widget / Shortcut Configuration 
+----------------------------------------------------
+
+This screen allows selection and configuration of a task which will be
+performed when an icon is clicked on the Android home screen or a timer
+elapses.
+
+Please read about [Task Widgets / Shortcuts](app_widgets.html) before
+venturing further on this screen.
+
+The layout of the Configuration screen is nearly identical to that of
+the [Task Edit](activity_taskedit.html) screen.
+
+When creating a Task Timer widget, you\'ll find a different button in
+the bottom right which allows initialization of the timer. You can use
+this, or wait till the widget is created and then click on the icon to
+configure the timer.
diff --git a/en/androidpowermanagement.md b/en/androidpowermanagement.md
new file mode 100644
index 0000000..1567134
--- /dev/null
+++ b/en/androidpowermanagement.md
@@ -0,0 +1,29 @@
+---
+title: 'Tasker: Android System Power Management'
+---
+
+Android System Power Management 
+----------------------------------------------------
+
+Starting with Android 5.0, many devices will act aggressively to try and
+save system battery power. Unless certain steps are taken, Tasker may
+not function as expected, either because Android is not sending it the
+needed signals in order to save power or because Android is even killing
+Tasker.
+
+A commonly noticed symptom is that profiles with Time contexts don\'t
+activate or deactivate at the expected time.
+
+### Make Sure Tasker Is Not Killed By The OS
+
+
+
+Making sure that Tasker is not killed by the system can be tricky
+because of all the restrictions Android applies to background apps, but
+in the majority of cases it\'s possible to do.
+
+
+
+#### Please go through the list [here](https://tasker.joaoapps.com/userguide/en/faqs/faq-problem.html#00) for Tasker specific settings.
+
+#### Also make sure to check out this page for vendor specific procedures: [dontkillmyapp.com](https://dontkillmyapp.com/?app=Tasker)
diff --git a/en/app_widgets.md b/en/app_widgets.md
new file mode 100644
index 0000000..c212224
--- /dev/null
+++ b/en/app_widgets.md
@@ -0,0 +1,112 @@
+---
+title: 'Tasker: Task / Shortcut Widgets'
+---
+
+Task / Shortcut Widgets 
+--------------------------------------------
+
+The standard way of running a Tasker task is by attaching it to a
+profile which performs it when the profile becomes active. However,
+tasks can be directly assigned to icons on the home screen called
+*Widgets* or *Shortcuts*.
+
+#### Standard Widgets / Shortcuts
+
+These consist of an icon (the Task icon) with a label (the Task name)
+underneath, and look identical to the normal application icons in the
+home screen.
+
+Clicking on the icon runs the associated Task.
+
+#### Task Timer Widgets
+
+This type consists of an icon and label, like the standard widgets, but
+also has a countdown timer display which counts down Days, Hours,
+Minutes and Seconds.
+
+When the timer expires (reaches 0) the associated Task is run.
+
+Tapping on the **icon** of the widget shows a configuration screen where
+the timer can be configured.
+
+Tapping on the **timer section** of the widget will pause, restart or
+reset the timer, depending on its current state.
+
+Note that the timer updates more rarely when it is still a long way from
+expiry in order to minimize power usage.
+
+See Also:
+
+- action [Timer Widget Control](help/ah_timer_widget_control.html)
+- action [Timer Widget Set](help/ah_timer_widget_set.html)
+- action [Test Tasker](help/ah_test_tasker.html)
+- event [Timer Change](help/eh_timer_change.html)
+
+#### Creating a Widget / Shortcut
+
+1. Click and hold in an empty space on the Android home screen, until a
+ dialog appears.
+2. Select **Widgets** or **Shortcuts**
+3. Select **Task** or **Task Timer** (Widgets only)
+4. Pick an existing task or create a new one. When creating a new one,
+ if you do not expect to change the function of the widget/shortcut
+ select One-Time to avoid it cluttering your list of tasks.
+5. Use the [Configuration Screen](activity_widget_configure.html) to
+ configure what should happen when the icon is clicked (or the timer
+ expires, in the case of a Task Timer widget). Take care to select an
+ appropriate name and icon for the task, as these will appear on the
+ home screen.
+
+#### Changing a Widget / Shortcut
+
+The function of widgets or shortcuts created from one-time tasks cannot
+be changed, it must be deleted and recreated.
+
+On the other hand, if you associate a normal named task with a widget or
+shortcut then when the task is changed (via the Task Edit screen) the
+function of the widget or shortcut also changes.
+
+There are also some actions which will change the appearance of any
+widget:
+
+- *Tasker/Change Icon Set*: changes the icon of a set of widgets to a
+ different style.
+- *Tasker/Set Widget Icon*: changes the icon of a particular widget
+- *Tasker/Set Widget Label*: changes the label of a particular widget
+
+The latter two you could use to visually show the status of something
+e.g. WiFi.
+
+#### Deleting a Widget / Shortcut
+
+Click and hold on the icon in the Android home screen until the dustbin
+icon appears. Drag the widget or shortcut icon to the dustbin icon and
+release.
+
+[]{#diff}
+
+#### Differences Between Widgets and Shortcuts
+
+##### Advantages of Shortcuts
+
+- they can be created in some places that widgets can\'t e.g. in home
+ screen folders
+- their layout probably better matches the default launcher layout
+- long shortcut labels will scroll when selected in the default
+ launcher
+
+##### Advantages of Widgets
+
+- their icon and label can be dynamically changed after creation via
+ the *Set Widget Icon* and *Set Widget Label* actions.
+- timer widgets are possible
+- they can be created without a label
+
+So a shortcut should be used unless the extra configuration
+possibilities of a widget are necessary.
+
+#### General
+
+- you can create as many Tasker widgets and shortcuts as you like. You
+ can even have several Timer widgets running at the same time.
+- Timer Task widgets continue to update even when the screen is off.
diff --git a/en/appcontext.md b/en/appcontext.md
new file mode 100644
index 0000000..459adff
--- /dev/null
+++ b/en/appcontext.md
@@ -0,0 +1,53 @@
+---
+title: 'Tasker: Application Context'
+---
+
+Application Context 
+----------------------------------------
+
+An *Application Context* is activated when selected parts of one or more
+application are running.
+
+Important: in Android versions after (and including) L, app detection is
+much less accurate. For some apps it may not work at all, for others it
+may activate and never deactivate.
+
+#### Controls
+
+##### *App* button
+
+When checked, indicates that the context will become active if any of
+the selected applications is in the *foreground*, meaning it is
+currently being displayed to the user.
+
+##### *Services* button
+
+When checked, indicates that the context will also become active if a
+service associated with any of the selected applications is running.
+
+Note that services other than the obvious ones may be running. For
+example, the default Play Music app may have a download service running
+even when not playing music at a particular time.
+
+##### *Invert* button
+
+When the context is *inverted*, it will become active when any
+application **apart from** the selected ones is matched
+
+##### *All* button
+
+Usually only applications are shown for selection which would usually be
+shown in the launcher. The All button shows certain other launchable
+activities.
+
+This button in no way affects how the context behaves.
+
+#### Application Checking
+
+When any profiles have application contexts specified, Tasker checks
+frequently to see if one of those applications has been launched. The
+default is every 1.5 seconds.
+
+If you would like quicker response, or you suspect this is severely
+increasing your battery usage, you can change this value in preferences
+(select `Menu / Preferences / Monitor` from the main screen).
diff --git a/en/appcreation.md b/en/appcreation.md
new file mode 100644
index 0000000..80d3c40
--- /dev/null
+++ b/en/appcreation.md
@@ -0,0 +1,341 @@
+---
+title: 'Tasker: App Creation'
+---
+
+App Creation 
+---------------------------------
+
+- [Introduction](#intro)
+- [Hello World Example](#example)
+- [App Configuration](#config)
+- [Signing](#sign)
+- [Target Device Requirements](#target)
+- [Miscellaneous](#misc)
+- [FAQ (External
+ Link)](http://tasker.dinglisch.net/faq-appcreation.html)
+
+[]{#intro}
+
+### Introduction
+
+Tasker allows creation of completely standalone apps (APK files) which
+have no requirement for Tasker to be installed on the device they\'re
+used on.
+
+The intention is to allow people to create their own apps for fun, for
+sale or just to share with friends. Or if you are concerned about all
+the permissions Tasker needs you can create an app that has only the
+permissions you require!
+
+App creation is uncomplicated and takes only a few seconds once you\'re
+setup.
+
+To create apps, you need the following on **your** device (not
+necessarily on the device(s) the app will run on):
+
+- Android 2.3+
+- *Tasker App Factory* (free, see below)
+- a device with an *ARM* or *x86* processor (the vast majority of
+ devices have one of those)
+
+App creation is accessed by long-clicking on a project (**not** the base
+project) or task and selecting **Export** then **As App**. Any linked
+resources needed (e.g. other tasks, images) are included as part of the
+new app.
+
+To export anything except a single task, you need to create a project
+and put anything you wish to export in the project.
+
+[]{#example}
+
+### Hello World Example
+
+Let\'s make a simple app that just pops up **Hello World!** when it\'s
+launched.
+
+#### 1. Create A Task
+
+- **make a new task**\
+ click on the Tasks tab then click **+** to add a new task. Give it a
+ name *Hello World*.
+- **give the task an icon**\
+ click the grid icon at the bottom of the screen and pick any icon
+- **add the Popup action**\
+ click **+** in the bottom left to add an action, select category
+ **Alert** and then action **Popup**. Fill in **Hello World!** in the
+ *Text* parameter, then click the accept button bottom left to accept
+ the action, then again to accept the task.
+- **ask Tasker to create an app**\
+ long-click on the task you just made, select **Export** then **As
+ App**. A popup appears mentioning a Missing App.
+
+#### 2. Install Tasker App Factory
+
+To generate apps, Tasker needs a free helper app called *Tasker App
+Factory*. It\'s available on Play Store and from the Tasker website.
+
+Click the accept button on the popup to install the helper app.
+
+#### 3. App Generation
+
+Tasker should now start generating your app, which will take maybe 12
+seconds depending on your device.
+
+If all goes well, the Cancel button will turn into an OK button meaning
+your app is ready!
+
+We can\'t run the app straight away though because it hasn\'t been
+installed. Click on the rightmost bottom button with the Android icon to
+ask Android to install your app.
+
+Once Android is done installing, you can click it\'s **Open** button to
+run the app, or you can simply go to the home screen and click on the
+app\'s icon in the launcher.
+
+You should see a Hello World popup!
+
+[]{#config}
+
+### App Configuration
+
+More usually, before an app is generated you will be presented with a
+configuration screen which lets you specify various options for the new
+app.
+
+[]{#sign}
+
+### App Signing
+
+Android requires that all apps be *signed* i.e. that they certify who
+created them. By default, Tasker uses an automatically-generated
+insecure certificate to sign apps and doesn\'t bother mentioning it.
+
+However, if you want to release an app via a public site (Play Store for
+example), you will need to sign it with a proper (secure) certificate.
+That\'s done so the site knows that it\'s you that\'s giving them the
+app each time you submit a new version.
+
+Certificates are kept in a *keystore* which is protected with a
+password. To generate a keystore with a secure certificate, use
+`Menu / More / Developer Options / Create Certificate`.
+
+Once you\'ve generated the keystore, Tasker will often need to ask you
+for the certificate password before app generation so that it can be
+used to sign each new version of your app.
+
+If Android\'s backup service is enabled in Android settings, Tasker
+makes a backup of the keystore there.
+
+Tasker also makes an automatic backup of the keystore to
+
+ /sdcard/Tasker/factory/keystore.user
+
+when it is first created and when you backup your profile data with
+`Menu / Data / Backup`. It\'s highly advisable to make a copy of that
+file and keep it safe away from your device.
+
+[]{#target}
+
+### Target Device Requirements
+
+The device the child app is used on must meet the following
+requirements:
+
+- the minimum SDK version specified in the Kid Config screen
+- have hardware corresponding to features specified in the Kid Config
+ screen
+
+[]{#misc}
+
+### Miscellaneous
+
+#### Accessibility Service
+
+Android accessibility support changed in Android 4.1 (JellyBean). If
+support is needed for accessibility services in 4.1+, the **Minimum
+Android Version** in the child Configuration screen must be set to
+**16** or higher. If support is required pre-4.1, it must be set to
+**less than** 16.
+
+In other words, to support both pre- and post-4.1 devices, two APKs must
+be generated.
+
+This applies to all features that rely on an Accessibility Service
+(events *Notification, New Window, Button Widget Clicked, Notification
+Click*, variables *%NTITLE, %WIN*, *App Context* from min version 20+)
+
+Google Play Store allows publication of APKs targetting different
+Android versions under the same package name, however this has not been
+tested by the developer of Tasker.
+
+#### Launch Task
+
+When the specified launch task runs in the child app, the following
+local variables will be available to it:
+
+- *%launch\_data*: the data (URI) in the intent that caused the child
+ app to launch (often empty)
+
+#### Monitor Service
+
+Most child apps include a service which constantly monitors for events.
+If you know that you don\'t need to monitor events anymore (in-between
+app launches) you can use the *Disable* action in the Tasker category to
+stop it.
+
+It will be automatically started again next time the app is launched.
+
+#### Widgets / Shortcuts
+
+- it\'s not possible in Android to auto-create widgets with any app
+- it\'s not possible \*currently\* to offer the user child-app
+ widgets, that may be available in the future to some extent
+
+#### Memory Problems
+
+If you are having low memory problems during app generation, you can ask
+the App Factory to use external storage for the generation process. See
+`Menu / Prefs / More / Factory`.
+
+#### Preferences
+
+The new app does not take over any preferences from Tasker, all of the
+preferences in the child app are in their default state, with a couples
+of exceptions.
+
+Despite the misleading name, you can use the *Set Tasker Pref* action in
+the *Tasker* category **in the child app** to change some of the
+**child\'s** preferences when it is running.
+
+#### Available Tasker Features
+
+Obviously, the device the new app runs on may not have the same set of
+available e.g. actions as the device the app is created on.
+
+The *Test* action in the *Misc* category allows you to check which
+Tasker features are available at *run time* (when the app is being
+used).
+
+#### Images
+
+Referenced images (even scene doodles and photos from internal storage)
+are bundled in with the app.
+
+Tip: to include a dynamic image (e.g. which you download to a file path
+via HTTP Get), put the image reference in a variable, and put the
+variable in the relevant action.
+
+#### Plugins
+
+When the new app is launched, it checks that all referenced plugins are
+installed on the device and prompts the user to install missing ones.
+
+Some plugins may not work on other devices if they themselves store
+something about the action to be performed, since that data will not be
+available on the other device.
+
+Plugin authors: see also
+[here](http://tasker.dinglisch.net/plugins.html#gen).
+
+#### JavaScript actions
+
+Scripts referenced by a *JavaScript* action are packaged with the new
+app and run directly from there.
+
+#### SL4A Scripts
+
+Scripts referenced in a *Run Script* action are packaged with the new
+app and unpacked to `/sdcard/sl4a/scripts`, prefixed with the package
+name, on first run. Tasker automatically inserts the
+WRITE\_EXTERNAL\_STORAGE permission for that purpose.
+
+If SL4A is missing on the target device, the new app will prompt the
+user to download when launched.
+
+If a new version of the app is reinstalled on the target device, the new
+versions of the scripts will be written if the **length** has changed.
+
+#### Other External Components
+
+The following external components are also checked for on launch of the
+new app where necessary:
+
+- Speech engines (*Say, Say After*)
+- APNDroid (*Mobile Data APN*)
+- Zoom (*Zoom* action category actions)
+- apps for *3rd Party* actions
+- apps for *3rd Party* events
+
+#### Maps
+
+The data for Maps is provided by Google and they require a *maps key*
+(v2) for each developer that uses it. If you are using Map scene
+elements in your app, you need a key from Google that can be included
+with your app.
+
+Here are the steps to acquire a key:
+
+1. \[if necessary\] setup a [Google
+ Account](http://www.google.com/accounts/)
+2. \[if necessary\] create a [developer
+ account](http://developer.android.com/distribute/index.html)
+3. \[if necessary\] create a [signing keystore](#sign)
+4. get the SHA1 fingerprint of your certificate:
+ `Menu / More / Developer Options / Certificate Checksum`
+5. Create an [Google API
+ Project](https://developers.google.com/maps/documentation/android/start#create_an_api_project_in_the_google_apis_console)
+6. Obtain the [Maps
+ key](https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key)
+
+Enter the key in the App Configuration screen when generating your app.
+Note that the box will only be presented if your app uses one or more
+Map scene elements.
+
+Note that the device on which the created app is used needs Google\'s
+Play Services APK installed, otherwise the map elements will not
+function.
+
+#### Variables
+
+The new app is completely independent of Tasker, so it also does not
+share any variable values.
+
+#### Permissions
+
+Tasker attempts to reduce the set of permissions required by the new app
+to the smallest set required for the functionality it contains. For
+example, no *Vibrate* permission will be requested if there is no
+vibrate action used.
+
+The WAKE\_LOCK permission is unfortunately always required for technical
+reasons.
+
+#### App Size
+
+Generated apps are minimally around 640K but are unlikely to be
+significantly larger unless a lot of images are referenced. It\'s
+possible that this minimum can be reduced in the future.
+
+#### Encryption
+
+Code for encryption is included in any app created by App Factory,
+however if you don\'t use encryption features it\'s unlikely to be a
+problem in terms of export restrictions. However, that is an opinion, it
+is **not legal advice**.
+
+Note that code libraries for encryption are included with every Android
+device. Tasker (and child apps) use these libraries to perform the
+encryption, they do not contain encryption code themselves.
+
+Licence
+
+You are free to distribute and sell apps created by Tasker in any way
+you wish. No licence fees to the developer of Tasker are necessary. It
+would be courteous to reference Tasker and it\'s website
+(http://tasker.dinglisch.net) somewhere in your new app if possible.
+
+Please note that use of images from some Ipacks in commercial software
+is prohibited by the licence terms of the image creators. You will need
+to contact the image designer to request their assent in such cases.
+(the origin of an Ipack\'s images is displayed in the Ipack image
+selection screen).
diff --git a/en/beginner.md b/en/beginner.md
new file mode 100644
index 0000000..3bd0aa9
--- /dev/null
+++ b/en/beginner.md
@@ -0,0 +1,30 @@
+---
+title: 'Tasker: Beginner Mode'
+---
+
+Beginner Mode 
+----------------------------------
+
+When Tasker first starts, *Beginner Mode* is enabled.
+
+In Beginner Mode, Tasker attempts to simplify things for inexperienced
+users, mostly by UI elements which are unlikely to be needed by
+inexperienced users.
+
+Beginner Mode can be disabled by unchecking the option:
+
+> ` Menu / Prefs / UI / Beginner Mode`
+
+Some of the changes made in Beginner Mode are:
+
+- main screen, Variables tab removed
+- main screen, export options removed
+- main screen, project tab not accessible
+- task edit screen, task properties icon removed
+- action edit screen, Label, Continue On Error parameters removed
+- prefs screen, many options removed
+- various places, variable selection not possible
+
+In the userguide, when references are found to things which do not
+appear on the screen. It\'s worth disabling Beginner Mode to see if
+that\'s the problem.
diff --git a/en/cpu.md b/en/cpu.md
new file mode 100644
index 0000000..65e2ab0
--- /dev/null
+++ b/en/cpu.md
@@ -0,0 +1,86 @@
+---
+title: 'Tasker: CPU Control'
+---
+
+CPU Control 
+--------------------------------
+
+------------------------------------------------------------------------
+
+**Note:** CPU control can damage your hardware e.g. by the CPU
+overheating. As for all Tasker functions, you use it at your own risk!
+
+------------------------------------------------------------------------
+
+### General
+
+On a rooted device (only) Tasker is able to control the CPU frequency of
+an Android device to some extent. This is usually done either to save
+battery or make the device more responsive depending on the
+circumstances.
+
+The relevant control action is **CPU** in the **Misc** category. You can
+monitor the current state with the variables **%CPUFREQ** and
+**%CPUGOV**.
+
+There are two aspects which can be controlled, the Frequency Range and
+the CPU Governor. You will need to experiment with combinations of these
+to achieve the best results.
+
+### Frequency Range
+
+You can set the minimum and maximum frequency which the CPU is allowed
+to run at. Only certain frequencies are valid, depending on the CPU
+(click on the magnifying glass button to select a valid value).
+
+The maximum frequency is probably initially set lower than the maximum
+frequency that the CPU can actually handle. If that is the case, you
+should be very cautious about setting it higher. Tasker will warn you
+the first time you try to do configure an action to do that, assuming
+you have not been using other apps to change the maximum frequency
+limit.
+
+### CPU Governor
+
+The active *governor* decides what the CPU frequency should be set to at
+a particular time, within the frequency range you have set. Each has
+it\'s own unique strategy. Here are the most common governors:
+
+- *Performance*\
+ keeps the CPU frequency always at the maximum. Most power-hungry,
+ most responsive.
+- *Powersave*\
+ keeps the CPU frequency always at the minimum. Least power-hungry,
+ least responsive.
+- *Ondemand*\
+ when the CPU is needed, immediately sets it to maximum frequency.
+ Slowly reduces the frequency back down to the minimum as time
+ passes. Responsive, reasonable power usage.
+- *Interactive*\
+ like Ondemand, but more responsive with slightly more battery usage.
+- *Conservative*\
+ when the CPU load is needed, slowly increases the frequency to
+ maximum. When the CPU is no longer needed, immediately drops back to
+ the minimum. Less power-usage than Ondemand or Interactive, less
+ responsive.
+
+Not all governors are available on all ROM versions. Your device may
+also have a governor not described here. You can still set that governor
+with Tasker.
+
+### CPU Action Not Available
+
+Common problems are:
+
+- *root not recognized*\
+ Tasker decides that a device is rooted if
+ `/system/app/Superuser.apk` is present and `su` is present in one of
+ the directories of \$PATH
+- *no available frequencies*\
+ Tasker needs to know what frequencies it can set the CPU to. It
+ looks for the files
+ `/sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies, /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state`
+ and `/system/etc/scaling_available_frequencies` (in that order). If
+ you know what your CPU frequencies are, you could write them
+ (space-separated, in numerical order) to the first (any number of
+ CPUs) or last (1 CPU only) of those files.
diff --git a/en/daycontext.md b/en/daycontext.md
new file mode 100644
index 0000000..126d572
--- /dev/null
+++ b/en/daycontext.md
@@ -0,0 +1,35 @@
+---
+title: 'Tasker: Day Context'
+---
+
+Day Context 
+--------------------------------
+
+A *Day Context* allows specification of one or more months and/or days
+of the week/month.
+
+#### Month Specification
+
+The months are listed at the top, any of which can be selected.
+Selecting **no** month has the same meaning as selecting **every** month
+i.e. has no restriction on when the profile will become active.
+
+#### Day of Week/Month Specification
+
+Days of the week (*Sunday, Monday* etc) and/or month (*1st, 9th* etc)
+can be selected independently with the pulldown centre-right. This will
+initially be for Week Days if there are any defined, otherwise Month
+Days.
+
+Selecting **no** day has the same meaning as selecting **every** day.
+
+If you select **both** days of the week **and** days of the month, it
+requires both conditions to be fulfilled for the profile to become
+active e.g. selecting *Mon,Tue* and *11th* means the profile will become
+active when the day is a *Mon* or *Tuesday* and **simultaneously** the
+*11th* day of the month.
+
+If you are unsure if you have specified the day(s) you require, click
+the **Done** button and you will see a verbal description at the top of
+the Profile Edit screen. You can click on this to try again if it\'s not
+correct.
diff --git a/en/element_button.md b/en/element_button.md
new file mode 100644
index 0000000..4c38267
--- /dev/null
+++ b/en/element_button.md
@@ -0,0 +1,37 @@
+---
+title: 'Tasker: Scene Element: Button'
+---
+
+Scene Element: Button 
+------------------------------------------
+
+#### About
+
+A standard Android button enhanced to allow display of an icon, text or
+both.
+
+#### Parameter: Position
+
+If both a *Label* and *Icon* are specified, the *Position* parameter
+refers to the position of the *Label*. The *Icon* is then placed
+opposite the *Label*.
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap)
+
+#### Related Actions
+
+- [Element Image](help/ah_scene_element_image.html)
+- [Element Text](help/ah_scene_element_text.html)
+- [Element Text Colour](help/ah_scene_element_text_colour.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_checkbox.md b/en/element_checkbox.md
new file mode 100644
index 0000000..7b1be24
--- /dev/null
+++ b/en/element_checkbox.md
@@ -0,0 +1,28 @@
+---
+title: 'Tasker: Scene Element: Button'
+---
+
+Scene Element: CheckBox 
+--------------------------------------------
+
+#### About
+
+A standard Android checkbox to indicate e.g. an item selection state.
+
+#### Events
+
+- [Change](activity_elementedit.html#checkchange)
+
+#### Related Actions
+
+- [Element Value](help/ah_scene_element_value.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_doodle.md b/en/element_doodle.md
new file mode 100644
index 0000000..395477f
--- /dev/null
+++ b/en/element_doodle.md
@@ -0,0 +1,35 @@
+---
+title: 'Tasker: Scene Element: Doodle'
+---
+
+Scene Element: Doodle 
+------------------------------------------
+
+#### About
+
+A *Doodle* is an image created by the user with a simple finger-painting
+screen.
+
+Click the *Doodle* parameter to edit the doodle.
+
+Doodles are stored on external storage in the directory
+`/sdcard/Tasker/cache/doodles` in case they are masterpieces which
+demand publishing.
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap),
+- [Stroke](activity_elementedit.html#stroke)
+
+#### Related Actions
+
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_image.md b/en/element_image.md
new file mode 100644
index 0000000..8090116
--- /dev/null
+++ b/en/element_image.md
@@ -0,0 +1,25 @@
+---
+title: 'Tasker: Scene Element: Image'
+---
+
+Scene Element: Image 
+-----------------------------------------
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap)
+- [Stroke](activity_elementedit.html#stroke)
+
+#### Related Actions
+
+- [Element Image](help/ah_scene_element_image.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_map.md b/en/element_map.md
new file mode 100644
index 0000000..16873bb
--- /dev/null
+++ b/en/element_map.md
@@ -0,0 +1,38 @@
+---
+title: 'Tasker: Scene Element: Map'
+---
+
+Scene Element: Map 
+---------------------------------------
+
+#### About
+
+A *Map* element is a view onto the same kind of map window used by
+Google Maps but is much more automateable than the standalone app.
+
+Map elements cannot appear in Overlay scenes.
+
+When shown with the display type *Dialog, Dim Behind* or *Dialog, Dim
+Behind Heavy* the map will also be dimmed starting with Tasker 4.5, an
+unfortunate side-effect of the dimming method.
+
+#### Related Actions
+
+- [Element Add GeoMarker](help/ah_scene_element_add_geomarker.html)
+- [Element Delete
+ Geomarker](help/ah_scene_element_delete_geomarker.html)
+- [Element Map Control](help/ah_scene_element_map_control.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_menu.md b/en/element_menu.md
new file mode 100644
index 0000000..ac7549a
--- /dev/null
+++ b/en/element_menu.md
@@ -0,0 +1,63 @@
+---
+title: 'Tasker: Scene Element: Menu'
+---
+
+Scene Element: Menu 
+----------------------------------------
+
+#### About
+
+A menu displays a variable selection of items and can have a separate
+action, text and icon defined for each item in the list.
+
+#### Parameter: Source
+
+Items can either be filled manually or from a variable array. In the
+case of an array, the list shows all the items starting at the first
+index; %var(1) %var(2) etc.
+
+In the case of manual specification, click on the *Items* tab in the
+element editor to specify the items.
+
+#### Parameter: Selection Mode
+
+There are three selection modes:
+
+- single: tapping an item deselects any other item selected
+- multi: several items can be selected at the same time
+- none: tapping an item never selects it
+
+Selected items are highlighted. There are two ways to find out the
+selected items:
+
+- assign a task under the **Item Tap** element event tab. Every time
+ an item is tapped, the selected items are available in the local
+ variable **%select\_indices**
+- query the selected items at any time using the action
+ `Element Get Value`
+
+#### Parameter: Item Layout
+
+Specifies how each item within the list will be displayed. Each item has
+exactly the same layout. To change the layout, click on it. Each Menu
+element has it\'s own unique item layout.
+
+There are two pre-defined layouts you can choose from (click the
+magnifying glass icon). \'Icon and Text\' is the default.
+
+#### Events
+
+- [Item Tap, Item Long Tap](activity_elementedit.html#tap)
+
+#### Related Actions
+
+- [Menu](help/ah_menu.html)\
+ allows easy display of a dialog with a title and showing a single
+ menu element.\
+ When using the Menu action, items are configured in the action
+ itself rather than in the Menu element.
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
diff --git a/en/element_picker.md b/en/element_picker.md
new file mode 100644
index 0000000..288c887
--- /dev/null
+++ b/en/element_picker.md
@@ -0,0 +1,39 @@
+---
+title: 'Tasker: Scene Element: Number Picker'
+---
+
+Scene Element: Number Picker 
+-------------------------------------------------
+
+#### About
+
+Allows selection of a numeric value from a specified range. Above and
+below the selected number the element can be long-clicked to advance the
+number series, or the number can be scrolled or flung up or down by
+touch.
+
+#### Events
+
+- [Value Selected](activity_elementedit.html#value)
+
+Note that the Value Selected event will only fire when scrolling has
+**finished** i.e. when the user has lifted their finger and the Number
+Picker has come to rest.
+
+In contrast, long-clicking will produce an event for each number that is
+cycled through.
+
+#### Related Actions
+
+- [Element Value](help/ah_scene_element_value.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen. The [Slider
+Element](element_slider.html) screen.
diff --git a/en/element_shape.md b/en/element_shape.md
new file mode 100644
index 0000000..0505a8c
--- /dev/null
+++ b/en/element_shape.md
@@ -0,0 +1,29 @@
+---
+title: 'Tasker: Scene Element: Oval / Rectangle'
+---
+
+Scene Element: Oval / Rectangle 
+----------------------------------------------------
+
+#### About
+
+Shape elements are intended mostly for decoration but can also be used
+as invisible \'launchpads\' for e.g. stroke events.
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap)
+- [Stroke](activity_elementedit.html#stroke)
+
+#### Related Actions
+
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_slider.md b/en/element_slider.md
new file mode 100644
index 0000000..810e469
--- /dev/null
+++ b/en/element_slider.md
@@ -0,0 +1,31 @@
+---
+title: 'Tasker: Scene Element: Slider'
+---
+
+Scene Element: Slider 
+------------------------------------------
+
+#### About
+
+A standard Android \'seek bar\' enhanced to allow specification of the
+thumb icon and display indicators for the min, max and current values.
+
+#### Events
+
+- [Value Selected](activity_elementedit.html#value)
+
+#### Related Actions
+
+- [Element Value](help/ah_scene_element_value.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Image](help/ah_scene_element_image.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+- [Element Editor](activity_elementedit.html) screen.
+- [Number Picker Element](element_picker.html) screen.
diff --git a/en/element_spinner.md b/en/element_spinner.md
new file mode 100644
index 0000000..0a18598
--- /dev/null
+++ b/en/element_spinner.md
@@ -0,0 +1,51 @@
+---
+title: 'Tasker: Scene Element: Spinner'
+---
+
+Scene Element: Spinner 
+-------------------------------------------
+
+#### About
+
+A spinner allows selection of a single item from a menu. Only the
+currently selected item is displayed. When tapped, the menu is shown,
+when an item is selected, the menu is hidden again.
+
+#### Parameter: Source
+
+Items can either be filled manually or from a variable array. In the
+case of an array, the list shows all the items starting at the first
+index; %var(1) %var(2) etc.
+
+In the case of manual specification, click on the *Items* tab in the
+element editor to specify the items. The default (initially showing
+item) is selectable via the checkboxes on the left.
+
+Note that by default, a spinner is text only. To show also icons,
+long-click the icon element in the Item Layout (see below) and select
+*Show*.
+
+#### Parameter: Item Layout
+
+Specifies how each item within the list will be displayed. Each item has
+exactly the same layout. To change the layout, click on it. Each Spinner
+element has it\'s own unique item layout.
+
+#### Parameter: Popup Background Colour
+
+Specifies the background colour of the window which displays the
+possible spinner values when the spinner is clicked.
+
+#### Events
+
+- [Item Select](activity_elementedit.html#itemselect)
+
+#### Related Actions
+
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Element Value](help/ah_scene_element_value.html)
+- [Test Element](help/ah_scene_element_test.html)
diff --git a/en/element_switch.md b/en/element_switch.md
new file mode 100644
index 0000000..726fe98
--- /dev/null
+++ b/en/element_switch.md
@@ -0,0 +1,28 @@
+---
+title: 'Tasker: Scene Element: Button'
+---
+
+Scene Element: Switch 
+------------------------------------------
+
+#### About
+
+A standard Android switch to indicate e.g. an item selection state.
+
+#### Events
+
+- [Change](activity_elementedit.html#checkchange)
+
+#### Related Actions
+
+- [Element Value](help/ah_scene_element_value.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_text.md b/en/element_text.md
new file mode 100644
index 0000000..781a881
--- /dev/null
+++ b/en/element_text.md
@@ -0,0 +1,65 @@
+---
+title: 'Tasker: Scene Element: Text'
+---
+
+Scene Element: Text 
+----------------------------------------
+
+#### About
+
+Displays non-editable text for labels etc.
+
+#### Parameter: Position
+
+Where to place the text within its box
+
+#### Parameter: Text Width Scale
+
+A horizontal scaling factor to squash up (negative values) or stretch
+(positive values) the text.
+
+#### Parameter: Font
+
+Specifies a custom font file to use for the text instead of the system
+default. Many thousands of free font files (with the filename ending in
+`.ttf` are available for download on the Internet.
+
+#### Parameter: Vertical Fit Mode
+
+What to do when the height of the text to display is greater than the
+height of the element.
+
+#### Parameter: Text Format
+
+Specifies how the text should be displayed.
+
+- *Plain Text*\
+ just show the text as-is
+- *Text With Links*\
+ things that look like links are clickable (though not in the scene
+ editor) e.g. URLs, email addresses, phone numbers
+- *HTML*\
+ interpret the text as a piece of HTML. Only simple tags are
+ interpreted and no images are displayable.
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap)
+- [Stroke](activity_elementedit.html#stroke)
+
+#### Related Actions
+
+- [Element Text](help/ah_scene_element_text.html)
+- [Element Text Colour](help/ah_scene_element_text_colour.html)
+- [Element Border](help/ah_scene_element_border.html)
+- [Element Back Colour](help/ah_scene_element_background_colour.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_textedit.md b/en/element_textedit.md
new file mode 100644
index 0000000..cfda52d
--- /dev/null
+++ b/en/element_textedit.md
@@ -0,0 +1,52 @@
+---
+title: 'Tasker: Scene Element: TextEdit'
+---
+
+Scene Element: TextEdit 
+--------------------------------------------
+
+#### About
+
+A standard Android box for text entry.
+
+TextEdit elements cannot appear in Overlay scenes.
+
+#### Parameter: Text
+
+This is the **initial** text to show in the element, with any variables
+replaced.
+
+Note that if *Text* contains a variable, any changes in the variable
+value once the element have been shown will **not** be reflected in the
+visible contents of the text box. The reason for this limitation is that
+the user can change the text box contents by typing at any time so it is
+not possible to track where the variable contents should be, or even if
+they are still there at all.
+
+#### Parameter: Position
+
+Where to place the text within its box
+
+#### Parameter: Text Width Scale
+
+Horizontal scaling factor to squash up (negative values) or stretch
+(positive values) the text.
+
+#### Events
+
+#### Related Actions
+
+- [Element Text](help/ah_scene_element_text.html)
+- [Element Text Colour](help/ah_scene_element_text_colour.html)
+- [Element Border](help/ah_scene_element_border.html)
+- [Element Back Colour](help/ah_scene_element_background_colour.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_toggle.md b/en/element_toggle.md
new file mode 100644
index 0000000..d72574c
--- /dev/null
+++ b/en/element_toggle.md
@@ -0,0 +1,29 @@
+---
+title: 'Tasker: Scene Element: Toggle'
+---
+
+Scene Element: Toggle 
+------------------------------------------
+
+#### About
+
+A button with two states with an indicator light and a label for each
+state.
+
+#### Events
+
+- [Change](activity_elementedit.html#checkchange)
+
+#### Related Actions
+
+- [Element Value](help/ah_scene_element_value.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_video.md b/en/element_video.md
new file mode 100644
index 0000000..63349a4
--- /dev/null
+++ b/en/element_video.md
@@ -0,0 +1,71 @@
+---
+title: 'Tasker: Scene Element: Video'
+---
+
+Scene Element: Video 
+-----------------------------------------
+
+#### About
+
+Displays a video from file or URI.
+
+The playback state is maintained during rotation or hiding of the scene.
+
+#### Parameters: Source
+
+Determines where to acquire the content for the video.
+
+A source which starts with a **/** or does not contain a **:** is
+treated as a local file path.
+
+Anything else is treated as a URI.
+
+#### Parameter: Start Automatically
+
+If checked, whenever a new video is loaded it will begin play
+immediately. If not checked, the video must be started via the [Element
+Video Control](help/ah_element_video_control.html) action.
+
+#### Parameter: Loop
+
+If checked, the video will start playing again from the start when the
+end is reached.
+
+#### Parameter: Adapt To Fit
+
+What to do when the video size does not exactly match the element size.
+
+- *Stretch*\
+ The video is stretched (or shrunk) to fill the element, probably
+ changing the aspect ratio in the process
+- *Scale*\
+ The video is scaled up or down while maintaining the aspect ratio
+ until it horizontally or vertically matches the element size. As a
+ result, the video will not completely fill the element on the other
+ side.
+
+#### Events
+
+- [Tap, Long Tap](activity_elementedit.html#tap)
+- [Stroke](activity_elementedit.html#stroke)
+- [Video](activity_elementedit.html#video)
+
+#### Related Actions
+
+- [Element Video Control](help/ah_scene_element_video_control.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+Note on `Test Element`: testing the element *Value* returns the current
+playback position in Milliseconds, *Maximum Value* returns the duration
+of the current video. In both cases, the video must be already in the
+\'Prepared\' (see the [Video event](activity_elementedit.html#video))
+state before running the test.
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/element_web.md b/en/element_web.md
new file mode 100644
index 0000000..f852ad5
--- /dev/null
+++ b/en/element_web.md
@@ -0,0 +1,68 @@
+---
+title: 'Tasker: Scene Element: Web'
+---
+
+Scene Element: Web 
+---------------------------------------
+
+#### About
+
+A *Web* element is like a browser window.
+
+#### Parameters: Mode / Source
+
+These parameters determine how the content for the WebView is to be
+acquired.
+
+- *URI*: the *Source* parameter refers to a URI (e.g. http://) from
+ which the WebView should retrieve content.
+- *File*: the *Source* parameter contains a local file path from which
+ the WebView should retrieve content.
+- *Direct*: the *Source* parameter directly specifies the HTML and/or
+ JavaScript content to load
+
+#### Parameter: Allow Phone Access
+
+If checked, the content in the WebView is allowed access to local device
+files, data stores, and can run JavaScript, including Tasker\'s
+[JavaScript Interface functions](javascript.html).
+
+This is a very powerful feature, since it allows a WebView to present a
+complex and highly functional interface, but should only be enabled if
+you entirely trust the source of the specified content.
+
+Note that references to local files must be absolute (include the
+directory) even when the WebView source is specified as a file e.g.
+`/sdcard/myfiles/scripts.js`
+
+#### Parameter: Self Handle Links
+
+If checked, links will be handled by the WebView itself, otherwise they
+will be passed to the system for handling e.g. by the default web
+browser.
+
+#### Parameter: Support Popups
+
+If this parameter is **not** checked, HTML elements which generate a
+popup window, for instance selection elements in forms, will crash the
+scene when they are activated.
+
+If this parameter **is** checked, when the scene is hidden and reshown,
+some of its state will be lost e.g. which part of the page was being
+displayed, zoom level.
+
+#### Events
+
+#### Related Actions
+
+- [Element Web Control](help/ah_scene_element_web_control.html)
+- [Element Focus](help/ah_scene_element_focus.html)
+- [Element Position](help/ah_scene_element_position.html)
+- [Element Size](help/ah_scene_element_size.html)
+- [Element Visibility](help/ah_scene_element_visibility.html)
+- [Element Depth](help/ah_scene_element_depth.html)
+- [Test Element](help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](activity_elementedit.html) screen.
diff --git a/en/encryption.md b/en/encryption.md
new file mode 100644
index 0000000..302b509
--- /dev/null
+++ b/en/encryption.md
@@ -0,0 +1,163 @@
+---
+title: 'Tasker: Encryption'
+---
+
+Encryption 
+-------------------------------
+
+------------------------------------------------------------------------
+
+**Note:** encryption functions are not available to new customers or in
+Play Store versions of Tasker due to US export restrictions.
+
+------------------------------------------------------------------------
+
+Tasker has the ability to encrypt and decrypt files. The relevant
+actions are in the *Encryption* action category.
+
+Since decryption can be automated, you have the possibility to keep data
+files encrypted outside of certain times, locations, applications etc.
+
+**Warning**: make backups of your files while setting up encryption
+until you understand how the system works and are sure the
+encryption/decryption process does not cause any corruption.
+
+**Tip**: Tasker does not give progress reports while it\'s doing
+encryption, if you want to know when an long decryption operation is
+finished, just put a *Vibrate* action or similar after the
+*Encrypt/Decrypt* action.
+
+#### Keys
+
+Tasker uses a system of named *keys*. All of the encryption actions can
+specify a key name so that you can use different keys with different
+files (if desired).
+
+If no key name is specified, **default** is used.
+
+Once a passphrase for a key is entered, the ciphers it generated are
+stored in memory until explicitly deleted. The deletion might be
+specified after an *Encrypt/ Decrypt File* action, or explicitly with
+the *Clear Key* action.
+
+#### Setting Up Encryption
+
+##### General Preferences
+
+First thing to do is check whether the encryption preferences for
+**Encryption Iterations** and **Encryption Algorithm** are as you wish.
+Once you start encryping things, it\'s time consuming to start again
+with new encryption preferences.
+
+The preferences can be found at `Menu / Prefs / Action`. Be sure to have
+a look at the help text for each item.
+
+##### Initial Encryption
+
+To start with, you probably want to encrypt some files which are in a
+particular directory, which you can then decrypt as they are needed.
+
+To do that, create a task called **Encrypt** or similar and add one or
+more *Encrypt File* or *Encrypt Dir* actions to it.
+
+By default, the key is cleared once the file is encrypted, so click
+\'Leave Key\' for all but the last action, otherwise you\'ll have to
+enter your passphrase for each file.
+
+Next, [create a Tasker shortcut](app_widgets.html) on the home screen,
+using the *Encrypt* task. Tap the widget to encrypt your files. Notice
+how you are only asked for the passphrase for the first one, because it
+is stored until cleared.
+
+The encrypted files will all receive an extension *.tec* and the
+original files are deleted.
+
+#### Decryption
+
+Once you have a set of encrypted files, you need to setup the contexts
+in which they will be decrypted.
+
+Create another task called *Decrypt* or similar, and add *Decrypt*
+actions to it to match the encrypt actions you setup previously.
+
+**Don\'t** click Clear Key, otherwise you\'ll have to enter your
+passphrase for every file (and at the start of encryption).
+
+Now you can use your *Encrypt* and *Decrypt* tasks whenever you like.
+For instance, you could create a profile with a Location Context and run
+your *Decrypt* task when entering the location (assign Decrypt as the
+Enter task) and your *Encrypt* task when leaving the location (assign
+*Encrypt* as the Exit task).
+
+**Important**: when you use the *Decrypt* action, it recreates the
+original file from the encrypted copy, but does **not** delete the
+encrypted version.
+
+When you re-encrypt the file, if it has not changed it is simply deleted
+since we already have an encrypted copy. If it **has** changed, it is
+re-encrypted.
+
+The purpose of this method of operation is to:
+
+- avoid the lengthy encryption process when unnecessary
+- prevent accidental double-encryption (encrypting the same file
+ twice)
+
+#### *Enter Key* Action
+
+It\'s not always convenient to enter the key at the point at which de-
+or encryption takes place. This action allows you to specify the
+passphrase for a key at a different point.
+
+If you don\'t wish to double-enter a key when encrypting, you can also
+use this action before an Encrypt action and not select *Confirm*.
+
+#### *Set Key* Action
+
+To allow full-automation of en/decryption, the passphrase for a key can
+also be set without user interaction. However, this is much less secure
+tham `Enter Key` because:
+
+- the passphrase (as part of the action) is stored in **clear text**
+ in device memory and could be read by the root user if the device OS
+ is compromised
+- although the passphrase is itself encrypted when a backup is made to
+ SD, the parameters for that encryption can be recovered from the
+ java code in the Tasker apk file
+
+#### Security
+
+##### Algorithm
+
+Tasker uses symmetric encryption, meaning the same passphrase is used
+both to encrypt and decrypt the data.
+
+The default algorithm is \"PBEWithMD5And128BitAES-CBC-OpenSSL\". PBE
+stands for password-based encryption, see [RFC
+2898](http://www.ietf.org/rfc/rfc2898.txt).
+
+A salt is combined with the passphrase several hundreds of times using
+the MD5 algorithm to produce a key which is used for the 128-bit
+(default setting) AES algorithm.
+
+The number of iterations and algorithm can be set in
+`Menu / Prefs / Action`.
+
+##### Pass Phrases
+
+The longer the passphrase, the more secure the data. Minimally 8
+characters of mixed alphabetic, numeric and punctuation characters is
+recommended.
+
+##### Clearing Keys
+
+While a key\'s ciphers are in memory, anyone can use the key for
+decryption or encryption if your device is lost or stolen, so it may be
+wise to setup a *Clear Key* action e.g. when the device is turned off
+(see Screen Off in the Event Context) or at a particular time (Time
+Context), depending on what you are using the encryption for.
+
+##### Manually Encrypting/Decrypting
+
+You can use Tasker\'s file browser (action Browse Files) to
+encrypt/decrypt files directly, via a long-click on the file.
diff --git a/en/eventcontext.md b/en/eventcontext.md
new file mode 100644
index 0000000..b97a362
--- /dev/null
+++ b/en/eventcontext.md
@@ -0,0 +1,36 @@
+---
+title: 'Tasker: Event Context'
+---
+
+Event Context 
+----------------------------------
+
+An *Event Context* allows specification of an event which is needed to
+activate its profile e.g. SMS received, screen has gone off.
+
+Events are a little different to other contexts because they are
+*instantaneous* whereas other contexts usually have a duration.
+
+This means that it is nonsensical to specify that e.g. the screen
+brightness should be set to X for the duration of the event, so Tasker
+assumes that all [settings](settings.html) actions should persist beyond
+the event.
+
+For more information about specifying events, see the [Event Edit
+screen](activity_eventedit.html).
+
+#### Event Parameters
+
+When a task is triggered by an event, the parameters of the event that
+ocurred are passed to the task so that it can make decisions based on
+the event details.
+
+The parameters are passed in the [array](variables.html#arrays)
+*%evtprm*.
+
+The order of elements of the array have values which match the order of
+the parameters of the event.
+
+Example: if an event\'s second parameter is an Application, %evtprm2 in
+the launched task will be set to the label of the application which
+triggered the event.
diff --git a/en/faqs/faq-appcreation.md b/en/faqs/faq-appcreation.md
new file mode 100644
index 0000000..fcc22dd
--- /dev/null
+++ b/en/faqs/faq-appcreation.md
@@ -0,0 +1,135 @@
+FAQ: App Creation  
+-----------------------------------------------------------
+
+- [Does app creation support profiles and scenes ?](#c)
+- [Why is the app always shown as running ?](#a)
+- [How do I do initialization on the first launch ?](#b)
+- [How can my task tell if it is running in Tasker or a child app
+ ?](#h)
+- [Why isn\'t my app detecting background events ?](#d)
+- [How can I send the developer a short-term App Factory log ?](#e)
+- [How can I send the developer a long-term App Factory log ?](#e2)
+- [Can I include Google Play\'s licencing service in my app ?](#f)
+- [Can I get the java source code from my created app ?](#g)
+
+[]{#c}
+
+#### Does app creation support profiles and scenes ?
+
+Sure. You can export projects as apps and projects can contain profiles,
+tasks and scenes.
+
+For help accessing projects, see `Menu / Info / Help This Screen` in the
+main screen.
+
+[]{#a}
+
+#### Why is the app always shown as running ?
+
+Tasker tries to detect when it\'s monitor service is no longer needed
+but that is not always possible. You can put a `Disable` action from the
+`Tasker` category at the end of your launch task to ensure that it
+happens.
+
+The monitor will be started again automatically each time the app is
+lauched from the home screen.
+
+[]{#b}
+
+#### How do I do initialization on the first launch ?
+
+Setup your launch task something like this:
+
+ If %LaunchCount = 0
+ ...initialization actions...
+ Else
+ ...normal actions...
+ Elsif
+ Variable Add, %LaunchCount, 1
+
+[]{#h}
+
+#### How can my task tell if it is running in Tasker or a child app ?
+
+Use the **Test App** action and select the mode **This Package**.
+
+The resulting variable will contain the package identifier you specified
+in the App Configuration screen if the task is running in a child app,
+otherwise it will contain one of *net.dinglisch.android.tasker* or
+*net.dinglisch.android.taskerm*.
+
+[]{#d}
+
+#### Why isn\'t my app detecting background events ?
+
+One possible cause is: when an app has just been installed on Android it
+is in a \'frozen\' state until there is some user interaction with it
+(usually clicking the home screen icon at least once). []{#e}
+
+#### How can I send the developer a short-term App Factory log ?
+
+- download aLogcat, free from Android Market
+- disable Tasker in the main screen bottom-left
+- in the App Config screen, check *Advanced Properties* and then
+ *Debug*
+- create and install the new app \*twice\*
+- launch the new app from the home screen
+- reproduce whatever conditions cause the problem
+- go to aLogCat, click **Menu / Pause** then **Menu / Send**
+- the destination email is listed in **Menu / Info / User Support** in
+ Tasker
+- include at the top a brief description of the problem that the email
+ concerns
+
+Try to make the log as soon as possible after the problem occurs.
+
+[]{#e2}
+
+#### How can I send the developer a long-term App Factory log ?
+
+- disable Tasker by long-clicking the icon top-left in the main screen
+- in the App Config screen, check *Advanced Properties* and then
+ *Debug*
+- create and install the new app \*twice\*
+- enable the **Storage** permission for the app in Android Settings if
+ necessary
+- launch the new app from the home screen
+- reproduce whatever conditions cause the problem
+- send the developer the log files in the directory NAMEOFAPP in the
+ root directory of the SD card
+- the destination email is listed in **Menu / Info / User Support** in
+ Tasker
+- include at the top a brief description of the problem that the email
+ concerns
+
+Try to make the log as soon as possible after the problem occurs.
+
+[]{#f}
+
+#### Can I include Google Play\'s licencing service in my app ?
+
+No, this is not possible.
+
+Tasker\'s code does not include the licencing service because of
+continual problems it caused. In any case, the licensing service is
+ineffectual for preventing unauthorized code distribution.
+
+If you really want to include licensing in your app, you could e.g.
+require the user to enter their order code and check via the *HTTP Get*
+action on your server if that is a valid number.
+
+Setting up such a server to download Google order details and accept
+verification requests is a lot of effort and requires some technical
+knowledge, however.
+
+[]{#g}
+
+#### Can I get the java source code from my created app ?
+
+Short answer: no.
+
+Long answer: when a new app is created, Tasker doesn\'t create new java
+code to implement the things in your task or project configuration.
+Instead, the existing Tasker code is used with the new app and executed
+similarly to how it\'s executed in Tasker, but in the shell of a new
+APK.
diff --git a/en/faqs/faq-how.md b/en/faqs/faq-how.md
new file mode 100644
index 0000000..ce8f2a4
--- /dev/null
+++ b/en/faqs/faq-how.md
@@ -0,0 +1,435 @@
+FAQ: How Do I\... / Can I\... ?  
+-------------------------------------------------------------------------
+
+- How can I contact the developer ?
+- How can I send the developer a bug report ?
+- How can I send the developer a long-term log ?
+- [Can I change an app\'s settings / press it\'s buttons ?](#a)
+- [Can I control / respond to events in application X with Tasker
+ ?](#o)
+- [How can I stop Tasker restoring a setting ?](#cx)
+- [Can Tasker detect volume button presses ?](#c)
+- [Can Tasker be used from an external SD card ?](#d)
+- [Can I use Tasker to turn the screen on and off ?](#e)
+- [How do I create my default settings ?](#f)
+- [How can I run more than one task when a profile goes active ?](#g)
+- [Can I hide the notification list entry when Tasker is running
+ ?](#h)
+- [Can I change or remove the status bar icon when Tasker is running
+ ?](#h2)
+- [What if I want a repeating time context, but I need to do something
+ that takes a while ?](#i)
+- [How can I do something every minute ?](#j)
+- [How do I specify *9:30AM on Monday* and *10AM on Tuesday* with the
+ same profile ?](#k)
+- [How do I specify weekend night-times ?](#k2)
+- [How do I stop the screen dimming when I have the display Stay On
+ set to e.g. \'With AC\' ?](#l)
+- [How can I stop Wifi Near toggling wifi on-off when the phone is in
+ Airplane Mode ?](#m)
+- [Can I divert incoming calls ?](#n)
+- [How can I detect if Wifi is connected (not just enabled) ?](#p)
+- [How can I import/export individual profiles, tasks or scenes ?](#q)
+- [How do I turn off the flashing notification LED ?](#s)
+- [How do I put my phone in Silent or Vibrate mode ?](#t)
+- [Can I automate sending of an SMS / Call through Google Voice ?](#u)
+- [Can I change/remove the notification sounds for particular apps
+ ?](#v)
+- Can I silence all notifications except from particular applications
+ ?
+- [Can I change the input method ?](#w)
+- [How do I test whether I can reach the Internet (ping) ?](#y)
+- [How can I use whitespace (newline, tab etc) in action parameters
+ ?](#y2)
+- [How can I run a task from a terminal login ?](#y3)
+- [How can I silence the camera shutter sound ?](#y4)
+
+------------------------------------------------------------------------
+
+[]{#z}
+
+#### How can I contact the developer ?
+
+There is a contact email given at **Menu / Info / Support**. In general,
+this is intended for order and validation help, which is often
+confidential, and other private issues.
+
+Please post Tasker usage queries/problems in the [Tasker
+Forum](http://groups.google.com/group/tasker) where the developer is
+very active.
+
+Advantages:
+
+- the user community has more experience than the developer with using
+ Tasker
+- other people can benefit if your problem is solved
+- the developer has more time for fixing bugs and adding features,
+ which benefits everyone
+
+[]{#x}
+
+#### How can I send the developer a bug report ?
+
+- go to *Android Settings* then **About Phone**
+- tap 10 or more times on the **Build Version** entry
+- go back one screen
+- select **Developer Options**
+- check the **USB Debugging** option if it\'s not already checked
+- do whatever it is that causes the problem
+- go back to **Developer Options** and tap **Take Bug Report** (the
+ first entry)
+- wait a short while until the bug report is ready (a notification
+ will appear)
+- share using an email application
+- the destination email address is listed in **Menu / Info / Support**
+ in Tasker
+- include at the top of the email a brief description of the problem
+ that the email concerns
+- disable **USB Debugging** and **Developer Options** (switch at top)
+
+Try to make the log as soon as possible after the problem occurs.
+
+[]{#x2}
+
+#### How can I send the developer a long-term log ?
+
+- deselect **Menu / Prefs / UI / Beginner Mode** in Tasker
+- enable **Menu / Prefs / Misc / Debug to Internal Storage** in Tasker
+- when the problem has occured, email the file
+ */sdcard/Tasker/log/tasker.txt* (and *tasker.txt.1*, if it exists)
+ to the developer email listed at **Menu / Info / Support**
+- include at the top a brief description of the problem that the log
+ concerns
+
+[]{#a}
+
+#### Can I change an app\'s settings / press it\'s buttons ?
+
+Standard Android doesn\'t allow an app to change, poke, prod or peek at
+anything within another app, including simulating keypresses and screen
+taps.
+
+On a rooted device, you can use some of the actions in the `Input`
+category to navigate around an app, click on UI elements and enter text
+automatically.
+
+[]{#o}
+
+#### Can I control / respond to events in application X with Tasker ?
+
+If a Tasker user wants to automate some aspect of another program they
+use, they just need to point the developer of the other app at the
+[Tasker Developer Page](/developers.html) and nag at him/her a bit.
+
+[]{#cx}
+
+#### How can I stop Tasker restoring a setting ?
+
+Tasker will restore any setting which is changed in the Enter task of a
+profile. There are four ways to prevent this:
+
+1. deselect the *Restore Settings* in the Profile Properties of the
+ relevant profile.
+2. if you set the same setting in the Exit task of the profile Tasker
+ will take that as a hint that the previous value shouldn\'t be
+ restored.
+3. create a separate task to run the settings actions and in the Enter
+ task of the profile do a Perform Task action (from the category
+ *Tasker*) on that separate task. This trick is known as Stefan\'s
+ Setting Sidestep.
+4. you can use the corresponding Javascriptlet function instead of the
+ setting action. Settings made in Javascriptlets are not restored.
+
+[]{#c}
+
+#### Can Tasker detect volume button presses ?
+
+No, sorry, that\'s not possible ATM.
+
+The closest you can get is to detect changes in a volume variable (e.g.
+%VOLR for the ringer volume) via event Variable Set.
+
+[]{#d}
+
+#### Can Tasker be used from an external SD card ?
+
+Prior to Android 6.0, that is not possible, even using apps2SD.
+
+With Android 6.0+ if the external SD is being used as \'adoptable\',
+\'flex\' or \'internal\' (the wording varies) storage, there should be
+no issue.
+
+[]{#e}
+
+#### Can I use Tasker to turn the screen on and off ?
+
+Turning on, use the Display / Turn On action. Unfortunately, that action
+is inaccessible with Android 2.3+.
+
+For turning off, you can use the Display / System Lock action with
+Android 2.0+.
+
+For Android 1.6, you can set the Display Timeout to it\'s minimum
+(around 7 seconds) and then set it back to normal in response to a
+Display Off event.
+
+[]{#f}
+
+#### How do I create my default settings ?
+
+You don\'t have to configure \'default\' settings in Tasker. The
+\'default\' settings are how your device is configured before any Tasker
+profile becomes active. This \'default\' is automatically restored as
+profiles become inactive.
+
+Exception: changes to settings made in *Exit* tasks are not restored.
+
+[]{#g}
+
+#### How can I run more than one task when a profile goes active ?
+
+Add an action *Perform Task* from the category *Tasker* for each task
+that you want to run (don\'t click the Stop button).
+
+**Warning:**: settings in the called tasks will not be restored by
+Tasker, only settings changed directly within the Enter task.
+
+[]{#h}
+
+#### Can I hide the notification list entry when Tasker is running ?
+
+If the notification is very annoying, it can be removed on many devices
+by setting the icon transparent at **Menu / Prefs / Monitor /
+Notification Icon**.
+
+If that doesn\'t work, disable the Run In Foreground setting which can
+be found at **Menu / Prefs / Monitor / Run In Foreground**
+
+Please read the help text associated with this option first.
+
+[]{#h2}
+
+#### Can I change or remove the status bar icon when Tasker is running ?
+
+You can change it with **Menu / Prefs / Monitor / Notification Icon**.
+
+You can remove it with **Menu / Prefs / Monitor / Show Notification
+Icon**.
+
+[]{#i}
+
+#### What if I want a repeating time context, but I need to do something that takes a while ?
+
+- GPS On
+- Wait 3 minutes
+- GPS Off
+
+[]{#j}
+
+#### How can I do something every minute ?
+
+Set a repeat period of 2 minutes (the minumum allowed) and specify a
+task like this:
+
+- Perform Task, TaDa
+- Wait 1 Minute
+- Perform Task, TaDa
+
+[]{#k}
+
+#### How do I specify 9:30AM on Monday and 10AM on Tuesday with the same profile ?
+
+You can\'t, because the Time and Day subcontexts operate completely
+independent of each other. You have to specify two profiles and run the
+same Task(s) with each of them (by giving the task a name).
+
+[]{#k2}
+
+#### How do I specify weekend night-times ?
+
+It\'s tempting to say:
+
+> ` Time: 23 - 09 Day: Friday or Saturday`
+
+But that won\'t work, because on Sunday at e.g. 3am the Day context (and
+hence the whole profile) won\'t be active.
+
+For this kind of situation, you need to specify a profile for which
+morning you want to be active and another for which evenings. In the
+example, you want Friday and Saturday night plus Saturday or Sunday
+morning:
+
+> ` Time: 23 - 24 Day: Friday or Saturday`
+
+> ` Time: 00 - 09 Day: Saturday or Sunday`
+
+[]{#l}
+
+#### How do I stop the screen dimming when I have the display Stay On set to e.g. \'With AC\' ?
+
+The screen dims around 10 seconds before the current Screen Off Timeout
+value is reached. You can set Screen Timeout (for the relevant context
+e.g. \'while docked\') to **Never** (set all sliders to maximum) if you
+don\'t like that behaviour. []{#m}
+
+#### How can I stop Wifi Near toggling wifi on-off when the phone is in Airplane Mode ?
+
+Add a state **Airplane Mode** to your profile and click the **Invert**
+button, which means *if Airplane Mode is off*. []{#n}
+
+#### Can I divert incoming calls ?
+
+It\'s not possible to divert incoming calls via Android, but most Mobile
+Carriers accept special dialled sequences to do it before the call
+reaches your phone.
+
+You can then use Tasker\'s *Phone / Call* action (with *Auto Dial*
+checked) to setup and cancel incoming call diversions.
+
+The [Wikipedia page on Call
+Forwarding](http://en.wikipedia.org/wiki/Call_forwarding) is a good
+starting point.
+
+[]{#p}
+
+#### How can I detect if Wifi is connected (not just enabled) ?
+
+The \'standard\' way is to use State *Wifi Connected* to set and clear
+your own variable with an enter and exit task respectively.
+
+An alternative trick is to match the word `connected` or `connection` in
+the %WIFII variable (the actual word and lower/upper case changes with
+Android version).
+
+[]{#q}
+
+#### How can I import/export individual profiles, tasks or scenes ?
+
+Import:
+
+Go to the main screen, long click on the tab for the type of thing you
+want to import.
+
+Export:
+
+- ensure that `Menu / Prefs / UI / Beginner Mode` is **un**checked
+- go to the main screen
+- long-click on the thing you want to export
+
+[]{#s}
+
+#### How do I turn off the flashing notification LED ?
+
+Use the Audio / Notification Pulse action.
+
+If you\'re wondering what a flashing light is doing in the Audio
+section: ask Google, that\'s where they put it in Android Settings.
+
+[]{#t}
+
+#### \>How do I put my phone in Silent or Vibrate mode ?
+
+Use action *Audio / Silent Mode*.
+
+Do not try to do it with *Volume Ringer* or *Vibrate on Ringer*.
+
+[]{#u}
+
+#### Can I automate sending of an SMS / Call through Google Voice ?
+
+Not directly through Tasker. However, [Steelgirder
+Developments](http://sites.google.com/site/steelgirderdevelopmentsite/home)
+have (non-free) plugins which you can easily use with Tasker to
+accomplish this.
+
+Steelgirder and the author of Tasker are agreed on working together
+wherever further integration of these plugins and Tasker is needed e.g.
+support for Tasker variables.
+
+[]{#v}
+
+#### Can I change/remove the notification sounds for particular apps ?
+
+Yes, but it\'s a little complicated, please see the [relevant forum
+post](http://groups.google.com/group/tasker/browse_thread/thread/4a6b6ea8b4e4cc86).
+[]{#v2}
+
+#### Can I silence all notifications except from particular applications ?
+
+With Tasker versions from 1.0.10, you can try turning off all
+notifications (e.g. via Silent Mode or setting the Notification Volume
+to 0) and then using Tasker to do alerts for particular app
+notifications using the `Notification` event in the UI category. []{#w}
+
+#### Can I change the input method ?
+
+On a rooted phone, yes, using the free Secure Settings plugin.
+
+Consider also starring this [feature
+request](http://code.google.com/p/android/issues/detail?id=11677) with
+Google.
+
+[]{#y}
+
+#### How do I test whether I can reach the Internet (ping) ?
+
+
+ HTTP Get URL (a known webpage), Continue Task On Error
+ If [ %HTTPR = 200 ]
+ ...
+ Endif
+
+[]{#y2}
+
+#### How can I use whitespace (newline, tab etc) in action parameters ?
+
+Tasker trims the start and end of all parameters to prevent whitespace
+causing problems. The only exception is the `Variable Set` action.
+
+Therefore, if you want to use whitespace you should first assign it to a
+variable and then use the variable where you want the whitespace to
+appear:
+
+> ` Variable Set, %white, THISISANEWLINE Flash, Here's a newline: %white`
+
+[]{#y3}
+
+#### How can I run a task from a terminal login ?
+
+ am broadcast -a net.dinglisch.android.tasker.ACTION_TASK -e task_name YOUR_TASK_NAME
+
+That\'s only possible on a rooted phone because otherwise there will be
+a permission problem.
+
+[]{#y4}
+
+#### How can I silence the camera shutter sound ?
+
+This varies per device.
+
+Try creating a new profile with an **App** context and select the Camera
+app. When asked to create a task, add the following actions:
+
+1. *Task / Wait*, **2 seconds**
+2. *Audio / Sound Effects*, **off**
+3. *Audio / Media Volume*, **0**
+4. *Audio / System Volume*, **0**
+5. *Audio / Notification Volume*, **0**
+6. *Audio / Silent Mode*, **on**
+
+Then go to the Camera app, wait a couple of seconds and try taking a
+picture.
+
+If you still hear the shutter sound, go back to the Tasker UI, click on
+the task that you created and hit the **Play** button bottom-left to run
+the task manually. Then go back to the Camera app. If you still hear the
+shutter sound, then it\'s not going to be possible for Tasker to disable
+it on your device.
+
+Some manufacturers deliberately prevent disabling of the shutter sound,
+perhaps for legal reasons.
+
+Addendum
+
+A user has reported that setting DTMF volume to 0 removes the **focus**
+sound in the camera app.
diff --git a/en/faqs/faq-other.md b/en/faqs/faq-other.md
new file mode 100644
index 0000000..5fccd9c
--- /dev/null
+++ b/en/faqs/faq-other.md
@@ -0,0 +1,47 @@
+FAQ: Other  
+----------------------------------------------------
+
+- [Do you plan to include feature X ?](#a)
+- [Should I worry about using Tasker\'s Accessibility service ?](#b)
+- [What\'s the difference between a Widget and a Shortcut
+ ?](userguide/en/app_widgets.html#diff)
+- [What\'s an *Instant Profile* ?](#instant)
+
+[]{#a}
+
+#### Do you plan to include feature X ?
+
+The developer has a large list of potential features and works through
+it according to a mystical method based on star configurations. It\'s
+difficult to say what will be done in advance, sorry. []{#b}
+
+#### Should I worry about using Tasker\'s Accessibility service ?
+
+Not at all.
+
+Although the Android warning says Tasker might read passwords, in fact:
+
+- Android doesn\'t allow apps to see the contents of fields labelled
+ *Password*
+- Tasker doesn\'t even ask Android for data about text fields, only
+ buttons, windows and notifications
+
+[]{#instant}
+
+#### What\'s an *Instant Profile* ?
+
+Most profiles have a duration. Their enter task fires, they are active
+for a while, then they go inactive and settings may be restored or an
+exit task fired. However, profiles with
+
+- an Event context, **or**
+- a Time context where the From parameter is the same as the To
+ parameter, **or**
+- a Time context with a repeat value specified
+
+are only active for an instant and hence it does not make sense to talk
+about an exit task and restoration of settings.
+
+There\'s no point setting brightness from 200 to 30, and then a
+millisecond later back to 200, therefore settings made by an instant
+profile stay at whatever value is specified.
diff --git a/en/faqs/faq-problem.md b/en/faqs/faq-problem.md
new file mode 100644
index 0000000..a2acd46
--- /dev/null
+++ b/en/faqs/faq-problem.md
@@ -0,0 +1,546 @@
+FAQ: Usage Problems  
+-------------------------------------------------------------
+
+- [Why doesn\'t Tasker work in the background on my device?](#00)
+- [Why won\'t Android let me uninstall Tasker ?](#0)
+- [Why isn\'t GPS coming on for my profile with Time And GPS Location
+ contexts ?](#c)
+- [Why can\'t I select Tasker for an application context ?](#d)
+- [Why does it take my Wifi Near state so long to exit ?](#e)
+- [Why isn\'t Tasker detecting when my Location Context changes ?](#f)
+- [Why does Tasker mess up the app launching when I have an
+ Application Context for it ?](#g)
+- [Why does my profile not do anything ?](#h)
+- [Why aren\'t my settings restored ?](#w)
+- Why does nothing happen when I click a Tasker widget ?
+- [Why does Tasker crash when I try to create a Location Context
+ ?](#j)
+- [Why can\'t I see any Tasker widgets in the home screen widget
+ selector ?](#k)
+- [Why doesn\'t my repeating Time Context work ?](#l)
+- [Why aren\'t my exit tasks run / settings restored before the device
+ shuts down ?](#m)
+- [Why does my location exit task fire multiple times ?](#n)
+- [Why does my Cell Near state keep going inactive ?](#o)
+- [Why doesn\'t Notify LED work ?](#p)
+- [Why do Tasker widgets disappear after a reboot on my Wildfire
+ ?](#q)
+- [Why isn\'t my docking station detected ?](#r)
+- [Why aren\'t I getting any cell data for the Cell Near state ?](#s)
+- [Why isn\'t there a green light for the On/Off radio button on the
+ main screen ?](#t)
+- [Why does the action Display Brightness cause my keyboard or
+ application to close ?](#u)
+- [Why is the date in Tasker\'s notification list completely wrong
+ ?](#v)
+- [Why won\'t Tasker install on my custom ROM ?](#w)
+- [Why doesn\'t my `Perform Task` action work when I Test it ?](#x)
+- [Why doesn\'t my App Context work ?](#app)
+- [Why doesn\'t the Keyguard action work properly ?](#keyguard)
+- [Why doesn\'t Tasker think my device is rooted ?](#root)
+- [Why doesn\'t Tasker show my Local Media images anymore ?](#img)
+
+------------------------------------------------------------------------
+
+[]{#00}
+
+#### Why doesn\'t Tasker work in the background on my device?
+
+To make sure Tasker and the AutoApps run in the foreground:
+
+- make sure Tasker is enabled
+- enable foreground notification in Tasker settings
+- enable the \"Use reliable alarms\" option
+- **Check out
+ [dontkillmyapp.com](https://dontkillmyapp.com/?app=Tasker).** This
+ website will show, for your specific vendor, the best way to allow
+ Tasker to work correctly in the background.
+- Disable battery optimization for the apps
+- Make sure the Android Settings -\> Apps -\> Tasker -\> Battery -\>
+ Background activity option is enabled (this setting may be somewhere
+ else on different OEMs, but it\'s a very important setting that
+ might be disabled by default on some devices)
+- If you want to use features while the screen is off make sure that
+ the options in Preferences -\> Monitor -\> Display Off Monitoring
+ are enabled for the conditions you want.
+- Make sure that you disable any \"battery saving\" apps like
+ Greenify, etc
+- If you want to have Wifi and Cell based profiles work on Android 8+
+ make sure that location is enabled on your device. It\'s an Android
+ requirement that Tasker can\'t work around.
+- On Sasmung devices go to Android Settings -\> Device Maintenance -\>
+ Battery -\> Unmonitored apps -\> add Tasker and all AutoApps
+- On Xiaomi devices enable \"Auto Start\" for the apps and \"Display
+ on Lock Screen\" under \"Other Permissions\"
+- On Xiaomi devices disable automatic backup of apps because that
+ process kills all running apps, including Tasker.
+- On Huawei devices click the [lock in the recents
+ menu](huaweilock.jpg) for all the AutoApps and Tasker
+- On Huawei devices manage battery optimizations manually in [battery
+ settings](huaweibatteryoptimizations.jpg) for all the AutoApps and
+ Tasker
+- On Huawei devices disable Powergenie which stops apps from running
+ in the background. Try going to Settings -\> Battery, then tapping
+ on the gear in the upper right corner. Disable \"Close excessively
+ power-intensive apps\". Or use ADB:
+ - To disable powergenie use: adb shell pm disable-user
+ com.huawei.powergenie
+
+
+
+ - To enable powergenie: adb shell pm enable com.huawei.powergenie
+
+- On Lenovo devices (possibly others) you have to disable the
+ [\"Disable Auto Start\"](lenovoapps.png) options for Tasker and all
+ AutoApps.
+- If you plan on using plugins, disabling power saver mode may help
+ with some issues
+
+[]{#0}
+
+#### Why won\'t Android let me uninstall Tasker ?
+
+It\'s probably because you\'re using an action which needs Tasker\'s
+device administrator function (e.g. `Display / System Lock`).
+
+You can disable it by going to
+`Android Settings / Location & Security / Device Administration`.
+
+[]{#c}
+
+#### Why isn\'t GPS coming on for my profile with Time And GPS Location contexts ?
+
+In order to save power, Tasker only activates context detection as it is
+needed. Therefore it will not attempt to fix your GPS location unless
+the Time context is active.
+
+See the [Power Usage](userguide/en/power.html) section of the userguide
+for more details.
+
+[]{#d}
+
+#### Why can\'t I select Tasker for an application context ?
+
+This is considered too dangerous. A mistake could easily result in being
+unable to enter Tasker and therefore being unable to rectify the
+mistake. []{#e}
+
+#### Why does it take my Wifi Near state so long to exit ?
+
+Wifi Near requires **two** check periods to pass without seeing the
+Access Point before the profile exits. This is intended to avoid the
+context activating and deactivating if the AP is briefly not visible.
+
+Note also that there are different check periods for when the device is
+on or off, and by default the off-period is much longer than the
+on-period. See Menu / Preferences / Monitor/ Display On/Off Timings.
+
+[]{#f}
+
+#### Why isn\'t Tasker detecting when my Location Context changes ?
+
+Your radius is probably too small.
+
+As an example, if you are not using GPS the accuracy of your fixes is
+probably around += 2km, so your radius should be also minimally 2km.
+
+If you \*are\* using GPS, the accuracy may still be only +-400m in
+built-up areas.
+
+Here\'s a good way to create a location context:
+
+- go to the geographical location you want a context for
+- make a new location context
+- deselect GPS if you don\'t want to use it
+- press Grab Fix, and wait till it\'s done
+
+This will set your radius appropriate to the accuracy of the location
+providers at that spot.
+
+If there\'s still nothing happening:
+
+- check GPS is on in Android Settings, if you\'re using GPS.
+- check your device has a view of the sky, if you\'re using GPS
+- network connectivity is often needed to get GPS started, and always
+ needed for a Net location context.
+- realize that location is only checked every 10 minutes by default
+ when the Display is off (to save power). You can check more often by
+ changing `Menu / Prefs / Monitor / Display Off Timings / All Checks`
+- try the [general \'nothing happens\'](#h) tips
+- look at [other possibilities for detecting your
+ location](/userguide/en/loctears.html)
+
+[]{#g}
+
+#### Why does Tasker mess up the app launching when I have an Application Context for it ?
+
+Some applications are sensitive like this. Probably all you have to do
+is put as the first action in the **Enter** task the action *Wait* and
+give as a parameter e.g. 300ms. If that doesn\'t work keep increasing
+the value until it does.
+
+That gives the application time to finish initializing before messing
+around with the screen brightness etc.
+
+[]{#w}
+
+#### Why aren\'t my settings restored ?
+
+Some possibilities:
+
+- if your profile sets setting x to *on*, then if x is already *on*
+ when the profile goes active, it will be left at *1* when the
+ profile exits. Test for this by putting an Alert / Notify action in
+ the enter task to see what the original value was.
+- some other apps installed on the system can cause Tasker to be
+ killed and therefore the original settings being forgotten e.g. this
+ has been reported to be a problem with Titanium Backup.
+- similarly, if the system is rebooted suddenly, some devices aren\'t
+ fast enough to save all the settings before the system turns off.
+
+[]{#h}
+
+#### Why does my profile not do anything ?
+
+Firstly, if are you using any of these other apps which have been
+reported as interfering try disabling or temporarily uninstalling them:
+
+- \'Task Killers\'
+- Quick System Info
+- Autostarts
+
+After that:
+
+- is the profile enabled ? It should have a green tick next to it.
+- have you clicked the *On* button in the [Profile List
+ screen](userguide/en/activity_summary.html) before leaving Tasker ?
+ It should be showing a **green light**.
+- is the profile shown as active in the status bar pulldown ? If so,
+ it\'s probably your task that\'s not working.
+- make sure the Monitor service running in the foreground (see
+ `Menu / Prefs / Monitor`)
+- how\'s your available memory, see
+ `Android Settings / Application / Running Services / Available Memory`.
+ Are you maybe getting Tasker\'s low-memory notifications ?
+
+If your profile is activating but the task doesn\'t seem to do anything:
+
+- perhaps you are running a pirated version of Tasker ?
+- try enabling **Menu / Prefs / More / Popup Warning/Errors** to see
+ if any errors are occuring (they may not be shown till you go back
+ to the Tasker UI)
+- look in **Menu / More / Run Log** to see if the task is being
+ carried out.
+- try a simple task like *Alert / Vibrate* or *Alert / Flash*
+- perhaps another profile is interfering: do **Menu / Data / Backup**,
+ then delete all other profiles except the one that\'s not working
+
+[]{#i}
+
+#### Why does nothing happen when I click a Tasker widget ?
+
+Usually this is due to Tasker not being enabled, see the *On/Off* button
+in the first UI screen. []{#j}
+
+#### Why does Tasker crash when I try to create a Location Context ?
+
+The likely cause is that you are running a non-standard Android ROM
+which doesn\'t contain the correct (or maybe any) Google Maps library.
+[]{#k}
+
+#### Why can\'t I see any Tasker widgets in the home screen widget selector ?
+
+This is almost always because you have Tasker installed on the SD card,
+which is just not possible due to several reasons related to how Tasker
+works. []{#l}
+
+#### Why doesn\'t my repeating Time Context work ?
+
+It\'s important to understand that a repeating time context is a
+**series of instant events**.
+
+Trying to combine a repeating time context with another context that
+does active monitoring usually won\'t work e.g.
+
+> ` Time: Repeating Every 5 Minutes Task: Enable Wifi (no toggle)`
+
+> ` State: Wifi Near Task: XXX`
+
+Wifi Near is checked on a static schedule. You currently can\'t change
+the schedule dynamically, so the above two profiles will only do XXX
+when the 5 minute repeat happens to coincide with when Tasker is doing
+it\'s Wifi Near check.
+
+[]{#m}
+
+#### Why aren\'t my exit tasks run / settings restored before the device shuts down ?
+
+Android gives an app very little time to perform cleanup during
+shutdown, this is especially a problem on slow devices.
+
+Therefore (as of 1.0.9), Tasker only attempts to run *Variable Set,
+Clear, Add* and *Subtract* actions when the device shuts down, since
+they take relatively little time.
+
+In the future, Tasker will have some concept of default values which
+will then be restored when it starts after the device has booted again.
+
+On Android 1.5 devices, Tasker cannot do anything at shutdown because
+the system does not send a notification.
+
+[]{#n}
+
+#### Why does my location exit task fire multiple times ?
+
+Probably the location Android reports is *bouncing* between a point
+inside your location radius and one outside. This is relatively unusual
+because Tasker has some built-in mechanisms to try and prevent it.
+
+A quick fix is to add a *Cooldown* to your profile. Click on a context,
+select Profile then Properties and slide the Cooldown Time to 30
+minutes.
+
+The profile is then prevented from going active more than once every 30
+minutes.
+
+[]{#o}
+
+#### Why does my Cell Near state keep going inactive ?
+
+Even when your phone is motionless, it will probably still often switch
+between different cell towers. Going to a different room in your house
+may involve a whole different set of cell towers.
+
+When you notice your Cell Near state going inactive at your location
+(and assuming you still have a signal), launch Tasker, click on the Cell
+Near context and edit it. Click **Scan** and you should immediately see
+a new Cell added to the list. Click **Done** and then **Apply** and your
+context should go active again.
+
+Sometimes the new cell will only be visible for a few seconds and will
+not appear when you press scan. In that case, press the **Recent**
+button and select it manually from the list.
+
+[]{#p}
+
+#### Why doesn\'t Notify LED work ?
+
+From the action help (hint hint):
+
+- not all devices support all colours. Many devices will only support
+ red and green. In general, colours near the top of the list are more
+ likely to be supported.
+- some devices will only flash the LED when the device is off at the
+ time the notification is received.
+
+[]{#q}
+
+#### Why do Tasker widgets disappear after a reboot on my Wildfire ?
+
+This is a bug on some Wildfire firmware version.
+
+It\'s not possible for the Tasker developer to work around, but is
+reported as fixed in version 1.25.405.1 of the firmware.
+
+[]{#r}
+
+#### Why isn\'t my docking station detected ?
+
+Some docking stations just aren\'t recognized as such (Android doesn\'t
+indicate that a docking station has been connected).
+
+Depending on other things you connect your device to, you might be able
+to use one of the following as a workaround:
+
+- State: USB connected
+- State: Power
+- State: BT Connected (if it\'s a BT dock)
+
+[]{#s}
+
+#### Why aren\'t I getting any cell data for the Cell Near state ?
+
+A user reports being able to fix this issue as follows:
+
+ I was able to fix this issue by going into the EPST menues using
+ ##DATA# on the keypad and changing the EVDO Preferred mode from HDR to
+ Automatic.
+
+It\'s possible that you will only be able to receive, not make, phone
+calls as another symptom of this problem.
+
+[]{#t}
+
+#### Why isn\'t there a green light for the On/Off radio button on the main screen ?
+
+A user discovered that this happens when the DPI value of the Android
+build is set to particulart values (e.g. 200,240 is OK, 220 the light
+disappears). []{#u}
+
+#### Why does the action Display Brightness cause my keyboard or application to close ?
+
+Normally Android does not effect changes to brightness immediately, so
+Tasker has to use a trick to make it happen. That trick can sometimes
+have the side effect that e.g. some dialogs like the soft keyboard may
+close.
+
+To avoid that, you can deselect the Immediate Effect checkbox in the
+Display Brightness action.
+
+[]{#v}
+
+#### Why is the date in Tasker\'s notification list completely wrong ?
+
+This occurs if you select a transparent *Notification Icon* at
+`Menu / Prefs / Monitor`, but don\'t specify a *Custom Notification
+Layout*.
+
+Changing to a non-transparent icon or a custom layout will fix the
+problem.
+
+[]{#w}
+
+#### Why won\'t Tasker install on my custom ROM ?
+
+The most likely reason is that you don\'t have Google Maps installed on
+the device. With several custom ROMs that comes as a separate package.
+[]{#x}
+
+#### Why doesn\'t my `Perform Task` action work when I Test it ?
+
+When task (a) runs a `Perform Task` action to start task (b), the order
+in which the two tasks are executed depends on their relative
+priorities.
+
+A feature of the Test button is that the tested task (a) runs at
+extremely high priority to ensure that the task runs even if other tasks
+are running in the background.
+
+So testing `Perform Task` with the Test button will only work as
+expected if in actual usage task (a) will always have higher priority
+than task (b) or the `Perform Task` action has **Stop** specified.
+
+[]{#app}
+
+#### Why doesn\'t my App Context work ?
+
+First, we need to find out which method Tasker is using to detect app
+changes on your device.
+
+Disable `Menu / Prefs / UI / Beginner Mode` then look in
+`Menu / Prefs / Monitor` to see if you have an entry **App Check
+Method**. If you don\'t have such an entry, Tasker is using its
+*Accessibility Service*.
+
+If Tasker is using Usage Stats for app detection, you need to ask
+Android to give Tasker permission to do that, see
+`Menu / More / Android Settings / App Usage Stats`. Otherwise, you need
+to make sure Tasker\'s Accessibility Service is enabled in Android
+Settings, see `Menu / More / Android Settings / Accessibility service`.
+
+Further tips:
+
+- if Tasker offers you the choice to use different methods, try the
+ other methods. Remember to give Tasker permission in Android
+ settings for the new method (see above).
+- If you are using Nova Launcher, set
+ `Settings / App & Widget Drawer / Advanced / Automatically Close` to
+ **off**.
+- Some apps (very few) aren\'t detected by Tasker, usually due to
+ their internal structure.
+- Some custom Android ROMs also have special configurations which
+ prevent Tasker\'s app detection working.
+
+For the latter problem, there are a few things you can try:
+
+- look for special settings in your ROM that relate to \'keeping the
+ launcher in memory\'. They should be **disabled**.
+- change the build properties file. Look in `/system/build.prop` (or
+ possibly `/system/local.prop` or `/data/local.prop`) for a line
+ like:
+
+ > ro.HOME\_APP\_ADJ=-17
+
+ Change it in a terminal program to look like this:
+
+ > ro.HOME\_APP\_ADJ=1
+
+ If you didn\'t find an existing line, just add the new line as
+ above.
+
+ Note: you will first need to make `/system` writeable. You can do
+ that e.g. with Tasker\'s `Remount` action. Remember to make it
+ not-writeable again after making the change.
+
+- try detecting apps with a state using the **%WIN** (*window title*)
+ variable; create a new state
+
+ > `Variable Value, %WIN, Matches, TITLE`
+
+ where TITLE is the title of the window of the app you are interested
+ in. For this solution to work, you also need to enable Tasker\'s
+ *Accessibility Service* in Android Settings.
+
+ You can check what %WIN shows for the app you are interested in with
+ this profile:
+
+ > Event: Variable Set, %WIN\
+ > Alert / Flash, Win is now %WIN
+
+[]{#keyguard}
+
+#### Why doesn\'t the Keyguard action work properly ?
+
+Android does not officially support toggling of the Keyguard by an app.
+The Keyguard action was introduced in an early version of Tasker when a
+reliable workaround was possible.
+
+In more recent Android versions, the workaround is no longer so reliable
+due to internal changes made within Android. If Keyguard works at all,
+there may be disturbing side-effects.
+
+The Keyguard action will likely be most reliablewhen the display is on
+and and the Keyguard is already unlocked.
+
+Some people have more luck with the same functionality provided by the
+[Secure Settings
+plugin](https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin).
+After install, you can find the Secure Settings plugin in the **Plugin**
+action category. Note that a rooted device is **not** needed to use this
+part of Secure Settings.
+
+[]{#root}
+
+#### Why doesn\'t Tasker think my device is rooted ?
+
+Tasker requires two things before root functionality is enabled:
+
+1. the `su` program must be in your path
+2. **one** of the following must be found:
+ - a superuser package
+ - the word *modversion* somewhere in the file `/system/build.prop`
+
+If root is not being detected on your device but you are sure that root
+can be used by Tasker, you can therefore probably fix that by adding a
+line like:
+
+> `# modversion this line enables Tasker root support`
+
+to the top of the file `/system/build.prop`.
+
+[]{#img}
+
+#### Why doesn\'t Tasker show my Local Media images anymore ?
+
+When you select a Local Media image, Android grants Tasker rights to
+keep using it.
+
+However, when you uninstall Tasker, Android forgets those rights and
+doesn\'t reassign them when you install Tasker again. This is clearly a
+failing in Android\... On some devices Android also forgets the rights
+when the device is rebooted, but this is very rare and almost certainly
+a problem with the particular device involved.
+
+To fix the problem, you wil unfortunately need to reselect the Local
+Media images in the Tasker UI so that Android grants it access rights
+again.
diff --git a/en/faqs/faq-why.md b/en/faqs/faq-why.md
new file mode 100644
index 0000000..50d55f3
--- /dev/null
+++ b/en/faqs/faq-why.md
@@ -0,0 +1,135 @@
+FAQ: Why\... ?  
+--------------------------------------------------------
+
+- [Why am I an idiot if I use a pirated copy of Tasker ?](#f)
+- [Why is GPS often scanning when I unlock my device ?](#a)
+- [Why does Tasker need so many permissions ?](#b)
+- [Why does Tasker need the INTERNET permission ?](#c)
+- [Why isn\'t Tasker shown in the Application Context list ?](#d)
+- [Why does Tasker have it\'s own music player **and** controls for
+ the system music player ?](#e)
+- [Why does a Cell Near context not become inactive when I turn on
+ Airplane Mode ?](#g)
+- [Why can\'t I use a downloaded icon for my shortcut task / Notify
+ action ?](#h)
+- [Why does my profile have 2 enter tasks ? Why can\'t I add an exit
+ task ?](#i)
+
+------------------------------------------------------------------------
+
+[]{#f}
+
+#### Why am I an idiot if I use a pirated copy of Tasker ?
+
+The hacker can do virtually anything with your phone. Record your calls
+and upload them to a website, SMS your location and all your contacts,
+make calls automatically, wipe your SD card, secretely record from your
+microphone any time etc etc []{#a}
+
+#### Why is GPS often scanning when I unlock my device ?
+
+When the device wakes up, Tasker switches from a low-frequency GPS check
+schedule to a higher-frequency one. Android\'s GPS software always does
+an immediate scan when switching the check frequency.
+
+It\'s not because Tasker is constantly scanning while the device is off
+
+You can change the frequency in Menu / Prefs / Monitor.
+
+[]{#b}
+
+#### Why does Tasker need so many permissions ?
+
+Because it can do so much!
+
+Unfortunately, Android requires that an app specify it\'s permissions
+even if they are never used, which means that permissions for all of the
+things which the user could **potentially** ask Tasker to do need to be
+specified.
+
+If you are still concerned, consider that Tasker has over 25,000
+downloads at the time of writing and any abuse taking place would
+quickly be discovered.
+
+[]{#c}
+
+#### Why does Tasker need the INTERNET permission ?
+
+The INTERNET permission is used solely for:
+
+- google maps downloading map data, only for setting up a Location
+ context
+- to carry out HTTP Post/Get actions and other actions that require an
+ Internet connection by their nature
+- to verify the order number, and only until it has been successfully
+ verified
+- to check whether a new Tasker version is available, if configured in
+ Preferences
+
+Tasker never directly uses Internet access for **anything** else.
+
+[]{#d}
+
+#### Why isn\'t Tasker shown in the Application Context list ?
+
+Because it\'s easy to get into trouble firing tasks in Tasker. For
+example, if a profile is setup with a Tasker Application Context and a
+task with Load App Calculator, it will not be possible to enter Tasker
+anymore. []{#e}
+
+#### Why does Tasker have it\'s own music player **and** controls for the system music player ?
+
+- the system music player is not guaranteed to be present or the same
+ on all systems.
+- finer control can be exercised over the Tasker player e.g. starting
+ the track from a preset seek point
+- Tasker\'s player is more discrete, there is no notification bar
+ icon.
+- by having two players available you can do things like alternating
+ audio from different music sources or even playing simiultaneously.
+
+[]{#g}
+
+#### Why does a Cell Near context not become inactive when I turn on Airplane Mode ?
+
+Cell Near is *sticky*. That means that once active it stays active until
+a non-matching Cell ID is seen. In Airplane Mode no Cell IDs are seen
+and so the context stays active.
+
+Many people use Airplane Mode at night e.g. to save battery. If you also
+have a Cell Near profile that detects when you are home, it would become
+inactive at night if Cell Near wasn\'t sticky.
+
+A couple of points:
+
+- the Cell radio isn\'t being turned on by Tasker in Airplane Mode.
+- if you want a profile to become inactive for Airplane Mode, just add
+ an Inverted state Airplane Mode to it.
+
+[]{#h}
+
+#### Why can\'t I use a downloaded icon for my shortcut task / `Notify` action ?
+
+Some things just weren\'t meant to be (i.e. Android doesn\'t allow it).
+
+To solve the shortcut problem, you can always use a widget though.
+
+For notifications:
+
+- if you would like this to be possible one day, please star this
+ [Android feature
+ request](http://code.google.com/p/android/issues/detail?id=12302)
+- it would be technically possible to create \'icon pack\' APKs and
+ that might happen one day
+
+[]{#i}
+
+#### Why does my profile have 2 enter tasks ? Why can\'t I add an exit task ?
+
+That\'s because it\'s an [instant](faq-other.html#instant) profile.
+
+As a convenience, the Exit task with such profiles is replaced by an
+extra Enter task in case you have a lot to do with that profile.
+
+Note that the tasks you specify execute in the order they are specified,
+their actions do not alternate.
diff --git a/en/flowcontrol.md b/en/flowcontrol.md
new file mode 100644
index 0000000..729ae5e
--- /dev/null
+++ b/en/flowcontrol.md
@@ -0,0 +1,291 @@
+---
+title: 'Tasker: Flow Control'
+---
+
+Flow Control 
+---------------------------------
+
+#### Overview
+
+Task flow control is based on the following Tasker elements:
+
+- [variable](variables.html) values
+- [conditions](#condition) on individual actions
+- *If / Else / Endif* actions for conditional grouping of following
+ actions
+- *For / End For* to do a set of actions once for each of a set of
+ elements
+- *Goto* action (jumping around within a task).
+- *Perform Task* action (calling other tasks as subroutines)
+- *Stop* action (terminate task immediately)
+
+On the Wiki there is a detailed example of [processing a file\'s
+content](http://tasker.wikidot.com/fileproc) \[External Link\].
+
+Tip: if you accidentally create a task that never ends when
+experimenting with loops, use the **Kill** button in the Task Edit
+screen to end it manually.
+
+[]{#condition}
+
+##### Conditions
+
+Every action can have a condition associated with it (specify this in
+the Action Edit screen). If the condition does not match, the action
+will be skipped.
+
+A condition consists of an *operator* (\'equals\' etc) and two
+*parameters*. The possible operators are:
+
+- *Equals* (eq)\
+ The left parameter is identical to the right parameter.
+- *Doesn\'t Equal* (neq)\
+ The left parameter is not identical to the right parameter.
+- *Matches* (\~)\
+ The right parameter is a pattern which the left parameter is
+ [matched against](matching.html).
+- *Not Matches* (!\~)\
+ As above, but the match must fail for the action to be executed.
+- *Matches Regex* (\~R)\
+ The right parameter is a regular expression which the left parameter
+ is [matched against](matching.html#regex).
+- *Doesn\'t Match Regex* (!\~R)\
+ As above, but the match must fail for the action to be executed.
+- *Maths: Less Than* (\<)\
+ Both parameters (after variables are substitued) must be numbers or
+ mathematical expressions and the first must be **less** than the
+ second e.g. `3` \< `6`. See [Maths](maths.html) for more info.
+- *Maths: Greater Than* (\>)\
+ As above, but the first parameter must evaluate to **more** than the
+ second.
+- *Maths: Equals* (=)\
+ As above, but the two parameters must be numerically equal.
+- *Maths: Isn\'t Equal To* (!=)\
+ As above, but the two parameters must be **not** numerically equal.
+- *Maths: Is Even* (Even)\
+ The left parameter is an even number.
+- *Maths: Is Odd* (Odd)\
+ The left parameter is an odd number.
+- *Is/Isn\'t Set* (Set/!Set)\
+ Whether the specified variable has a value or not.
+
+Expressions which are not mathematically valid e.g. *I Am The Walrus \>
+5* give a warning and evaluate to **false** when used with a
+mathematical operator.
+
+[]{#for}
+
+#### Foreach Loop
+
+Goal: perform a set of actions for each of *apple*, *pear* and *banana*.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **For**\ Loop once for each of
+ %item\ apple, pear and banana
+ apple,pear,banana
+
+ 2. **Action One**\ Example: Flash %item
+
+ 3. **Action Two**\ \...
+
+ 4. **End For**\ Return to action 1 if
+ we havn\'t done all the
+ items yet
+ ----------------------- ----------------------- -----------------------
+
+Result: Action One and Action Two are performed three times. The first
+time, the variable %item is set to *apple*, the second time *pear* and
+the last time *banana*.
+
+You can insert a `Goto` action in the loop with either *Top of Loop*
+(meaning continue, skip to the next item straight away) or *End of Loop*
+(meaning break, stop without doing any more items) specified.
+
+In adition to simple text, the `For` action accepts any comma-separated
+combination of these Items:
+
+- a numeric range e.g. 1:5 (= **1,2,3,4,5**)
+- a numeric range with a jump e.g. 8:2:-2 (= **8,6,4,2**)
+- a numeric range defined by variable values e.g. *2:%end:%skip*,
+ *1:%arr(\#)*
+- a variable name (which is replaced) e.g. %fruit (= **banana** maybe)
+- a [variable array](variables.html#arrays) part e.g. *%arr(1:2)* (=
+ %arr1, %arr2 = **apple,banana** maybe)
+
+A common case is to use %arr(), which performs a loop for each element
+in the array %arr.
+
+**Warning**: the *Values* parameter in the loop is reevaluated with each
+iteration of the loop, meaning that modifying array variables which
+appear there from within the loop can have unexpected effects. To
+workaround that, it can be best to use the following sequence:
+
+ Variables Set, %values, %arrayWhichWillChange()
+ Variable Split, %values
+ For, %value, %values()
+ ...
+
+#### For Loop
+
+Goal: perform a set of actions for each of a set of elements in turn.
+
+Use the *Foreach Loop* as described above, with the *Items* parameter
+being a range specification e.g. 4:0, 100, 0:8:2 (=
+**4,3,2,1,0,100,0,2,4,6,8**).
+
+#### Until Loop
+
+Goal: perform a Task X until some condition is met (at least once)
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Action One**\ \...
+
+ 2. **Action Two**\ \...
+
+ 3. **Goto**\ Return to action 1 if
+ 1\ runtime \< 20
+ If %qtime **\<** 20
+ ----------------------- ----------------------- -----------------------
+
+Result: Action One and Action Two are performed until %QTIME contains
+the value 20 or more i.e. until the task has been running for 20
+seconds.
+
+Note: %QTIME is a builtin local variable available in all tasks.
+
+#### While Loop
+
+Goal: perform a Task X while some condition is met.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Stop**\ Stop task if it\'s not
+ \ crunchy, otherwise go
+ If %fruit **Not to next action
+ Matches** Apple
+
+ 2. **Action One**\ \...
+
+ 3. **Action Two**\ \...
+
+ 4. **Goto**\ Go back and see if
+ 1 we\'re still crunchy
+ ----------------------- ----------------------- -----------------------
+
+Result: Action One and Action Two are performed while %fruit contains
+the value Apple.
+
+#### Counter Loop
+
+Goal: perform a Task X a set number of times.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Variable Set**\ Initialize the counter
+ %count, 0
+
+ 2. **Action One**\ \...
+ Label: *LoopStart*
+
+ 3. **Action Two**\ \...
+
+ 4. **Variable Add**\ Add one to %count
+ %count, 1
+
+ 5. **Goto**\ Return to action 2 if
+ *LoopStart*\ count \< 10
+ If %count **\<** 10
+ ----------------------- ----------------------- -----------------------
+
+Result: after initialization of %count to 0, the task loops around the
+actions from 2-5 until %count reaches 10, at which point the condition
+on the `Goto` fails and the end of the task is reached.
+
+Note that we used a `Goto` to a **labelled** action this time. In all
+but the very simplest tasks it\'s better to use a label rather than a
+number. It\'s easier to work out what\'s happening and if you insert or
+delete actions before the loop starts, the `Goto` will still jump to the
+right place.
+
+An alternative way to do this loop is to use a For action specified as
+*0:10*.
+
+#### If / Then / Else Condition
+
+Goal: perform certain Tasks if conditions are met, otherwise perform a
+different task.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **If**\ **\~** is short for
+ %fruit **\~** Apple \'matches\'
+
+ 2. **Action One** \...
+
+ 3. **Action Two**\ \...
+
+ 4. **Else If**\ an `Else` action with a
+ %fruit **\~** Pear condition
+
+ 5. **Action Three** \...
+
+ 6. **Else**\
+
+ 7. **Action Four**\ \...
+ ----------------------- ----------------------- -----------------------
+
+Result: actions One and Two are executed if %fruit matches Apple, Action
+Three is executed if %fruit matches Pear, otherwise Action Four is
+executed.
+
+Notes:
+
+- you can have as many `Else If`s in a condition as you like
+- if your condition is in the middle of a more complicated task, you
+ need to tell Tasker where the condition ends with an `End If` action
+
+#### Subroutines
+
+To call another task, use the `Perform Task` action. To use it as a
+subroutine, you just need to ensure that the priority of the calling
+task is less than the priority of the called task (more info:
+[scheduling](tasks.html#scheduling)).
+
+The parent can optionally pass values to the child and receive a result
+back:
+
+*Parent Task*
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Perform Task**\ pass 5 to the child,
+ Child,\ expect a result in
+ Priority, 10\ %result
+ %par1, 5,\
+ Result Value Variable,
+ %result
+
+ 2. **Variable Flash**\ what did we get back ?
+ Result: %result
+ ----------------------- ----------------------- -----------------------
+
+*Child Task*
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Variable Set**\ add one to the value
+ %newval, %par1 + 1, Do that was passed
+ Maths
+
+ 1. **Return**\ set %result in the
+ %newval\ parent to the value of
+ %newval in the child
+ ----------------------- ----------------------- -----------------------
+
+Result: the parent flashes **6**
+
+Notes:
+
+- changes made to *%par1* and *%par2* in the child task are **not**
+ reflected by their changing in the parent task
+- receiving a return value is optional for the parent, even if the
+ child tries to give it one
+- unlike `Return` statements in most computer languages, Tasker\'s
+ does not necessarily stop the child task, so if the child and parent
+ have the same priority they can both run together and the child
+ return several results over time.
diff --git a/en/gestures.md b/en/gestures.md
new file mode 100644
index 0000000..552b93d
--- /dev/null
+++ b/en/gestures.md
@@ -0,0 +1,104 @@
+---
+title: 'Tasker: Gestures & Shaking'
+---
+
+Gestures & Shaking 
+---------------------------------------
+
+#### General
+
+*Gestures* are physical movements of the phone in space, which you first
+record by creating a new Event of type *Gesture* (in the *Misc*
+category).
+
+When you later redo the gesture while using your device, Tasker will
+carry out the corresponding task(s) you have attached to its profile.
+
+Like normal events, gestures are restricted by other contexts. For
+example, if you define a profile with a Gesture (Event) and Application
+context, the gesture will only be recognized while using that particular
+application.
+
+Note: it might be a good idea to disable Tasker before setting up new
+gestures, as otherwise you are likely to trigger previously defined
+ones.
+
+#### Recording A Gesture
+
+##### Gesture Points
+
+First off, it\'s important to know that Tasker only records the
+particular points (which we\'ll call *inflection points*) of a gesture
+that you tell it to. For example, recording a gesture involving tilting
+the phone to the left and back you would record three inflection points:
+the start, the tilted left position, and the end (which is the same as
+the start in this case).
+
+You can record as many points as you like, but in general it\'s best to
+record only the points where the phone is not moving.
+
+##### Recognized Movements
+
+Tasker will only recognize changes in the **angle** of the phone i.e.
+**tilting** to left or right, backwards or forwards, or rotating
+vertically. Imagine three poles going through the device in the three
+dimensions.
+
+**Moving** the phone backwards or forwards, up or down or side to side
+cannot be recognized.
+
+##### Procedure
+
+1. create a new Gesture Event and give it a name (so you can
+ differentiate between different gestures).
+2. put the phone in the position where you want the gesture to start
+ and **press-and-hold** the **Call**, **Camera**, **Menu**,
+ **Search** or **Volume** hardware buttons to record the point. The
+ device will buzz.
+3. move to another (preferably not-moving) point on the path of your
+ gesture, and press the button again (not a long press). The device
+ will buzz.
+4. on the **final** inflection point, **press-and-hold** the button to
+ mark the end of the gesture. The device will buzz again and the
+ \"Recorded.\" message should now flash up.
+5. Press **Done**, and add a Vibrate action so you can hear when your
+ pattern matches when testing it.
+
+#### Activation
+
+##### Calibration
+
+Before trying to match a pattern, you probably need to calibrate the
+hardware in your device. Go to `Menu / Prefs / Monitor / Gestures`.
+Press the **Calibrate** button and tilt your phone around in all
+directions.
+
+Tasker now has some idea what kind of values the *accelerometer* in your
+phone produces.
+
+You only need to calibrate once.
+
+#### Matching
+
+Now exit Tasker and move your device through the points you previously
+defined when recording. You should hear the device vibrate when it
+reaches the final recorded point.
+
+If not, try playing with the values in the Gesture Settings screen. For
+instance, you could try raising the Match Radius (but be careful not to
+raise it too much or you\'ll get a lot of matches by mistake).
+
+#### Power Usage
+
+Tasker does its best to limit power usage of gesture monitoring.
+
+- monitoring for gestures only takes place when all the other contexts
+ in a profile are already active (and so the gesture might have a
+ chance of activating the profile). For example, if you combine an
+ Application and Gesture (Event) context, gesture monitoring will
+ only take place while using that particular application.
+- Gesture monitoring is by default turned off when the display is off
+ unless a power source is connected to the device, unless specified
+ otherwise in `Menu / Prefs / Monitor / Display Off Monitoring`
+- updates from the accelerometer are at the minumum rate until the
+ start of a gesture is detected.
diff --git a/en/help/ah_accelerometer.md b/en/help/ah_accelerometer.md
new file mode 100644
index 0000000..a9d9669
--- /dev/null
+++ b/en/help/ah_accelerometer.md
@@ -0,0 +1,4 @@
+### Display AutoRotate
+
+Whether rotating the device also rotates the screen (between portrait
+and landscape).
diff --git a/en/help/ah_airplane_mode.md b/en/help/ah_airplane_mode.md
new file mode 100644
index 0000000..7d02171
--- /dev/null
+++ b/en/help/ah_airplane_mode.md
@@ -0,0 +1,6 @@
+### Airplane Mode
+
+Whether airplane mode is enabled (all wireless devices off) or enabled
+(each wireless device is enabled if it is individually enabled).\
+\
+See also: action Airplane Radios.
diff --git a/en/help/ah_airplane_radios.md b/en/help/ah_airplane_radios.md
new file mode 100644
index 0000000..5deff53
--- /dev/null
+++ b/en/help/ah_airplane_radios.md
@@ -0,0 +1,13 @@
+### Airplane Radios
+
+Specify which radios should be **disabled** when entering Airplane
+Mode.\
+\
+This can be useful for e.g. turning off the phone radio when it is not
+required; first set Airplane Radios to only Phone, then use the Airplane
+Mode action to enter Airplane Mode.\
+\
+Important: for some radios the setting may not take effect until the
+device has been restarted.\
+\
+See also: variable %AIRR.
diff --git a/en/help/ah_alarm_volume.md b/en/help/ah_alarm_volume.md
new file mode 100644
index 0000000..cbae2f5
--- /dev/null
+++ b/en/help/ah_alarm_volume.md
@@ -0,0 +1,9 @@
+### Alarm Volume
+
+Alarm volume level.\
+\
+Setting to 0 will mute alarms.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
diff --git a/en/help/ah_anchor.md b/en/help/ah_anchor.md
new file mode 100644
index 0000000..8c6ea44
--- /dev/null
+++ b/en/help/ah_anchor.md
@@ -0,0 +1,7 @@
+### Anchor
+
+Provides a fixed, named point in a task.\
+\
+This is most useful as the top action in a loop with a Goto action at
+the end; it allows new actions to easily be inserted at the top of the
+loop (under the Anchor).
diff --git a/en/help/ah_android_media_control.md b/en/help/ah_android_media_control.md
new file mode 100644
index 0000000..3a08881
--- /dev/null
+++ b/en/help/ah_android_media_control.md
@@ -0,0 +1,11 @@
+### Media Control
+
+Send a command to a media playback application.\
+\
+A target app need only be specified when multiple apps are interpreting
+the command.\
+\
+Note: the Toggle Pause function may not work unless playback has already
+been started manually.\
+\
+Note: Tasker\'s Music XXX actions are not controlled by this action.
diff --git a/en/help/ah_android_notifier.md b/en/help/ah_android_notifier.md
new file mode 100644
index 0000000..308354c
--- /dev/null
+++ b/en/help/ah_android_notifier.md
@@ -0,0 +1,8 @@
+### Android Notifier
+
+Android Notifier is a service for contacting your desktop via your
+mobile phone.\
+\
+Info:\
+\
+http://code.google.com/p/android-notifier/
diff --git a/en/help/ah_array_clear.md b/en/help/ah_array_clear.md
new file mode 100644
index 0000000..519b784
--- /dev/null
+++ b/en/help/ah_array_clear.md
@@ -0,0 +1,3 @@
+### Array Clear
+
+Remove all the elements of an array variable.
diff --git a/en/help/ah_array_pop.md b/en/help/ah_array_pop.md
new file mode 100644
index 0000000..decbd26
--- /dev/null
+++ b/en/help/ah_array_pop.md
@@ -0,0 +1,13 @@
+### Array Pop
+
+Remove an element from an array and shuffle all the higher array
+elements down to fill the gap.\
+If Position is higher than the last index in the array, the last element
+is removed.\
+\
+If To Var is set, the \'popped\' value is assigned to that variable.\
+\
+Note: a variable clear or set broadcast is only done for the specified
+array index.\
+\
+See Also: the Variables section of the Userguide.
diff --git a/en/help/ah_array_process.md b/en/help/ah_array_process.md
new file mode 100644
index 0000000..11fcab2
--- /dev/null
+++ b/en/help/ah_array_process.md
@@ -0,0 +1,13 @@
+### Array Process
+
+Perform an operation on the elements of an array as a group.\
+\
+Rotate shifts all the elements to left or right, and puts the end one
+back at the other side.\
+\
+Squash removes array indices for which no value is assigned e.g. if
+%var1=one and %var3=three, squash will result in %var1=one and
+%var2=three.\
+\
+The numeric sorts use the first number they find in each entry e.g. a3c,
+b5, 1x becomes 1x, a3c, b5.
diff --git a/en/help/ah_array_push.md b/en/help/ah_array_push.md
new file mode 100644
index 0000000..5cfeb2c
--- /dev/null
+++ b/en/help/ah_array_push.md
@@ -0,0 +1,15 @@
+### Array Push
+
+Add a new element to a variable array, pushing existing elements upwards
+to make space if necessary.\
+\
+If Position is higher than the last index in the array, the new element
+is added at the end of the array.\
+\
+If Fill Spaces is specified, higher elements will only be pushed up
+until a non-defined element is found (which will be filled).\
+\
+Note: a variable set broadcast is only done for the specified array
+element even if the action also causes changes in other elements.\
+\
+See Also: the Variables section of the Userguide.
diff --git a/en/help/ah_array_set.md b/en/help/ah_array_set.md
new file mode 100644
index 0000000..c946aef
--- /dev/null
+++ b/en/help/ah_array_set.md
@@ -0,0 +1,11 @@
+### Array Set
+
+Set the values of an array from a preset list of Values.\
+\
+The values are split by Splitter, or whitespace if none is specified,
+and each value is then placed in a successive array index of the new
+array.\
+\
+If the array already existed, it is first cleared.\
+\
+See Also: action Variable Split.
diff --git a/en/help/ah_ask_permissions.md b/en/help/ah_ask_permissions.md
new file mode 100644
index 0000000..e2c8bbc
--- /dev/null
+++ b/en/help/ah_ask_permissions.md
@@ -0,0 +1,11 @@
+### Ask Permissions
+
+Bring up a permission granting dialog asking for the permissions you
+specify.
+
+Some special permissions like **Writing Secure Settings** or **Drawing
+over other apps** bring up their own special dialogs.
+
+This is meant to be used when sharing Tasks/Apps and they need special
+permissions to run. You can use this action to ask for permissions prior
+to using actions that need them.
diff --git a/en/help/ah_astrid.md b/en/help/ah_astrid.md
new file mode 100644
index 0000000..2bdb342
--- /dev/null
+++ b/en/help/ah_astrid.md
@@ -0,0 +1,5 @@
+### Astrid
+
+Info:\
+\
+http://weloveastrid.com
diff --git a/en/help/ah_authentication_dialog.md b/en/help/ah_authentication_dialog.md
new file mode 100644
index 0000000..f3c6462
--- /dev/null
+++ b/en/help/ah_authentication_dialog.md
@@ -0,0 +1,36 @@
+Authentication Dialog
+---------------------
+
+Show a dialog that allows the current user to authenticate. This can be
+used to allow for secure execution of certain tasks.
+
+**Read Result To** will set the authentication result into both a
+variable and an array with that variable name:
+
+- **Variable**: Will contain the last authentication result. Can be
+ **success** or whatever error there was in case of an error. You
+ will probably use this most of the time.
+- **Array**: For advanced uses. Will contain all authentication
+ results that resulted from the dialog, ie, if your finger wasn\'t
+ recognized first but then it was you\'ll have an array with 2 items:
+ an error and success
+
+If you want to handle errors use the **Continue Task After Error**
+option and check the result variable.
+
+### Credentials
+
+Works on all Android versions.
+
+Shows the standard Android authentication dialog and asks for whatever
+credentials you currently have setup on your device.
+
+It doesn\'t work if you don\'t have any credentials setup at the moment
+of running.
+
+### Biometric
+
+Only works for Android 9 and above
+
+If you fail to authenticate 5 times in a row Android will block access
+to this for 30 seconds
diff --git a/en/help/ah_auto_sync.md b/en/help/ah_auto_sync.md
new file mode 100644
index 0000000..d83f1d6
--- /dev/null
+++ b/en/help/ah_auto_sync.md
@@ -0,0 +1,7 @@
+### Auto-Sync
+
+Whether auto-syncing of data is enabled.\
+\
+Note: the Android power manager widget does not update correctly after
+this action. Also: actual sync will only take place if the Android
+Background Data setting is enabled.
diff --git a/en/help/ah_beep.md b/en/help/ah_beep.md
new file mode 100644
index 0000000..4727827
--- /dev/null
+++ b/en/help/ah_beep.md
@@ -0,0 +1,9 @@
+### Beep
+
+Generate a fixed-frequency audio tone.\
+\
+Amplitude is the percentage of maximum amplitude. The system volume
+setting for the selected output stream will also affect the perceived
+volume.\
+\
+Note: Frequency is not on a Hertz scale.
diff --git a/en/help/ah_beyondpod.md b/en/help/ah_beyondpod.md
new file mode 100644
index 0000000..fc9e11f
--- /dev/null
+++ b/en/help/ah_beyondpod.md
@@ -0,0 +1,5 @@
+### BeyondPod
+
+Info:\
+\
+http://beyondpod.mobi
diff --git a/en/help/ah_block_phonecalls.md b/en/help/ah_block_phonecalls.md
new file mode 100644
index 0000000..79554f2
--- /dev/null
+++ b/en/help/ah_block_phonecalls.md
@@ -0,0 +1,21 @@
+### Call Block
+
+Block outgoing calls to the specified matched number(s).\
+\
+If no Number is specified, all calls will be blocked.\
+\
+If Info is checked, all diversions and blocks will be displayed after
+the action.\
+\
+To stop blocking, use Call Revert.\
+\
+Note: you can\'t block \*and\* divert a particular pattern.\
+\
+Matching occurs in the same way as for event contexts, see the Event
+Edit Activity help page.\
+\
+Examples:\
+\
+*0193\** - any number starting with **0193**\
+\
+*12345/56789* - either of the numbers **12345** or **56789**
diff --git a/en/help/ah_bluetooth_name.md b/en/help/ah_bluetooth_name.md
new file mode 100644
index 0000000..5cc4ad2
--- /dev/null
+++ b/en/help/ah_bluetooth_name.md
@@ -0,0 +1,4 @@
+### Bluetooth ID
+
+Sets the name of the local bluetooth device (the one seen by other
+devices).
diff --git a/en/help/ah_bluetooth_sco.md b/en/help/ah_bluetooth_sco.md
new file mode 100644
index 0000000..af150fd
--- /dev/null
+++ b/en/help/ah_bluetooth_sco.md
@@ -0,0 +1,6 @@
+### Bluetooth Voice
+
+Switch to or from using a Bluetooth headset for voice communications.\
+\
+Probably only works in-call, and may not be reflected visually by the
+Phone application.
diff --git a/en/help/ah_bluetooth_status.md b/en/help/ah_bluetooth_status.md
new file mode 100644
index 0000000..ba9c063
--- /dev/null
+++ b/en/help/ah_bluetooth_status.md
@@ -0,0 +1,8 @@
+### Bluetooth
+
+Whether the Bluetooth radio is enabled or disabled.\
+\
+This action is ignored when Airplane Mode is on.\
+\
+Note: when enabling, it will probably be some seconds before the
+Bluetooth service is actually usable.
diff --git a/en/help/ah_browse_files.md b/en/help/ah_browse_files.md
new file mode 100644
index 0000000..d54e441
--- /dev/null
+++ b/en/help/ah_browse_files.md
@@ -0,0 +1,12 @@
+### Browse Files
+
+Runs File Magic, the Tasker-integrated file manager available
+separately.\
+\
+If Dir is specified, the File Magic starts in that directory.\
+\
+If Match is specified, only files containing that sequence are shown
+(e.g. .jpg)\
+\
+If Show Hidden is selected, files starting with \'.\' are also shown
+(this option overrides File Magic\'s user preference).
diff --git a/en/help/ah_bt_voice_volume.md b/en/help/ah_bt_voice_volume.md
new file mode 100644
index 0000000..442a4fc
--- /dev/null
+++ b/en/help/ah_bt_voice_volume.md
@@ -0,0 +1,7 @@
+### BT Voice Volume
+
+In-call volume when using bluetooth.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
diff --git a/en/help/ah_button.md b/en/help/ah_button.md
new file mode 100644
index 0000000..febcb39
--- /dev/null
+++ b/en/help/ah_button.md
@@ -0,0 +1,8 @@
+### Button
+
+Simulate pressing of a hardware button.\
+\
+Only available on a rooted device.\
+\
+USB Debugging probably needs to be enabled in Android\'s Developer
+Settings.
diff --git a/en/help/ah_calendar_insert.md b/en/help/ah_calendar_insert.md
new file mode 100644
index 0000000..5929887
--- /dev/null
+++ b/en/help/ah_calendar_insert.md
@@ -0,0 +1,15 @@
+### Calendar Insert
+
+Insert an entry into the specified calendar.\
+\
+In / For: the number of minutes from now at which the calendar entry
+should start. Optionally, For how many minutes the calendar entry should
+last.\
+\
+The default for In / For is 0 / 0.\
+\
+Available: if not clicked, the calendar entry is marked as \'Busy\' (see
+Menu / Show Extra Options in the Calendar app).\
+\
+Tip: if you want to use variables with In / For, be sure to leave spaces
+otherwise the variables won\'t be recognized.
diff --git a/en/help/ah_call_log.md b/en/help/ah_call_log.md
new file mode 100644
index 0000000..9ba929b
--- /dev/null
+++ b/en/help/ah_call_log.md
@@ -0,0 +1,3 @@
+### Call Log
+
+Show the Call Log tab of the standard Android contacts application.
diff --git a/en/help/ah_call_volume.md b/en/help/ah_call_volume.md
new file mode 100644
index 0000000..5ca0930
--- /dev/null
+++ b/en/help/ah_call_volume.md
@@ -0,0 +1,9 @@
+### In-Call Volume
+
+Volume level of speech during calls.\
+\
+Setting to 0 will make phone calls difficult.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
diff --git a/en/help/ah_cancel_alarm.md b/en/help/ah_cancel_alarm.md
new file mode 100644
index 0000000..cfb9066
--- /dev/null
+++ b/en/help/ah_cancel_alarm.md
@@ -0,0 +1,14 @@
+### Cancel Alarm
+
+Cancel a currently active or future system alarm.\
+\
+If there are two or more matching alarms, or on some devices always,
+Android will show a UI allowing the user to select the desired alarm.
+Therefore, for best results when automating, it\'s recommended to give
+each alarm a unique label and then use that for cancellation.\
+\
+If the specified alarm is a repeating alarm, then only the next instance
+is cancelled (the alarm remains enabled)\
+\
+Some modes are poorly implemented by many Android devices. For instance,
+snooze time may be ignored.
diff --git a/en/help/ah_cancel_notification.md b/en/help/ah_cancel_notification.md
new file mode 100644
index 0000000..f63dcfe
--- /dev/null
+++ b/en/help/ah_cancel_notification.md
@@ -0,0 +1,15 @@
+### Notify Cancel
+
+Cancel a notification (created by Tasker) currently in the System
+Notification bar.\
+\
+Title is the title of the notification to cancel. If Title is not
+specified, all notifications will be cancelled (including \'permanent\')
+ones.\
+\
+If more than one notification with the specified Title is currently
+being displayed, only the last one displayed will be cancelled, the
+otherwise will need to be cancelled manually.\
+\
+Warn Not Exist: if set, a warning will be flashed if there is no
+matching notification.
diff --git a/en/help/ah_car_mode.md b/en/help/ah_car_mode.md
new file mode 100644
index 0000000..5f93e28
--- /dev/null
+++ b/en/help/ah_car_mode.md
@@ -0,0 +1,8 @@
+### Car Mode
+
+Enable or disable Android\'s Car Mode.\
+\
+If Go Home is checked, the relevant home screen will be launched
+dependent on whether Car Mode is being entered or exited.\
+\
+Requires Android 2.2+
diff --git a/en/help/ah_change_icon_set.md b/en/help/ah_change_icon_set.md
new file mode 100644
index 0000000..736749d
--- /dev/null
+++ b/en/help/ah_change_icon_set.md
@@ -0,0 +1,15 @@
+### Change Icon Set
+
+Change Widget Task icons in the home screen.\
+\
+Only Widgets that have a downloaded icon can have it switched to a new
+set.\
+\
+The New field specifies the new icon set.\
+\
+If no Old set is specified, all icons are changed to the New set,
+otherwise only icons that currently have an icon of the Old set are
+changed.\
+\
+Warning: for Tasker icon sets, each icon is guaranteed to exist in each
+set. For user-installed icons, that may not be the case.
diff --git a/en/help/ah_change_widget_icon.md b/en/help/ah_change_widget_icon.md
new file mode 100644
index 0000000..ebd4f01
--- /dev/null
+++ b/en/help/ah_change_widget_icon.md
@@ -0,0 +1,9 @@
+### Set Widget Icon
+
+Change the label of the specified (existing) Task Widget on the home
+screen.\
+\
+Name is the name of the Task which the widget performs (which appears on
+the homescreen, unless a label has been set with Set Widget Label.\
+\
+Icon is the new icon to set.
diff --git a/en/help/ah_change_widget_text.md b/en/help/ah_change_widget_text.md
new file mode 100644
index 0000000..d8e5a60
--- /dev/null
+++ b/en/help/ah_change_widget_text.md
@@ -0,0 +1,12 @@
+### Set Widget Label
+
+Change the icon of the specified (existing) Task Widget on the home
+screen.\
+\
+Name is the name of the Task which the widget performs (set when it was
+initially created and initially used as the label).\
+\
+Label is the new home screen label for the widget.\
+\
+Note: if you want to change the label several times, you refer to the
+\*original\* Task name each time, which does not change.
diff --git a/en/help/ah_clear_passphrase.md b/en/help/ah_clear_passphrase.md
new file mode 100644
index 0000000..75d93cd
--- /dev/null
+++ b/en/help/ah_clear_passphrase.md
@@ -0,0 +1,6 @@
+### Clear Key
+
+Clear an encryption key. Next time you try to encrypt or decrypt with
+that key, you will be asked for the passphrase.\
+\
+See *Encryption* in the Userguide for details.
diff --git a/en/help/ah_clear_variable.md b/en/help/ah_clear_variable.md
new file mode 100644
index 0000000..894025e
--- /dev/null
+++ b/en/help/ah_clear_variable.md
@@ -0,0 +1,8 @@
+### Variable Clear
+
+Remove the stored value for the user-variable Name.\
+\
+If no Name is specified, all user-variables are cleared.\
+\
+If Pattern Matching is specified, all variables which match the pattern
+are cleared (see Pattern Matching in the Userguide).
diff --git a/en/help/ah_close_system_dialogs.md b/en/help/ah_close_system_dialogs.md
new file mode 100644
index 0000000..22d9396
--- /dev/null
+++ b/en/help/ah_close_system_dialogs.md
@@ -0,0 +1,6 @@
+### Close System Dialogs
+
+Close (some of the) system dialogs like Recent Apps or the
+Long-Home-Key-Press dialog.\
+\
+Tip: you can detect some such dialogs opening with the New Window event.
diff --git a/en/help/ah_contacts.md b/en/help/ah_contacts.md
new file mode 100644
index 0000000..f62370e
--- /dev/null
+++ b/en/help/ah_contacts.md
@@ -0,0 +1,7 @@
+### Contacts
+
+Show a selected list of contacts from the standard Android contacts
+application.\
+\
+Note: to show all contacts, you can use the Apps/Load App action and
+select the Contacts application.
diff --git a/en/help/ah_convert_variable.md b/en/help/ah_convert_variable.md
new file mode 100644
index 0000000..b2cda31
--- /dev/null
+++ b/en/help/ah_convert_variable.md
@@ -0,0 +1,23 @@
+### Variable Convert
+
+Convert the specified variable\'s value from one unit to another.\
+\
+If a variable is specified for Store Result In, the new value is stored
+there and the original variable will not be changed.\
+\
+If the conversion fails, no values will be unchanged.\
+\
+Notes on particular conversions:\
+\
+Date Time to Seconds\
+\* date and time must be separated by whitespace e.g. 20110304 11.32\
+\* date can be in YYYYMMDD format or xx-yy-zz, in which case the
+positions of day, month and year are determined by Android preferences\
+\* if time is ommitted it is assumed to be 00:00\
+\* time must be in 24hr format\
+\* individual components of date and time can also be separated by a
+colon, slash etc.\
+\
+Bytes\
+\*Megabyte and Gigabyte conversions are human-readable rather than
+precise.
diff --git a/en/help/ah_copy_dir.md b/en/help/ah_copy_dir.md
new file mode 100644
index 0000000..7288831
--- /dev/null
+++ b/en/help/ah_copy_dir.md
@@ -0,0 +1,6 @@
+### Copy Dir
+
+Recursively copy a directory to a new one.\
+\
+If To specifies an existing directory, the copy will be placed
+**inside** it, otherwise the copy will have that name.
diff --git a/en/help/ah_copy_file.md b/en/help/ah_copy_file.md
new file mode 100644
index 0000000..1528d57
--- /dev/null
+++ b/en/help/ah_copy_file.md
@@ -0,0 +1,10 @@
+### Copy File
+
+Copy an SD card file to a new directory.\
+\
+If To specifies an existing file, it will be overwritten.\
+\
+The paths start in the root directory of the SD card.\
+\
+Root users: note that the \"Mount namespace separation\" option of
+SuperSu can cause problems.
diff --git a/en/help/ah_create_scene.md b/en/help/ah_create_scene.md
new file mode 100644
index 0000000..7f9c06c
--- /dev/null
+++ b/en/help/ah_create_scene.md
@@ -0,0 +1,8 @@
+### Create Scene
+
+Create a scene without displaying it.\
+\
+This might be useful if needs to be prepared in some way before
+displaying.\
+\
+See also: Scenes in the Userguide.
diff --git a/en/help/ah_crop_image.md b/en/help/ah_crop_image.md
new file mode 100644
index 0000000..21f8890
--- /dev/null
+++ b/en/help/ah_crop_image.md
@@ -0,0 +1,8 @@
+### Crop Image
+
+Crop the image currently in the image store.\
+\
+The parameters specify what percentage of the image to remove from each
+side of the image.\
+\
+See also: Load Image.
diff --git a/en/help/ah_dailyroads.md b/en/help/ah_dailyroads.md
new file mode 100644
index 0000000..524c97f
--- /dev/null
+++ b/en/help/ah_dailyroads.md
@@ -0,0 +1,5 @@
+### DailyRoads Voyager
+
+Info:\
+\
+http://www.dailyroads.com/voyager.php
diff --git a/en/help/ah_data_backup.md b/en/help/ah_data_backup.md
new file mode 100644
index 0000000..ac7b57d
--- /dev/null
+++ b/en/help/ah_data_backup.md
@@ -0,0 +1,29 @@
+### Data Backup
+
+Backup your Tasker data to a local file and optionally to Google Drive.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Path
+:::
+
+::: {.text}
+Path to a local xml file to store your backup in.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Google Drive Account
+:::
+
+::: {.text}
+If you set this account, a file with the same name as the local file
+above will be created in your backup folder on Google Drive.
+:::
+:::
+:::
+
+**Note**: For security reasons this action can\'t be used on App Factory
+generated apps.
diff --git a/en/help/ah_data_sms.md b/en/help/ah_data_sms.md
new file mode 100644
index 0000000..f8b9576
--- /dev/null
+++ b/en/help/ah_data_sms.md
@@ -0,0 +1,12 @@
+### Send Data SMS
+
+Send a binary data SMS without user interaction. The maximum length is
+133 bytes.\
+\
+Multiple numbers can be specified by comma-separating them.\
+\
+The Data field must consist of a Base 64 encoded string.\
+\
+A Tasker variable contents can be encoded to Base 64 with the Variable
+Convert action, or binary data loaded from a file with the File / Read
+Binary action.
diff --git a/en/help/ah_dec_variable.md b/en/help/ah_dec_variable.md
new file mode 100644
index 0000000..8f03684
--- /dev/null
+++ b/en/help/ah_dec_variable.md
@@ -0,0 +1,19 @@
+### Variable Subtract
+
+Decrease the value of the variable Name.\
+\
+The value is decreased by the integer By.\
+\
+If the variable does not contain a numeric value (e.g. 3) this action
+has no effect and a warning will be flashed.\
+\
+If the variable does not exist, it will first be created with a value of
+0.\
+\
+If the Wrap Around parameter is set and the result is below zero, it
+will wrap back to the Wrap Around value.\
+\
+See the section on Conditions and Loops in the Userguide for more
+information.\
+\
+Use action Variable Set for non-integer subtraction.
diff --git a/en/help/ah_decrypt_file.md b/en/help/ah_decrypt_file.md
new file mode 100644
index 0000000..449e60c
--- /dev/null
+++ b/en/help/ah_decrypt_file.md
@@ -0,0 +1,17 @@
+### Decrypt File
+
+Decrypt the specified SD card file which was previously encrypted with
+Tasker\'s *Encrypt File* action.\
+\
+The path starts in the root directory of the SD card e.g. secret.txt,
+secret/recording.mp3.\
+\
+Key Name is the name of the encryption key to use.\
+\
+The key is not deleted unless Clear Key is set, since you will usually
+want to use the same key to encrypt the file again at some point.\
+\
+There must be space left on the SD card at least equal to the size of
+the file before starting decryption.\
+\
+See *Encryption* in the Userguide for details.
diff --git a/en/help/ah_delete_dir.md b/en/help/ah_delete_dir.md
new file mode 100644
index 0000000..0ee6796
--- /dev/null
+++ b/en/help/ah_delete_dir.md
@@ -0,0 +1,9 @@
+### Delete Directory
+
+Delete an SD card directory.\
+\
+The path starts in the root directory of the SD card.\
+\
+If it is not empty, it will not be deleted unless you specify Recurse.
+\*Warning\*: you can delete the whole SD card contents if you are not
+careful with this option.
diff --git a/en/help/ah_delete_file.md b/en/help/ah_delete_file.md
new file mode 100644
index 0000000..c4a267e
--- /dev/null
+++ b/en/help/ah_delete_file.md
@@ -0,0 +1,15 @@
+### Delete File
+
+Delete an SD card file.\
+\
+The path starts in the root directory of the SD card.\
+\
+If Shred Level is more than 0, the contents of the file are overwritten
+with random bytes the specified number of times before it is deleted.\
+\
+The intention is to make it (much) harder to recover the contents than
+if the file was simply deleted.\
+\
+Security note: shredding will only provide basic protection on
+\'journalling\' filesystems, but most external storage uses FAT32 at the
+time of writing.
diff --git a/en/help/ah_deprecated.md b/en/help/ah_deprecated.md
new file mode 100644
index 0000000..f949f0a
--- /dev/null
+++ b/en/help/ah_deprecated.md
@@ -0,0 +1,3 @@
+### Deprecated
+
+Please see Menu / Info / Release Notes for more information.
diff --git a/en/help/ah_destroy_scene.md b/en/help/ah_destroy_scene.md
new file mode 100644
index 0000000..6a78388
--- /dev/null
+++ b/en/help/ah_destroy_scene.md
@@ -0,0 +1,3 @@
+### Destroy Scene
+
+Destroy a previously created scene, hiding it first if necessary.
diff --git a/en/help/ah_dialog_battery_info_settings.md b/en/help/ah_dialog_battery_info_settings.md
new file mode 100644
index 0000000..49d381b
--- /dev/null
+++ b/en/help/ah_dialog_battery_info_settings.md
@@ -0,0 +1,3 @@
+### Battery Info
+
+This setting screen is not supported by Samsung ROMs
diff --git a/en/help/ah_disable_tasker.md b/en/help/ah_disable_tasker.md
new file mode 100644
index 0000000..37cd622
--- /dev/null
+++ b/en/help/ah_disable_tasker.md
@@ -0,0 +1,12 @@
+### Disable
+
+Turn off Tasker's monitor and stop servicing Perform Task actions.\
+\
+Perform Task will fail with the message \"Tasker is disabled\" until
+three-dots/Enable Tasker is selected from the Profiles, Tasks, Scenes,
+or Vars screen.
+
+Disabling the Tasker monitor is sometimes required in Kids created in
+Tasker App Factory to remove them from background processing. If the
+Disable action is executed in a Kid the Kid can then be run again
+without reenabling Tasker's monitor.
diff --git a/en/help/ah_display_density.md b/en/help/ah_display_density.md
new file mode 100644
index 0000000..cb31ba7
--- /dev/null
+++ b/en/help/ah_display_density.md
@@ -0,0 +1,3 @@
+### Display Size
+
+Makes items on your screen appear smaller or larger
diff --git a/en/help/ah_divert_phonecalls.md b/en/help/ah_divert_phonecalls.md
new file mode 100644
index 0000000..7c8ecc5
--- /dev/null
+++ b/en/help/ah_divert_phonecalls.md
@@ -0,0 +1,17 @@
+### Call Divert
+
+Divert outgoing calls from the specified number (pattern), to the
+specified (full) phone number.\
+\
+From: the number (pattern) to divert. If any part of the outgoing number
+matches From the diversion will take place. If no From is specified, all
+calls will be diverted.\
+\
+To: the number which will be called instead.\
+\
+If Info is checked, all diversions and blocks will be displayed after
+the action.\
+\
+To stop diverting, use Call Revert.\
+\
+Note: you can\'t block \*and\* divert a particular pattern.
diff --git a/en/help/ah_dpad.md b/en/help/ah_dpad.md
new file mode 100644
index 0000000..4fe43ee
--- /dev/null
+++ b/en/help/ah_dpad.md
@@ -0,0 +1,9 @@
+### Dpad
+
+Simulate use of the Dpad or trackball. Useful for moving around and
+clicking controls in an application.\
+\
+Only available on a rooted device.\
+\
+USB Debugging probably needs to be enabled in Android\'s Developer
+Settings.
diff --git a/en/help/ah_dtmf_volume.md b/en/help/ah_dtmf_volume.md
new file mode 100644
index 0000000..37983ea
--- /dev/null
+++ b/en/help/ah_dtmf_volume.md
@@ -0,0 +1,7 @@
+### DTMF Volume
+
+The function is a bit of a mystery\...\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
diff --git a/en/help/ah_duetoday.md b/en/help/ah_duetoday.md
new file mode 100644
index 0000000..29d9b17
--- /dev/null
+++ b/en/help/ah_duetoday.md
@@ -0,0 +1,5 @@
+### Due Today
+
+Info:\
+\
+http://www.lakeridgesoftware.com/products/android/DueToday/
diff --git a/en/help/ah_dump_grant.md b/en/help/ah_dump_grant.md
new file mode 100644
index 0000000..6b3f048
--- /dev/null
+++ b/en/help/ah_dump_grant.md
@@ -0,0 +1,38 @@
+#### [Check running services]{.name} Permission
+
+To use this, Tasker needs to be granted permission to [check what
+services are running]{.name} on your device
+
+1. **Enable Developer Mode**: Go to Android Settings -\> About Phone
+ and look for the **Build Number** option. Touch it multiple times
+ until developer mode is enabled.
+2. **Enable USB Debugging**: Go to Android Settings -\> and look for
+ the **Developer Options** option. In there, enable the **USB
+ debugging** option.
+3. **Install ADB on your PC**: Check
+ [here](https://www.xda-developers.com/google-releases-separate-adb-and-fastboot-binary-downloads/)
+ for a quick way to do it.
+4. **Connect device to PC**: Connect your device to a PC and look on
+ your phone. A prompt should show up asking you to allow your phone
+ to be debugged by your PC. Accept this.
+5. Open the command prompt from the file folder that contains the
+ extracted downloads. To do this, press the windows key and type
+ **cmd**. When the prompt opens, type **cd** followed by folder your
+ downloaded ADB to.
+6. **Grant permission**: Open a command line a on your PC and write
+
+ ``` {.small}
+ adb shell pm grant net.dinglisch.android.taskerm android.permission.DUMP
+ ```
+
+ If you\'re on a mac write
+
+ ``` {.small}
+ ./adb shell pm grant net.dinglisch.android.taskerm android.permission.DUMP
+ ```
+
+#### Notes:
+
+- On MIUI devices you may have to open developer options and enable
+ the **USB debugging (Security Settings)** setting to be able to run
+ the above command.
diff --git a/en/help/ah_edit_scene.md b/en/help/ah_edit_scene.md
new file mode 100644
index 0000000..8b6f73e
--- /dev/null
+++ b/en/help/ah_edit_scene.md
@@ -0,0 +1,7 @@
+### Edit Scene
+
+Open the Scene Edit screen in the Tasker UI to edit the named scene.
+Optionally, the specified element will be edited immediately.\
+\
+This action will fail if the Tasker UI is already open or the given
+scene is normally locked in the UI.
diff --git a/en/help/ah_edit_task.md b/en/help/ah_edit_task.md
new file mode 100644
index 0000000..4801fdb
--- /dev/null
+++ b/en/help/ah_edit_task.md
@@ -0,0 +1,8 @@
+### Edit Task
+
+Open the Task Edit screen in the Tasker UI to edit the named task.
+Optionally, the specified action (being a number, partial label, action
+name or parameter match) will be edited immediately.\
+\
+This action will fail if the Tasker UI is already open or the given task
+is normally locked in the UI.
diff --git a/en/help/ah_else.md b/en/help/ah_else.md
new file mode 100644
index 0000000..123a684
--- /dev/null
+++ b/en/help/ah_else.md
@@ -0,0 +1,6 @@
+### Else
+
+Used after an If action to specify actions which should take place if
+the If condition didn\'t match.\
+\
+See Flow Control in the Userguide for more info.
diff --git a/en/help/ah_email_compose.md b/en/help/ah_email_compose.md
new file mode 100644
index 0000000..42562fe
--- /dev/null
+++ b/en/help/ah_email_compose.md
@@ -0,0 +1,6 @@
+### Compose Email
+
+Launch an application to compose an email from optional predefined
+elements.\
+\
+Recipient(s) is a comma-separated list of receivers of the email.
diff --git a/en/help/ah_encrypt_file.md b/en/help/ah_encrypt_file.md
new file mode 100644
index 0000000..c9fe968
--- /dev/null
+++ b/en/help/ah_encrypt_file.md
@@ -0,0 +1,19 @@
+### Encrypt File
+
+Encrypt the specified SD card file.\
+\
+The path starts in the root directory of the SD card e.g. secret.txt,
+secret/recording.mp3\
+\
+Key Name is the name of the encryption key to use.\
+\
+Usually the key is deleted after encryption, set Leave Key if you have
+more files to encrypt.\
+\
+There must be space left on the SD card at least equal to the size of
+the file before starting encryption.\
+\
+See *Encryption* in the Userguide for details.\
+\
+You can also access Tasker\'s encryption features via File Magic, a
+Tasker-integrated file manager.
diff --git a/en/help/ah_enter_passphrase.md b/en/help/ah_enter_passphrase.md
new file mode 100644
index 0000000..79da646
--- /dev/null
+++ b/en/help/ah_enter_passphrase.md
@@ -0,0 +1,8 @@
+### Enter Key
+
+Enter an encryption key in preparation for encrypting at a later time.\
+\
+If Confirm is set, the key will be requested twice in order to be sure
+it was entered correctly.\
+\
+See *Encryption* in the Userguide for details.
diff --git a/en/help/ah_filter_image.md b/en/help/ah_filter_image.md
new file mode 100644
index 0000000..67f6883
--- /dev/null
+++ b/en/help/ah_filter_image.md
@@ -0,0 +1,5 @@
+### Filter Image
+
+Apply a filter to the image currently in the image store.\
+\
+See also: Load Image.
diff --git a/en/help/ah_flash.md b/en/help/ah_flash.md
new file mode 100644
index 0000000..1dc60ed
--- /dev/null
+++ b/en/help/ah_flash.md
@@ -0,0 +1,11 @@
+### Flash
+
+Flash a message up.\
+\
+If Long is selected, the message will flash up for longer.\
+\
+A Flash is less intrusive than a popup: it is still possible to interact
+with the application below while the message is showing.\
+\
+On some devices, disabling Notifications for Tasker in Android settings
+will also prevent flash messages.
diff --git a/en/help/ah_flip_image.md b/en/help/ah_flip_image.md
new file mode 100644
index 0000000..b5dd034
--- /dev/null
+++ b/en/help/ah_flip_image.md
@@ -0,0 +1,5 @@
+### Flip Image
+
+Flip the image currently in the image store.\
+\
+See also: Load Image.
diff --git a/en/help/ah_for.md b/en/help/ah_for.md
new file mode 100644
index 0000000..8a2154b
--- /dev/null
+++ b/en/help/ah_for.md
@@ -0,0 +1,18 @@
+### For
+
+Do a set of actions to process each of a set of values.\
+\
+Values is a comma-separated list of items to iterate through\
+\
+A For loop should be ended with a matching End For action (if one is not
+present, one is automatically added to the end of the task)\
+\
+Example Items:\
+\
+apple, 0, 2:4, 3:9:3, %ARR(1:2), pear\
+\
+This would set Variable one at a time to:\
+\
+apple, 0, 2, 3, 4, 3, 6, 9, %ARR1, %ARR2, pear\
+\
+See Flow Control in the Userguide for more info.
diff --git a/en/help/ah_force_rotation.md b/en/help/ah_force_rotation.md
new file mode 100644
index 0000000..aaa2d52
--- /dev/null
+++ b/en/help/ah_force_rotation.md
@@ -0,0 +1,12 @@
+### Force Rotation
+
+Force your display\'s rotation independently of your device\'s
+orientation.
+
+#### Alternative Method
+
+If the action works for your needs without this option enabled, it\'s
+best to leave it off.
+
+Only enable the option if on some of your apps the rotation is not
+respected.
diff --git a/en/help/ah_gentlealarm.md b/en/help/ah_gentlealarm.md
new file mode 100644
index 0000000..4afd082
--- /dev/null
+++ b/en/help/ah_gentlealarm.md
@@ -0,0 +1,6 @@
+### Gentle Alarm
+
+Enable/Disable a Gentle Alarm alarm, or all alarms (Power) if no Name is
+specified.\
+\
+Requires v3.1.0+
diff --git a/en/help/ah_get_fix.md b/en/help/ah_get_fix.md
new file mode 100644
index 0000000..9546325
--- /dev/null
+++ b/en/help/ah_get_fix.md
@@ -0,0 +1,23 @@
+### Get Location
+
+Get a location fix.\
+\
+GPS: a value will be set when the accuracy stops improving. \'Use GPS
+Satellites\' must be enabled in Android Location Settings.\
+\
+Net: a value will returned upon the first fix.\'Use Wireless Networks\'
+must be enabled in Android Location Settings.\
+\
+Continue Task Immediately: move on to the next action in the task as
+soon as the fixing has started.\
+\
+Keep Tracking: don\'t stop tracking the location source(s) when a value
+is returned This will use more power but enables faster fixes after the
+first one. When using this option, tracking can be stopped by the action
+Stop Location or doing Get Location without the option checked.\
+\
+It will stop automatically if at any time no tasks are left to execute
+or the Get Location times out.\
+\
+Note: the fix data are stored in the relevant %LOC variables, see the
+Variables section of the userguide.
diff --git a/en/help/ah_get_voice.md b/en/help/ah_get_voice.md
new file mode 100644
index 0000000..c93ef1c
--- /dev/null
+++ b/en/help/ah_get_voice.md
@@ -0,0 +1,21 @@
+### Get Voice
+
+Use a speech recognizer to convert speech into text.\
+\
+A comma-separated list of results are stored in the variable %VOICE.
+It\'s possible there may be several results because of deficiencies in
+the speech-recognition or e.g. environmental noise. To get e.g. the
+first result, use the Variable Split action and then access %VOICE1.\
+\
+If the recognition fails or the specified Timeout is exceeded, %VOICE is
+cleared (detect this condition with the Is Set operator).\
+\
+Language Model is a hint to the speech-recognizer for fine-tuning the
+results.\
+\
+The default Android speech recognizer requires a network connection and
+therefore has a high-latency. Other recognizers are available e.g. on
+Play Store.\
+\
+Tip: it may be necessary to install the Google Search app in order to
+access this action on some devices.
diff --git a/en/help/ah_go_home.md b/en/help/ah_go_home.md
new file mode 100644
index 0000000..779926e
--- /dev/null
+++ b/en/help/ah_go_home.md
@@ -0,0 +1,12 @@
+### Go Home
+
+Go to the current system Home Screen.\
+\
+If the Page parameter is greater than 0, the home screen is requested to
+start on that page.\
+\
+Some of the supporting home screens are Holo Launcher, Launcher Pro,
+Nova Launcher and Car Dock Home (v3). If your Home Screen app doesn\'t
+support it, you could contact the developer and refer them to Tasker\'s
+developer page: tasker.dinglisch.net/developer.html for info on how to
+include it.
diff --git a/en/help/ah_google_drive_download.md b/en/help/ah_google_drive_download.md
new file mode 100644
index 0000000..d41d2c7
--- /dev/null
+++ b/en/help/ah_google_drive_download.md
@@ -0,0 +1,68 @@
+### Google Drive Download
+
+Get a file or folder from Google Drive for a given account.
+
+While the content is downloading, a notification will be shown with the
+progress.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Output Variables
+:::
+
+::: {.text}
+Array of local file paths corresponding to the files that were
+downloaded
+:::
+:::
+
+::: {.input}
+::: {.title}
+Account
+:::
+
+::: {.text}
+The account you want to download the files from
+:::
+:::
+
+::: {.input}
+::: {.title}
+Type: File Id
+:::
+
+::: {.text}
+Download a file by its ID. You can get the Id after you upload the file,
+or with a Google Drive List action (check the output variables)
+:::
+:::
+
+::: {.input}
+::: {.title}
+Type: Remote Path
+:::
+
+::: {.text}
+Download a file or folder by specifying its Google Drive path. If you
+only specify the **Remote Folder** field, a folder will be downloaded.
+If you also specify the **Remote File Name** field, only a single file
+will be downloaded.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Local Path
+:::
+
+::: {.text}
+Place to store the files/folders on local storage. If you are
+downloading a folder, then this path must be a folder. If you are
+downloading a file, this can be either a folder or file.
+:::
+:::
+:::
+
+**Note**: For security reasons this action can\'t be used on App Factory
+generated apps.
diff --git a/en/help/ah_google_drive_list.md b/en/help/ah_google_drive_list.md
new file mode 100644
index 0000000..b1c5629
--- /dev/null
+++ b/en/help/ah_google_drive_list.md
@@ -0,0 +1,54 @@
+### Google Drive List
+
+Get details about files and folders on your Google Drive.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Output Variables
+:::
+
+::: {.text}
+Arrays of details about your files and folders. Each position on each
+array corresponds to one item. For example, position **1** on
+**%gd\_id()** corresponds to position **1** on **%gd\_name**, etc.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Account
+:::
+
+::: {.text}
+The account you want to list the files from
+:::
+:::
+
+::: {.input}
+::: {.title}
+Type: Remote Folder
+:::
+
+::: {.text}
+List files inside a folder on your Google Drive
+:::
+:::
+
+::: {.input}
+::: {.title}
+Type: Query
+:::
+
+::: {.text}
+List the files using a custom query. For example, you can use **name
+contains \'My doc\'** to search for files that contain the words \'My
+doc\' in their name. Check
+[here](https://developers.google.com/drive/api/v3/search-parameters) for
+complete documentation.
+:::
+:::
+:::
+
+**Note**: For security reasons this action can\'t be used on App Factory
+generated apps.
diff --git a/en/help/ah_google_drive_sign_in.md b/en/help/ah_google_drive_sign_in.md
new file mode 100644
index 0000000..664b3eb
--- /dev/null
+++ b/en/help/ah_google_drive_sign_in.md
@@ -0,0 +1,15 @@
+### Google Drive Sign In
+
+Select an account to use with Google Drive.
+
+If the account hasn\'t give Tasker permission to access Google Drive
+yet, the appropriate permission screen will be shown.
+
+The **%gd\_account** variable will be created with the selected account.
+
+If **Full Access** is selected, Tasker will ask permission to access the
+user\'s full list of Google Drive files and folders. Otherwise only
+access to files and folders created by Tasker itself will be asked for.
+
+**Note**: For security reasons this action can\'t be used on App Factory
+generated apps.
diff --git a/en/help/ah_google_drive_trash.md b/en/help/ah_google_drive_trash.md
new file mode 100644
index 0000000..88d8c04
--- /dev/null
+++ b/en/help/ah_google_drive_trash.md
@@ -0,0 +1,52 @@
+### Google Drive Trash
+
+Put a file or folder from Google Drive into or out of Trash.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Output Variables
+:::
+
+::: {.text}
+Details about the trashed/untrashed file or folder
+:::
+:::
+
+::: {.input}
+::: {.title}
+Account
+:::
+
+::: {.text}
+The account you want to the files with
+:::
+:::
+
+::: {.input}
+::: {.title}
+Type: File Id
+:::
+
+::: {.text}
+Trash a file by its ID. You can get the Id after you upload the file, or
+with a Google Drive List action (check the output variables)
+:::
+:::
+
+::: {.input}
+::: {.title}
+Type: Remote Path
+:::
+
+::: {.text}
+Trash a file or folder by specifying its Google Drive path. If you only
+specify the **Remote Folder** field, a folder and its contents will be
+trashed. If you also specify the **Remote File Name** field, only a
+single file will be trashed.
+:::
+:::
+:::
+
+**Note**: For security reasons this action can\'t be used on App Factory
+generated apps.
diff --git a/en/help/ah_google_drive_upload_file.md b/en/help/ah_google_drive_upload_file.md
new file mode 100644
index 0000000..710949e
--- /dev/null
+++ b/en/help/ah_google_drive_upload_file.md
@@ -0,0 +1,103 @@
+### Google Drive Upload
+
+Send a file or folder to Google Drive for a given account. If uploading
+a folder, all files in sub-folders will also be uploaded recursively.
+
+While the content is uploading, a notification will be shown with the
+progress.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Output Variables
+:::
+
+::: {.text}
+This action will generate several local variables related to the
+uploaded files/folder, including their web url. If uploading multiple
+files or folder, array variables will be generated.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Account
+:::
+
+::: {.text}
+The account you want to upload the file/folder to
+:::
+:::
+
+::: {.input}
+::: {.title}
+Data/File
+:::
+
+::: {.text}
+If it\'s a valid file/folder path, the file/folder will be uploaded. If
+not, the text you provide will uploaded as the file\'s content
+:::
+:::
+
+::: {.input}
+::: {.title}
+Remote Name
+:::
+
+::: {.text}
+The file name on Google Drive where you want to upload the content to.
+Ignored if uploading a folder. If not set, file name will be the same as
+the local file name.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Remote Folder
+:::
+
+::: {.text}
+Folder path on Google Drive. If left empty, file/folder will be uploaded
+to the root folder
+:::
+:::
+
+::: {.input}
+::: {.title}
+Content Description
+:::
+
+::: {.text}
+Description for the file that shows up on Google Drive. Will also be
+used in the progress notification\'s text
+:::
+:::
+
+::: {.input}
+::: {.title}
+Overwrite If Exists
+:::
+
+::: {.text}
+Will overwrite the Google Drive files if they already exists. If not
+enabled and a file with the same name exists, a file with the same name
+will be created, so you\'ll end up with multiple files with the exact
+same name.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Publicly Share File
+:::
+
+::: {.text}
+Will create a share link for the files and anyone with the link will be
+able to access it.
+:::
+:::
+:::
+
+**Note**: For security reasons this action can\'t be used on App Factory
+generated apps.
diff --git a/en/help/ah_goto.md b/en/help/ah_goto.md
new file mode 100644
index 0000000..559ed69
--- /dev/null
+++ b/en/help/ah_goto.md
@@ -0,0 +1,16 @@
+### Goto
+
+Go to a different place in the current task.\
+\
+Number: specify an action number to jump to.\
+\
+Label: specify an action label to jump to. This is almost always better
+than specifying a number.\
+\
+Top of Loop: jump to the first For action above the current action
+(\'continue\')\
+\
+End of Loop: jump to the action **after** the next End For action
+(\'break\')End of If: jump to the next End If action\
+\
+See the section on Flow Control in the Userguide for more info.
diff --git a/en/help/ah_gps_status.md b/en/help/ah_gps_status.md
new file mode 100644
index 0000000..a00e98f
--- /dev/null
+++ b/en/help/ah_gps_status.md
@@ -0,0 +1,3 @@
+### GPS
+
+Whether the GPS receiver is enabled or not.
diff --git a/en/help/ah_grab_media_button.md b/en/help/ah_grab_media_button.md
new file mode 100644
index 0000000..b8399cc
--- /dev/null
+++ b/en/help/ah_grab_media_button.md
@@ -0,0 +1,12 @@
+### Media Button Events
+
+After grabbing the Media Button via this action all presses will be sent
+to Tasker.\
+\
+It only makes sense to do this if you configure Tasker to do something
+with them (via state Media Button) or you want to block them from going
+to another app.\
+\
+Note: any app can grab the Media Button at any time, Tasker cannot
+\'keep hold\' of it. For example, the system media player seems to grab
+the button at the start of each track.
diff --git a/en/help/ah_gunzip_file.md b/en/help/ah_gunzip_file.md
new file mode 100644
index 0000000..eda3be3
--- /dev/null
+++ b/en/help/ah_gunzip_file.md
@@ -0,0 +1,7 @@
+### GUnzip
+
+Decompress the specified gzip archive file on the SD card.\
+\
+You do not need to add .gz on the end of the filename.\
+\
+Specify Delete Zip to delete the gzip file if the compression succeeds.
diff --git a/en/help/ah_gzip_file.md b/en/help/ah_gzip_file.md
new file mode 100644
index 0000000..31e1a5c
--- /dev/null
+++ b/en/help/ah_gzip_file.md
@@ -0,0 +1,7 @@
+### GZip
+
+Compress the specified file on the SD card to a gzip archive of the same
+name with a .gz extension.\
+\
+Specify Delete Orig to delete the original file if the compression
+succeeds.
diff --git a/en/help/ah_haptic_feedback.md b/en/help/ah_haptic_feedback.md
new file mode 100644
index 0000000..ffc00ce
--- /dev/null
+++ b/en/help/ah_haptic_feedback.md
@@ -0,0 +1,4 @@
+### Haptic Feedback
+
+Change the global system haptic feedback setting (found in Android Sound
+settings).
diff --git a/en/help/ah_hide_scene.md b/en/help/ah_hide_scene.md
new file mode 100644
index 0000000..8563c75
--- /dev/null
+++ b/en/help/ah_hide_scene.md
@@ -0,0 +1,11 @@
+### Hide Scene
+
+Hide a scene currently being displayed.\
+\
+The scene is **not** destroyed. If you are finished with the scene you
+should use Destroy Scene instead to release it\'s resources.\
+\
+Animation is only relevant for non-overlay scenes and when animations
+are enabled in Android settings.\
+\
+See also: Scenes in the Userguide.
diff --git a/en/help/ah_html_popup.md b/en/help/ah_html_popup.md
new file mode 100644
index 0000000..33d031d
--- /dev/null
+++ b/en/help/ah_html_popup.md
@@ -0,0 +1,6 @@
+### HTML Popup
+
+Show a popup with the content defined by the user in HTML.\
+\
+Most Tasker actions are available via JavaScript, see the JavaScript
+section of the Userguide.
diff --git a/en/help/ah_http_auth.md b/en/help/ah_http_auth.md
new file mode 100644
index 0000000..471bf14
--- /dev/null
+++ b/en/help/ah_http_auth.md
@@ -0,0 +1,85 @@
+### HTTP Auth
+
+Authenticate with a web service.
+
+#### OAuth 2.0
+
+Allows you to sign in a user and act on behalf of that user in a web
+service.
+
+For example, if you sign in as a user on the Spotify API and give it
+proper permissions, you can then add songs to the user\'s Spotify
+playlists.
+
+On most web services that use OAuth 2.0 you have to create an *app* on
+that service that you can then use to sign in the user.
+
+**Very important**: when creating the app on the web service make sure
+to set the **Redirect URI** to
+**https://tasker.joaoapps.com/auth.html**.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Client ID and Client Secret
+:::
+
+::: {.text}
+Given to you by the web service when you create an app on it
+:::
+:::
+
+::: {.input}
+::: {.title}
+Endpoint To Get Code
+:::
+
+::: {.text}
+A URL that is indicated in the web service documentation. Look for a URL
+in the docs that has the **response\_type=code** parameter and use just
+the base URL.
+:::
+
+::: {.text}
+For example, for Google web services that support OAuth 2.0 this URL is
+**https://accounts.google.com/o/oauth2/v2/auth** as you can see
+[here](https://developers.google.com/identity/protocols/OAuth2WebServer).
+:::
+:::
+
+::: {.input}
+::: {.title}
+Endpoint To Get Refresh Token
+:::
+
+::: {.text}
+Also an URL that is indicated in the web service documentation. Look for
+a URL in the docs that has the **grant\_type=refresh\_token** parameter
+in the request body.
+:::
+
+::: {.text}
+For example, for Google web services that support OAuth 2.0 this URL is
+**https://www.googleapis.com/oauth2/v4/token** as you can see
+[here](https://developers.google.com/identity/protocols/OAuth2WebServer).
+:::
+:::
+
+::: {.input}
+::: {.title}
+Scopes
+:::
+
+::: {.text}
+The will define the permissions that your app will request the user when
+acting on his/her behalf.
+:::
+
+::: {.text}
+For example, to [list a user\'s calendars in the Google Calendar
+API](https://developers.google.com/calendar/v3/reference/calendarList/list)
+you would need to use the
+**https://www.googleapis.com/auth/calendar.readonly** scope.
+:::
+:::
+:::
diff --git a/en/help/ah_http_get.md b/en/help/ah_http_get.md
new file mode 100644
index 0000000..abb7ea2
--- /dev/null
+++ b/en/help/ah_http_get.md
@@ -0,0 +1,35 @@
+### HTTP Get
+
+Send an HTTP GET request to a webserver.\
+\
+The response code is stored in %HTTPR. A response code of -1 indicates a
+problem making the request. Any returned data is stored in the variable
+%HTTPD if the content type is text-based (max 4K).\
+\
+Returned header fields are stored in the local variable array %header
+(%header1, %header2 etc)\
+\
+Example: running a script\
+\
+Server:Port: www.big.com \[no port specified, use port 80\]\
+Path: cgi-bin/palpable.pl\
+Attributes: \[must be separated by newlines, no spaces please\]\
+colour=pink\
+scent=rosy\
+Timeout: 30 \[read timeout after 30 seconds\]\
+Content-Type: \[if nothing specified, use server-specified value\]\
+File: results.html \[optional: store returned data in
+/sdcard/results.html\]\
+\
+Attribute keys and values are url-encoded automatically.\
+\
+Server:Port can be preceeded by a) https:// to require a secure, trusted
+connection b) a username:password@ to add a Basic Authorization header
+field to the request.\
+\
+The Cookies parameter is of the form:\
+\
+name1=valuu1;name2=value2\
+\
+Ignore SSL Anchor Errors: only for https connections, ignoring such
+errors leaves the connection open to man-in-the-middle attacks.
diff --git a/en/help/ah_http_head.md b/en/help/ah_http_head.md
new file mode 100644
index 0000000..858f51a
--- /dev/null
+++ b/en/help/ah_http_head.md
@@ -0,0 +1,4 @@
+### HTTP Head
+
+Identical to the HTTP Get action except the HEAD request method is used
+so no data is returned from the server.
diff --git a/en/help/ah_http_post.md b/en/help/ah_http_post.md
new file mode 100644
index 0000000..74b6166
--- /dev/null
+++ b/en/help/ah_http_post.md
@@ -0,0 +1,37 @@
+### HTTP Post
+
+Send an HTTP POST request to a webserver.\
+\
+The response code is stored in %HTTPR. A response code of -1 indicates a
+problem making the request. Any returned data is stored in the variable
+%HTTPD if the content type is text-based (max 4K).\
+\
+Returned header fields are stored in the local variable array %header
+(%header1, %header2 etc)\
+\
+Example: sending a script some data\
+\
+Server:Port www.small.com \[no port specified, use port 80\]\
+Path: cgi-bin/grinder.pl\
+Data:\
+name=Fred\
+hair=Blond\
+Timeout: 30 \[read timeout after 30 seconds\]\
+Content-Type: \[default is: x-www-form-urlencoded, if not specified
+server value is used\]\
+File: results.html \[optional: store returned data in
+/sdcard/results.html\]\
+\
+If Content-Type is x-www-form-urlencoded, the data must be formatted as
+in the example and the keys and values will be encoded automatically.\
+\
+Server:Port can be preceeded by a) https:// to require a secure, trusted
+connection b) username:password@ which will add a Basic Authorization
+header field to the request.\
+\
+The Cookies parameter is of the form:\
+\
+name1=valuu1;name2=value2\
+\
+Ignore SSL Anchor Errors: only for https connections, ignoring such
+errors leaves the connection open to man-in-the-middle attacks.
diff --git a/en/help/ah_if.md b/en/help/ah_if.md
new file mode 100644
index 0000000..d90d7c3
--- /dev/null
+++ b/en/help/ah_if.md
@@ -0,0 +1,7 @@
+### If
+
+If the action condition does not match, skip all actions until a
+matching Else or Endif is found or until the end of the task is
+reached.\
+\
+See Flow Control in the Userguide for more info.
diff --git a/en/help/ah_immersive_mode.md b/en/help/ah_immersive_mode.md
new file mode 100644
index 0000000..032cc99
--- /dev/null
+++ b/en/help/ah_immersive_mode.md
@@ -0,0 +1,8 @@
+### Immersive Mode
+
+Can hide
+
+- **Status Bar**: the bar above the Android UI, where the notification
+ icons reside
+- **Navigation Bar**: the bar below the Android UI, where the home,
+ back and recent apps buttons reside
diff --git a/en/help/ah_import_data.md b/en/help/ah_import_data.md
new file mode 100644
index 0000000..63d28a8
--- /dev/null
+++ b/en/help/ah_import_data.md
@@ -0,0 +1,13 @@
+### Import Data
+
+Dynamically load a task into the active configuration or replace the
+whole active configuration.\
+\
+Usually the data to be loaded is first read into a variable via the Read
+File action.\
+\
+When a new configuration is successfully loaded, the task (and all
+others) will be stopped and the monitor service also restarted.\
+\
+Tip: the action Variable Convert / To MD5 Sum, can be used to validate
+the loaded data after Read File.
diff --git a/en/help/ah_inc_variable.md b/en/help/ah_inc_variable.md
new file mode 100644
index 0000000..edefcd6
--- /dev/null
+++ b/en/help/ah_inc_variable.md
@@ -0,0 +1,20 @@
+### Variable Add
+
+Increase the value of the variable Name.\
+\
+The value is increased by the integer Value.\
+\
+If the variable does not contain a numeric value (e.g. 3) this action
+has no effect and a warning will be flashed.\
+\
+If the variable does not exist, it will first be created with a value of
+0.\
+\
+If a Wrap Around is not zero, then when the final result is equal to or
+greater than the Wrap Around value, it will wrap back to 0 e.g. with
+Wrap Around 5, 2 + 4 = 1.\
+\
+See the section on Conditions and Loops in the Userguide for more
+information.\
+\
+Use action Variable Set for non-integer addition.
diff --git a/en/help/ah_index.md b/en/help/ah_index.md
new file mode 100644
index 0000000..2f91a9a
--- /dev/null
+++ b/en/help/ah_index.md
@@ -0,0 +1,3008 @@
+---
+title: 'Tasker: Action A-Z'
+---
+
+### Tasker: Action A-Z
+
+#### APN Droid
+
+Enable or disable mobile data by changing APN data.\
+\
+This action requires that the application APNDroid is installed on your
+device.\
+\
+It apparently does \*not\* work for CDMA phones e.g. Motorola Droid, try
+the Mobile Data action instead.\
+\
+If you have trouble reconnecting after using this action, use the
+\'Reset to Default\' menu item in the APNs screen of Android Settings.\
+\
+Warning: APNDroid v2.5+: the Tasker action seems \*not\* to affect the
+new APNDroid data toggle. If you use Tasker with APNDroid 2.5+, it\'s
+recommended that you \*disable\* the \'Use system toggle\' option in
+system settings to prevent confusion.
+
+#### Airplane Mode
+
+Whether airplane mode is enabled (all wireless devices off) or enabled
+(each wireless device is enabled if it is individually enabled).\
+\
+See also: action Airplane Radios.
+
+#### Airplane Radios
+
+Specify which radios should be **disabled** when entering Airplane
+Mode.\
+\
+This can be useful for e.g. turning off the phone radio when it is not
+required; first set Airplane Radios to only Phone, then use the Airplane
+Mode action to enter Airplane Mode.\
+\
+Important: for some radios the setting may not take effect until the
+device has been restarted.\
+\
+See also: variable %AIRR.
+
+#### Alarm Volume
+
+Alarm volume level.\
+\
+Setting to 0 will mute alarms.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
+
+#### Anchor
+
+Provides a fixed, named point in a task.\
+\
+This is most useful as the top action in a loop with a Goto action at
+the end; it allows new actions to easily be inserted at the top of the
+loop (under the Anchor).
+
+#### Android Notifier
+
+Android Notifier is a service for contacting your desktop via your
+mobile phone.\
+\
+Info:\
+\
+http://code.google.com/p/android-notifier/
+
+#### Array Clear
+
+Remove all the elements of an array variable.
+
+#### Array Pop
+
+Remove an element from an array and shuffle all the higher array
+elements down to fill the gap.\
+If Position is higher than the last index in the array, the last element
+is removed.\
+\
+If To Var is set, the \'popped\' value is assigned to that variable.\
+\
+Note: a variable clear or set broadcast is only done for the specified
+array index.\
+\
+See Also: the Variables section of the Userguide.
+
+#### Array Process
+
+Perform an operation on the elements of an array as a group.\
+\
+Rotate shifts all the elements to left or right, and puts the end one
+back at the other side.\
+\
+Squash removes array indices for which no value is assigned e.g. if
+%var1=one and %var3=three, squash will result in %var1=one and
+%var2=three.\
+\
+The numeric sorts use the first number they find in each entry e.g. a3c,
+b5, 1x becomes 1x, a3c, b5.
+
+#### Array Push
+
+Add a new element to a variable array, pushing existing elements upwards
+to make space if necessary.\
+\
+If Position is higher than the last index in the array, the new element
+is added at the end of the array.\
+\
+If Fill Spaces is specified, higher elements will only be pushed up
+until a non-defined element is found (which will be filled).\
+\
+Note: a variable set broadcast is only done for the specified array
+element even if the action also causes changes in other elements.\
+\
+See Also: the Variables section of the Userguide.
+
+#### Array Set
+
+Set the values of an array from a preset list of Values.\
+\
+The values are split by Splitter, or whitespace if none is specified,
+and each value is then placed in a successive array index of the new
+array.\
+\
+If the array already existed, it is first cleared.\
+\
+See Also: action Variable Split.
+
+#### Astrid
+
+Info:\
+\
+http://weloveastrid.com
+
+#### Auto Brightness
+
+Enable or disable automatic screen brightness adjustment by the system
+(dependent on ambient light).\
+\
+Not available on all devices and OS versions.\
+\
+In some cases, though the setting is restored, the screen will not react
+until the settings screen is visited. It may be therefore useful to put
+Wait 500ms and Screen Brightness XXX actions in your exit task.
+
+#### Auto-Sync
+
+Whether auto-syncing of data is enabled.\
+\
+Note: the Android power manager widget does not update correctly after
+this action. Also: actual sync will only take place if the Android
+Background Data setting is enabled.
+
+#### BT Voice Volume
+
+In-call volume when using bluetooth.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
+
+#### Battery Info
+
+This setting screen is not supported by Samsung ROMs
+
+#### Beep
+
+Generate a fixed-frequency audio tone.\
+\
+Amplitude is the percentage of maximum amplitude. The system volume
+setting for the selected output stream will also affect the perceived
+volume.\
+\
+Note: Frequency is not on a Hertz scale.
+
+#### BeyondPod
+
+Info:\
+\
+http://beyondpod.mobi
+
+#### Bluetooth
+
+Whether the Bluetooth radio is enabled or disabled.\
+\
+This action is ignored when Airplane Mode is on.\
+\
+Note: when enabling, it will probably be some seconds before the
+Bluetooth service is actually usable.
+
+#### Bluetooth ID
+
+Sets the name of the local bluetooth device (the one seen by other
+devices).
+
+#### Bluetooth Voice
+
+Switch to or from using a Bluetooth headset for voice communications.\
+\
+Probably only works in-call, and may not be reflected visually by the
+Phone application.
+
+#### Browse Files
+
+Runs File Magic, the Tasker-integrated file manager available
+separately.\
+\
+If Dir is specified, the File Magic starts in that directory.\
+\
+If Match is specified, only files containing that sequence are shown
+(e.g. .jpg)\
+\
+If Show Hidden is selected, files starting with \'.\' are also shown
+(this option overrides File Magic\'s user preference).
+
+#### Browse URL
+
+Open the specified URL in the default browser.
+
+#### Button
+
+Simulate pressing of a hardware button.\
+\
+Only available on a rooted device.\
+\
+USB Debugging probably needs to be enabled in Android\'s Developer
+Settings.
+
+#### Calendar Insert
+
+Insert an entry into the specified calendar.\
+\
+In / For: the number of minutes from now at which the calendar entry
+should start. Optionally, For how many minutes the calendar entry should
+last.\
+\
+The default for In / For is 0 / 0.\
+\
+Available: if not clicked, the calendar entry is marked as \'Busy\' (see
+Menu / Show Extra Options in the Calendar app).\
+\
+Tip: if you want to use variables with In / For, be sure to leave spaces
+otherwise the variables won\'t be recognized.
+
+#### Call
+
+Bring up the dialer screen with the specified phone number filled in.\
+\
+Commas and Semi-Colons terminate the number currently, this is filed as
+an Android bug.
+
+#### Call Block
+
+Block outgoing calls to the specified matched number(s).\
+\
+If no Number is specified, all calls will be blocked.\
+\
+If Info is checked, all diversions and blocks will be displayed after
+the action.\
+\
+To stop blocking, use Call Revert.\
+\
+Note: you can\'t block \*and\* divert a particular pattern.\
+\
+Matching occurs in the same way as for event contexts, see the Event
+Edit Activity help page.\
+\
+Examples:\
+\
+*0193\** - any number starting with **0193**\
+\
+*12345/56789* - either of the numbers **12345** or **56789**
+
+#### Call Divert
+
+Divert outgoing calls from the specified number (pattern), to the
+specified (full) phone number.\
+\
+From: the number (pattern) to divert. If any part of the outgoing number
+matches From the diversion will take place. If no From is specified, all
+calls will be diverted.\
+\
+To: the number which will be called instead.\
+\
+If Info is checked, all diversions and blocks will be displayed after
+the action.\
+\
+To stop diverting, use Call Revert.\
+\
+Note: you can\'t block \*and\* divert a particular pattern.
+
+#### Call Log
+
+Show the Call Log tab of the standard Android contacts application.
+
+#### Call Revert
+
+Stop blocking or diverting calls to to the specified number.\
+\
+If no number is specified, all blocks and diversions will be cancelled.\
+\
+If Info is checked, all diversions and blocks will be displayed after
+the action.\
+\
+See also: Block Calls, Divert Calls
+
+#### Cancel Alarm
+
+Cancel a currently active or future system alarm.\
+\
+If there are two or more matching alarms, or on some devices always,
+Android will show a UI allowing the user to select the desired alarm.
+Therefore, for best results when automating, it\'s recommended to give
+each alarm a unique label and then use that for cancellation.\
+\
+If the specified alarm is a repeating alarm, then only the next instance
+is cancelled (the alarm remains enabled)\
+\
+Some modes are poorly implemented by many Android devices. For instance,
+snooze time may be ignored.
+
+#### Car Mode
+
+Enable or disable Android\'s Car Mode.\
+\
+If Go Home is checked, the relevant home screen will be launched
+dependent on whether Car Mode is being entered or exited.\
+\
+Requires Android 2.2+
+
+#### Change Icon Set
+
+Change Widget Task icons in the home screen.\
+\
+Only Widgets that have a downloaded icon can have it switched to a new
+set.\
+\
+The New field specifies the new icon set.\
+\
+If no Old set is specified, all icons are changed to the New set,
+otherwise only icons that currently have an icon of the Old set are
+changed.\
+\
+Warning: for Tasker icon sets, each icon is guaranteed to exist in each
+set. For user-installed icons, that may not be the case.
+
+#### Clear Key
+
+Clear an encryption key. Next time you try to encrypt or decrypt with
+that key, you will be asked for the passphrase.\
+\
+See *Encryption* in the Userguide for details.
+
+#### Close System Dialogs
+
+Close (some of the) system dialogs like Recent Apps or the
+Long-Home-Key-Press dialog.\
+\
+Tip: you can detect some such dialogs opening with the New Window event.
+
+#### Compose Email
+
+Launch an application to compose an email from optional predefined
+elements.\
+\
+Recipient(s) is a comma-separated list of receivers of the email.
+
+#### Compose MMS
+
+Launch an application to compose an MMS from optional predefined
+elements.
+
+#### Compose SMS
+
+Launch an application to compose an SMS from optional predefined
+elements.\
+\
+To send an SMS directly, see Send SMS.\
+\
+On Android 4.4+, only one of Recipient or Message can be specified.
+
+#### Contacts
+
+Show a selected list of contacts from the standard Android contacts
+application.\
+\
+Note: to show all contacts, you can use the Apps/Load App action and
+select the Contacts application.
+
+#### Copy Dir
+
+Recursively copy a directory to a new one.\
+\
+If To specifies an existing directory, the copy will be placed
+**inside** it, otherwise the copy will have that name.
+
+#### Copy File
+
+Copy an SD card file to a new directory.\
+\
+If To specifies an existing file, it will be overwritten.\
+\
+The paths start in the root directory of the SD card.\
+\
+Root users: note that the \"Mount namespace separation\" option of
+SuperSu can cause problems.
+
+#### Create Directory
+
+Create an SD card directory.\
+\
+If Create All is specified, all of the directories above the specified
+one will be created if necessary.\
+\
+The path starts in the root directory of the SD card.
+
+#### Create Scene
+
+Create a scene without displaying it.\
+\
+This might be useful if needs to be prepared in some way before
+displaying.\
+\
+See also: Scenes in the Userguide.
+
+#### Crop Image
+
+Crop the image currently in the image store.\
+\
+The parameters specify what percentage of the image to remove from each
+side of the image.\
+\
+See also: Load Image.
+
+#### [Data Backup](ah_data_backup.html)
+
+#### DTMF Volume
+
+The function is a bit of a mystery\...\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
+
+#### DailyRoads Voyager
+
+Info:\
+\
+http://www.dailyroads.com/voyager.php
+
+#### Decrypt File
+
+Decrypt the specified SD card file which was previously encrypted with
+Tasker\'s *Encrypt File* action.\
+\
+The path starts in the root directory of the SD card e.g. secret.txt,
+secret/recording.mp3.\
+\
+Key Name is the name of the encryption key to use.\
+\
+The key is not deleted unless Clear Key is set, since you will usually
+want to use the same key to encrypt the file again at some point.\
+\
+There must be space left on the SD card at least equal to the size of
+the file before starting decryption.\
+\
+See *Encryption* in the Userguide for details.
+
+#### Default Ringtone
+
+Sets the default ringtone for alarms, notifications or the ringer.\
+\
+Music files you place in /sdcard/media/ringtones/ will be included in
+the selection list for the Ringer ringtone, similarly for Notification
+and Alarm ringtones. You may have to create the folders first.\
+\
+An easier way to use SD card audio files as ringtones is to install a
+tone picker application e.g. Tone Picker.\
+\
+You can also just put the title of the track in the box if it matches
+the title of an audio track you have on SD.
+
+#### Delete Directory
+
+Delete an SD card directory.\
+\
+The path starts in the root directory of the SD card.\
+\
+If it is not empty, it will not be deleted unless you specify Recurse.
+\*Warning\*: you can delete the whole SD card contents if you are not
+careful with this option.
+
+#### Delete File
+
+Delete an SD card file.\
+\
+The path starts in the root directory of the SD card.\
+\
+If Shred Level is more than 0, the contents of the file are overwritten
+with random bytes the specified number of times before it is deleted.\
+\
+The intention is to make it (much) harder to recover the contents than
+if the file was simply deleted.\
+\
+Security note: shredding will only provide basic protection on
+\'journalling\' filesystems, but most external storage uses FAT32 at the
+time of writing.
+
+#### Deprecated
+
+Please see Menu / Info / Release Notes for more information.
+
+#### Destroy Scene
+
+Destroy a previously created scene, hiding it first if necessary.
+
+#### Disable
+
+Permanently turn off Tasker\'s monitor and stop running tasks.\
+\
+Tasker will not do anything further until enabled via the On/Off button
+in the Profile List screen.
+
+#### Display AutoRotate
+
+Whether rotating the device also rotates the screen (between portrait
+and landscape).
+
+#### Display Brightness
+
+Brightness setting of the screen (0-255).\
+\
+If the safeguard is enabled, levels less than 20 will be set to 20 to
+prevent accidental black screens.\
+\
+Ignore Current Level: if it looks like it\'s already at the required
+level, go ahead and set it again anyway.\
+\
+Immediate Effect: ensure the change takes effect immediately. If not
+selected, it may not take effect till Android registers the new value,
+which may require a display on-off.You may that find Immediate Effect
+disrupts some applications.\
+Immediate Effect is only needed on Android versions up till 4.4.\
+\
+If you have auto-brightness controls on your device, it\'s advisable to
+disable them before attempting to set the brightness manually. See
+system settings or Tasker action Auto-Brightness.
+
+#### Display Timeout
+
+The length of time with no user action before the screen powers off.\
+\
+Setting all sliders to the maximum value means \'Never\'.\
+\
+Note: this setting may be overruled by the Stay On action when the
+device is plugged into a power source.\
+\
+Note: if you go to Android settings after running this action, Android
+will change the value to one it \'knows about\' e.g. if you have set it
+to 9 minutes, Android Settings may change it to 10 minutes.\
+Some have reported the same thing occuring after a reboot.
+
+#### Dpad
+
+Simulate use of the Dpad or trackball. Useful for moving around and
+clicking controls in an application.\
+\
+Only available on a rooted device.\
+\
+USB Debugging probably needs to be enabled in Android\'s Developer
+Settings.
+
+#### Due Today
+
+Info:\
+\
+http://www.lakeridgesoftware.com/products/android/DueToday/
+
+#### Edit Scene
+
+Open the Scene Edit screen in the Tasker UI to edit the named scene.
+Optionally, the specified element will be edited immediately.\
+\
+This action will fail if the Tasker UI is already open or the given
+scene is normally locked in the UI.
+
+#### Edit Task
+
+Open the Task Edit screen in the Tasker UI to edit the named task.
+Optionally, the specified action (being a number, partial label, action
+name or parameter match) will be edited immediately.\
+\
+This action will fail if the Tasker UI is already open or the given task
+is normally locked in the UI.
+
+#### Element Add GeoMarker
+
+Add a marker to a scene Map element.\
+\
+Spot Radius specifies the size of circle to place at the base of the
+market.\
+\
+The scene must have been created first.\
+\
+See also: Element Delete GeoMarker.
+
+#### Element Back Colour
+
+Set the background colour(s) of a scene element.\
+\
+Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\
+\
+End Colour is only relevant if the element\'s background has a Shader
+specified.\
+\
+The scene must have been created first.
+
+#### Element Border
+
+Set the width and colour of an element\'s border.\
+\
+Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\
+\
+The scene must have been created first.
+
+#### Element Create
+
+Create a new scene element dynamically and add it to an existing
+(created) scene.\
+\
+If you wish to animate the appearance of the element, deselect the
+Visible parameter and use the Element Visibility action afterwards.\
+\
+Note: unfortunately it\'s not yet possible to link event tasks to
+dynamically-created elements.
+
+#### Element Delete GeoMarker
+
+Delete a marker from a scene Map element.\
+\
+The scene must have been created first.\
+\
+See also: Element Add GeoMarker.
+
+#### Element Depth
+
+Set the depth of the specified element in the scene relative to all the
+other elements.
+
+#### Element Destroy
+
+Dynamically destroy and remove an element from an existing (created)
+scene.\
+\
+The element need not necessarily have been dynamically created.
+
+#### Element Focus
+
+Give input focus to, or remove input focus from, the specified element.
+
+#### Element Image
+
+Set the image of an Image scene element or the icon of a Button or
+Slider element.\
+\
+The scene must have been created first.
+
+#### Element Map Control
+
+Manipulate a Map scene element e.g. to zoom in or out\
+\
+The scene must have been created first.\
+\
+Note: Enable Compass: the compass is only shown when the map is tilted
+or rotated.
+
+#### Element Position
+
+Move a scene element within it\'s scene.\
+\
+The scene must have been created first.
+
+#### Element Size
+
+Change the size of an element.\
+\
+The scene must have been created first.
+
+#### Element Text
+
+Set the text of a scene element.\
+\
+Applies to Button, Text and TextEdit elements only.\
+\
+The scene must have been created first.\
+\
+For TextEdit elements, the parameter Selection specifies a part of the
+text to select after it has been set.\
+The specification is either a range (e.g. 1:4 for characters 1 to 4
+inclusive, or 3: to select everything from character 3 onwards) or a
+simple match e.g. v\*e to select everything between a v and an e. Use :
+or \* to select the whole text.
+
+#### Element Text Colour
+
+Set the text colour of a scene element\
+\
+Applies only to Button, Text and TextEdit elements.\
+\
+The scene must have been created first.
+
+#### Element Value
+
+Set the value of a scene element.\
+\
+Applies only to CheckBox, Number Picker, Slider, Spinner and Toggle
+elements.\
+\
+For a CheckBox, value should be 0 (off) or 1 (on).\
+\
+For a Spinner, the value is the index of the item to set.\
+\
+The scene must have been created first.\
+\
+The action can only trigger a possible event associated with the element
+value if the scene is currently showing.\
+\
+To set the value of a Text, EditText or Button element, use the Element
+Text action.
+
+#### Element Video Control
+
+Manipulate a Video element in a scene.\
+\
+Not all actions are possible at all times. For instance, Play is not
+possible until the video has loaded.\
+\
+Tip: to simplify a manual load-and-start-video, specify in the element a
+variable as the source of the video and check Start Automatically. Then
+instead of using a Video Control action with Load Source, just set the
+variable.
+
+#### Element Visibility
+
+Hide or show a scene element.\
+\
+The scene must have been created first.
+
+#### Element Web Control
+
+Manipulate a WebView scene element e.g. to page up or down\
+\
+This action will not work until the scene has ben **displayed** at least
+once.
+
+#### Else
+
+Used after an If action to specify actions which should take place if
+the If condition didn\'t match.\
+\
+See Flow Control in the Userguide for more info.
+
+#### Encrypt File
+
+Encrypt the specified SD card file.\
+\
+The path starts in the root directory of the SD card e.g. secret.txt,
+secret/recording.mp3\
+\
+Key Name is the name of the encryption key to use.\
+\
+Usually the key is deleted after encryption, set Leave Key if you have
+more files to encrypt.\
+\
+There must be space left on the SD card at least equal to the size of
+the file before starting encryption.\
+\
+See *Encryption* in the Userguide for details.\
+\
+You can also access Tasker\'s encryption features via File Magic, a
+Tasker-integrated file manager.
+
+#### Enter Key
+
+Enter an encryption key in preparation for encrypting at a later time.\
+\
+If Confirm is set, the key will be requested twice in order to be sure
+it was entered correctly.\
+\
+See *Encryption* in the Userguide for details.
+
+#### Filter Image
+
+Apply a filter to the image currently in the image store.\
+\
+See also: Load Image.
+
+#### Flash
+
+Flash a message up.\
+\
+If Long is selected, the message will flash up for longer.\
+\
+A Flash is less intrusive than a popup: it is still possible to interact
+with the application below while the message is showing.\
+\
+On some devices, disabling Notifications for Tasker in Android settings
+will also prevent flash messages.
+
+#### Flip Image
+
+Flip the image currently in the image store.\
+\
+See also: Load Image.
+
+#### For
+
+Do a set of actions to process each of a set of values.\
+\
+Values is a comma-separated list of items to iterate through\
+\
+A For loop should be ended with a matching End For action (if one is not
+present, one is automatically added to the end of the task)\
+\
+Example Items:\
+\
+apple, 0, 2:4, 3:9:3, %ARR(1:2), pear\
+\
+This would set Variable one at a time to:\
+\
+apple, 0, 2, 3, 4, 3, 6, 9, %ARR1, %ARR2, pear\
+\
+See Flow Control in the Userguide for more info.
+
+#### [Google Drive Download](ah_google_drive_download.html)
+
+#### [Google Drive List](ah_google_drive_list.html)
+
+#### [Google Drive Sign-In](ah_google_drive_sign_in.html)
+
+#### [Google Drive Trash](ah_google_drive_trash.html)
+
+#### [Google Drive Upload](ah_google_drive_upload_file.html)
+
+#### GPS
+
+Whether the GPS receiver is enabled or not.
+
+#### GUnzip
+
+Decompress the specified gzip archive file on the SD card.\
+\
+You do not need to add .gz on the end of the filename.\
+\
+Specify Delete Zip to delete the gzip file if the compression succeeds.
+
+#### GZip
+
+Compress the specified file on the SD card to a gzip archive of the same
+name with a .gz extension.\
+\
+Specify Delete Orig to delete the original file if the compression
+succeeds.
+
+#### Gentle Alarm
+
+Enable/Disable a Gentle Alarm alarm, or all alarms (Power) if no Name is
+specified.\
+\
+Requires v3.1.0+
+
+#### Get Location
+
+Get a location fix.\
+\
+GPS: a value will be set when the accuracy stops improving. \'Use GPS
+Satellites\' must be enabled in Android Location Settings.\
+\
+Net: a value will returned upon the first fix.\'Use Wireless Networks\'
+must be enabled in Android Location Settings.\
+\
+Continue Task Immediately: move on to the next action in the task as
+soon as the fixing has started.\
+\
+Keep Tracking: don\'t stop tracking the location source(s) when a value
+is returned This will use more power but enables faster fixes after the
+first one. When using this option, tracking can be stopped by the action
+Stop Location or doing Get Location without the option checked.\
+\
+It will stop automatically if at any time no tasks are left to execute
+or the Get Location times out.\
+\
+Note: the fix data are stored in the relevant %LOC variables, see the
+Variables section of the userguide.
+
+#### Get Voice
+
+Use a speech recognizer to convert speech into text.\
+\
+A comma-separated list of results are stored in the variable %VOICE.
+It\'s possible there may be several results because of deficiencies in
+the speech-recognition or e.g. environmental noise. To get e.g. the
+first result, use the Variable Split action and then access %VOICE1.\
+\
+If the recognition fails or the specified Timeout is exceeded, %VOICE is
+cleared (detect this condition with the Is Set operator).\
+\
+Language Model is a hint to the speech-recognizer for fine-tuning the
+results.\
+\
+The default Android speech recognizer requires a network connection and
+therefore has a high-latency. Other recognizers are available e.g. on
+Play Store.\
+\
+Tip: it may be necessary to install the Google Search app in order to
+access this action on some devices.
+
+#### Go Home
+
+Go to the current system Home Screen.\
+\
+If the Page parameter is greater than 0, the home screen is requested to
+start on that page.\
+\
+Some of the supporting home screens are Holo Launcher, Launcher Pro,
+Nova Launcher and Car Dock Home (v3). If your Home Screen app doesn\'t
+support it, you could contact the developer and refer them to Tasker\'s
+developer page: tasker.dinglisch.net/developer.html for info on how to
+include it.
+
+#### Goto
+
+Go to a different place in the current task.\
+\
+Number: specify an action number to jump to.\
+\
+Label: specify an action label to jump to. This is almost always better
+than specifying a number.\
+\
+Top of Loop: jump to the first For action above the current action
+(\'continue\')\
+\
+End of Loop: jump to the action **after** the next End For action
+(\'break\')End of If: jump to the next End If action\
+\
+See the section on Flow Control in the Userguide for more info.
+
+#### HTML Popup
+
+Show a popup with the content defined by the user in HTML.\
+\
+Most Tasker actions are available via JavaScript, see the JavaScript
+section of the Userguide.
+
+#### HTTP Get
+
+Send an HTTP GET request to a webserver.\
+\
+The response code is stored in %HTTPR. A response code of -1 indicates a
+problem making the request. Any returned data is stored in the variable
+%HTTPD if the content type is text-based (max 4K).\
+\
+Returned header fields are stored in the local variable array %header
+(%header1, %header2 etc)\
+\
+Example: running a script\
+\
+Server:Port: www.big.com \[no port specified, use port 80\]\
+Path: cgi-bin/palpable.pl\
+Attributes: \[must be separated by newlines, no spaces please\]\
+colour=pink\
+scent=rosy\
+Timeout: 30 \[read timeout after 30 seconds\]\
+Content-Type: \[if nothing specified, use server-specified value\]\
+File: results.html \[optional: store returned data in
+/sdcard/results.html\]\
+\
+Attribute keys and values are url-encoded automatically.\
+\
+Server:Port can be preceeded by a) https:// to require a secure, trusted
+connection b) a username:password@ to add a Basic Authorization header
+field to the request.\
+\
+The Cookies parameter is of the form:\
+\
+name1=valuu1;name2=value2\
+\
+Ignore SSL Anchor Errors: only for https connections, ignoring such
+errors leaves the connection open to man-in-the-middle attacks.
+
+#### HTTP Head
+
+Identical to the HTTP Get action except the HEAD request method is used
+so no data is returned from the server.
+
+#### HTTP Post
+
+Send an HTTP POST request to a webserver.\
+\
+The response code is stored in %HTTPR. A response code of -1 indicates a
+problem making the request. Any returned data is stored in the variable
+%HTTPD if the content type is text-based (max 4K).\
+\
+Returned header fields are stored in the local variable array %header
+(%header1, %header2 etc)\
+\
+Example: sending a script some data\
+\
+Server:Port www.small.com \[no port specified, use port 80\]\
+Path: cgi-bin/grinder.pl\
+Data:\
+name=Fred\
+hair=Blond\
+Timeout: 30 \[read timeout after 30 seconds\]\
+Content-Type: \[default is: x-www-form-urlencoded, if not specified
+server value is used\]\
+File: results.html \[optional: store returned data in
+/sdcard/results.html\]\
+\
+If Content-Type is x-www-form-urlencoded, the data must be formatted as
+in the example and the keys and values will be encoded automatically.\
+\
+Server:Port can be preceeded by a) https:// to require a secure, trusted
+connection b) username:password@ which will add a Basic Authorization
+header field to the request.\
+\
+The Cookies parameter is of the form:\
+\
+name1=valuu1;name2=value2\
+\
+Ignore SSL Anchor Errors: only for https connections, ignoring such
+errors leaves the connection open to man-in-the-middle attacks.
+
+#### Haptic Feedback
+
+Change the global system haptic feedback setting (found in Android Sound
+settings).
+
+#### Hide Scene
+
+Hide a scene currently being displayed.\
+\
+The scene is **not** destroyed. If you are finished with the scene you
+should use Destroy Scene instead to release it\'s resources.\
+\
+Animation is only relevant for non-overlay scenes and when animations
+are enabled in Android settings.\
+\
+See also: Scenes in the Userguide.
+
+#### If
+
+If the action condition does not match, skip all actions until a
+matching Else or Endif is found or until the end of the task is
+reached.\
+\
+See Flow Control in the Userguide for more info.
+
+#### Import Data
+
+Dynamically load a task into the active configuration or replace the
+whole active configuration.\
+\
+Usually the data to be loaded is first read into a variable via the Read
+File action.\
+\
+When a new configuration is successfully loaded, the task (and all
+others) will be stopped and the monitor service also restarted.\
+\
+Tip: the action Variable Convert / To MD5 Sum, can be used to validate
+the loaded data after Read File.
+
+#### In-Call Volume
+
+Volume level of speech during calls.\
+\
+Setting to 0 will make phone calls difficult.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
+
+#### Input Method Select
+
+Show the Android Input Method picker dialog.\
+\
+If some methods you have installed are not shown, make sure they are
+enabled in Android settings.\
+\
+Note: unfortunately Android does not allow changing of the input method
+without user iteraction.
+
+#### Interrupt Mode
+
+Sets the interruption mode for the device i.e. whether notifications,
+alarms etc should interrupt the current activity.\
+\
+This action requires that Tasker\'s notification access service is
+running, see Android\'s Sound And Notification settings.\
+\
+Note that changes to Ringer, DTMF, Notification or System volume may
+knock the system out of mode \'none\'.\
+\
+Android 5.0+ only.\
+\
+See Also: variable %INTERRUPT.
+
+#### Java Function
+
+Execute a native Java function.\
+\
+See Java in the userguide.
+
+#### Java Object
+
+Manipulate in some way a Java object previously created by the action
+Java Function.\
+\
+See Java in the userguide.
+
+#### JavaScript
+
+Run JavaScript from a file and wait till it finishes.\
+\
+Most Tasker actions are available via function calls.\
+\
+Warning: code in the file will have access to local device files, data
+stores etc\
+\
+See the JavaScript section of the Userguide for more information.
+
+#### JavaScriptlet
+
+Run a piece of JavaScript and wait till it finishes.\
+\
+Most Tasker actions are available via function calls.\
+\
+See the JavaScript section of the Userguide for more information.
+
+#### Juice Defender Data
+
+Use the Juice Defender app to change Mobile Data APNs (in order to
+change mobile data connectivity).\
+\
+Juice Defender Control: Juice Defender decides whether to turn the APNs
+on or off.
+
+#### Juice Defender Status
+
+Turn the Juice Defender app on or off. Requires JD version 3.3.2 or
+higher.
+
+#### [Keyboard](ah_keyboard.html)
+
+#### Keyguard
+
+Whether the keyguard is enabled or disabled.\
+\
+The keyguard is the dialog requiring some sort of unlock action when the
+device is turned on.\
+\
+Note: while keyguard is disabled, your SIM pin unlock screen may
+disappear after a few seconds after a reboot.\
+\
+WARNING: while keyguard is disabled, the \'lock pattern\' mechanism is
+also disabled, so your phone is unprotected if it is lost. There is also
+the possibility of interference with other applications that manipulate
+the keyguard.\
+\
+On Android 2.2+, this action should probably only be used when the
+device is on and unlocked, unless the unlock method in Android settings
+is set to None.\
+\
+Side-effect: coming out of Airplane Mode with Keyguard disabled may
+leave the SIM unrecognized until Keyguard is toggled again.\
+\
+See also: action Keyguard Pattern.
+
+#### Keyguard Pattern
+
+Control the lock pattern displayed by the Android keyguard. If the
+keyguard is disabled, no pattern is displayed even if the pattern is
+enabled.\
+\
+WARNING: behaviour is unknown if you enable the lock pattern without
+having first entered a pattern in Android settings.\
+\
+See also: action Keyguard.
+
+#### Kill App
+
+Stop the specified application.\
+\
+Android 2.2+: restarts an application\'s background services only.\
+\
+For other Android versions or if Use Root is selected: kills a running
+application and all its background services, notifications, alarms etc
+Note that Use Root can cause future malfunctioning of the target app if
+it e.g. is killed while writing data.\
+\
+Tip: may be more effective if the target app is not in the foreground,
+try using action Go Home first.
+
+#### Launch App
+
+Launch the specified application.\
+\
+If Data is specified, it is passed to the application when launched. Not
+all applications examine the data field, however.\
+\
+If *Exclude From Recent Apps* is checked, the application will not
+appear in the recent apps list (usually accessed by long-clicking home
+in the Android launcher), unless it was already in the list.\
+\
+If Always Use New Copy is not checked, any existing copy of the app to
+be launched instead of a new copy.\
+\
+To change the application once you\'ve selected one, tap on the
+application icon.\
+\
+When selecting an app, you can long-click to select a sub-activity of
+the app. Note that often the app is not expecting a sub-activity to be
+launched directly and may crash.
+
+#### List Apps
+
+List installed packages, apps and components in the specified array
+variable.\
+\
+Packages correspond to APK files.\
+\
+Each package can contain multiple apps (though usually there is only
+one) and multiple components of each of the four types.\
+\
+Only **enabled** and **exported** apps and components are listed.\
+\
+Apps and components are listed in the format PkgName:ClassName.
+
+#### List Files
+
+List the files contained in a specified directory in alphabetical
+order.\
+\
+If a Match is specified, only filename which match that pattern are
+included.\
+\
+The results are stored in the specified variable. The first file path is
+stored in %VAR1, the second in %VAR2 etc\
+\
+Note: when Use Root is selected, it may be necessary to specify an
+absolute path (starts with /) for Dir.
+
+#### Load Image
+
+Load an image into the image store, overwriting any image there
+previously.\
+\
+The image store is an image held in the device memory on which all
+actions from the Image category act.\
+\
+Once finished manipulating an image, it can be saved to a file with the
+Save Image action.\
+\
+However, it could also be used to e.g. directly set an image element in
+a scene.\
+\
+Max Width Or Height: if specified, the image is scaled as it is loaded
+so that no dimension is more than the specified number of pixels. Useful
+when memory is an issue.\
+\
+Respect EXIF Orientation: if the specified image is JPG format, it will
+be automatically adjusted after loading dependent on the EXIF meta-data
+tag, if present.
+
+#### Load Last App
+
+Launch the previous foreground application.
+
+#### Lock
+
+Show a lock screen.\
+\
+To continue, the specified code must be entered. Allow Cancel determines
+whether a Cancel button will be shown or not. If Cancel is pressed the
+user is taken back to the home screen.\
+\
+If Remember Till Off is selected, a correctly entered password will be
+remembered and reused until the device enters sleep mode.\
+\
+A common use is to lock particular applications.\
+\
+Consider locking this profile. That will prevent circumvention of this
+action\'s lock by changes within Tasker.\
+\
+Also consider attaching a Lock action to any application on your system
+which would allow removal of Tasker e.g. system Settings.\
+\
+In any case, this action should not considered as a replacement for the
+system Keyguard lock, as it is less secure. A reboot will remove the
+lock screen, for instance.
+
+#### MIDI Play
+
+Play notes on a MIDI instrument attached by USB.\
+\
+For details, see MIDI in the userguide.
+
+#### Media Button Events
+
+After grabbing the Media Button via this action all presses will be sent
+to Tasker.\
+\
+It only makes sense to do this if you configure Tasker to do something
+with them (via state Media Button) or you want to block them from going
+to another app.\
+\
+Note: any app can grab the Media Button at any time, Tasker cannot
+\'keep hold\' of it. For example, the system media player seems to grab
+the button at the start of each track.
+
+#### Media Control
+
+Send a command to a media playback application.\
+\
+A target app need only be specified when multiple apps are interpreting
+the command.\
+\
+Note: the Toggle Pause function may not work unless playback has already
+been started manually.\
+\
+Note: Tasker\'s Music XXX actions are not controlled by this action.
+
+#### Media Volume
+
+Volume level during media playback.\
+\
+Setting to 0 will mute music.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
+
+#### Menu
+
+Show a selection dialog and perform a different action depending on
+which item the user selects.\
+\
+The Layout parameter specifies the look of all the items. Click to edit
+it.\
+\
+The Items parameter specifies the content of each item.\
+\
+The selected item label and index are available in the resulting task in
+%tap\_label and %tap\_index respectively.\
+\
+If the user does not explicity select an item then when the specified
+Timeout is reached the item with a checkmark will be automatically
+selected.\
+\
+More info: Menu element in the Userguide.
+
+#### Mic Mute
+
+Mute the device\'s microphone.
+
+#### Mobile Data
+
+Set mobile data status without affecting incoming calls.\
+\
+This action has the disadvantage that Android may manipulate it
+internally when certain things happen e.g. wifi disconnected.\
+\
+Note: this action requires that Mobile Data is intitially turned \*on\*
+in Android System Settings.\
+\
+When Mobile Data is \*off\* in System Settings, this action will have no
+effect.\
+\
+It has been reported that many Google apps reenable the setting.
+
+#### Mobile Data 2G/3G
+
+Setting the mode to 2G only will save power at the cost of speed.\
+\
+This action is not possible on a standard Android ROM.
+
+#### Morse
+
+Play morse code representing the given Text.\
+\
+Amplitude is the percentage of maximum amplitude. The system volume
+setting for the selected output stream will also affect the perceived
+volume.\
+\
+Non-latin characters are not supported.\
+\
+Note: Frequency is not on a Hertz scale.
+
+#### Move
+
+Move an SD card file or directory to a new directory.\
+\
+If To specifies an existing file, it will be overwritten.\
+\
+The paths start in the root directory of the SD card.\
+\
+Note: files cannot be moved from one file system to another e.g.
+internal memory to SD. A workaround is to Copy and then Delete.
+
+#### Music Back
+
+Jump backwards in a sound file which was previously started with Play
+Music.\
+\
+Jump value is in seconds.
+
+#### Music Play
+
+Play a sound file from the SD card.\
+\
+File is the path to the file on the SD card e.g. Music/wow.mp3\
+\
+If Loop is selected, the playback will restart when it reaches the end
+of the file.\
+\
+Start specifies how many seconds into the track to begin playing.\
+\
+You can stop the playback before it is finished with the Stop Music
+action.\
+\
+You can start playback from the start by repeating the action\
+\
+Playback has been tested with 3gp, mp3 and wma formats.\
+\
+See also: variable Music Track
+
+#### Music Play Dir
+
+Play music files from the specified SD card directory.\
+\
+If Audio Only is selected, only files with the following extensions will
+be played: 3gp, mp3, wma, au, mid, midi, mp2, ogg, wav.\
+\
+If Random is selected, files will be played in random order.\
+\
+You can stop the playback before it is finished with the Stop Music
+action.\
+\
+Doing the same action on the same directory will move playback to the
+next file. If you want to start afresh, use Music Stop first.\
+\
+See also: variable Music Track.
+
+#### Music Skip
+
+Jump forward in a sound file which was previously started with Play
+Music.\
+\
+Jump value is in seconds.
+
+#### Music Stop
+
+Stop playback of a sound file or directory which was previously started
+with Play Music.\
+\
+If Clear Dir is specified and a directory was being played, next time
+Music Play is used the playback will start from the first file.
+
+#### [Navigation Bar](ah_navigation_bar.html)
+
+#### Network Access
+
+Deny network access to all or selected apps.\
+\
+When mode Deny is selected, all apps have network access except for
+those specified.\
+\
+When mode Allow is selected, only the specified apps have access.\
+\
+Use of this action overrides and replaces the effects of any previous
+use.\
+\
+Notes:\
+\* this action is implemented via a VPN local to the device and cannot
+be used in combination with other VPNs.\
+\* some devices will clear the users confirmation of Tasker\'s
+permission to setup a VPN after every boot\
+\* the icon which Android shows in the status bar cannot be avoided\
+\* Tasker does not examine the contents of any network packet
+
+#### NewsRob
+
+Info:\
+\
+http://newsrob.com
+
+#### [NFC Tag](ah_nfc_tag.html)
+
+#### Night Mode
+
+Change Android\'s Night Mode setting.\
+\
+Only effective when Android\'s UI Mode is Car or Desk.\
+\
+Requires Android 2.2+
+
+#### Notification Pulse
+
+Android system setting, whether to pulse the notification light for new
+notifications.
+
+#### Notification Volume
+
+Volume level of notification alert.\
+\
+Setting to 0 will mute the notification sound.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.\
+\
+Note: on some devices Notification and Ringer volume are linked,
+changing one will change the other. There may be an Android setting for
+controlling that behaviour.
+
+#### Notify
+
+Show a notification on the top bar.\
+\
+The specified Title will appear on the bar initially with the Icon.\
+\
+Notifications with a particular (non-empty) title replace existing ones
+with that title.\
+\
+When the notification area is pulled down, the specified Text will be
+visible.\
+\
+If Permanent is checked, the notification will not be removed by
+clicking on it or pressing the Clear button. It \*can\* be removed using
+the Notify Cancel action.\
+\
+A common use of creating a permanent notification is to allow permanent
+quick access to e.g. a Menu Task through the Notification Bar. Specify a
+task to run when the notification is clicked by creating a profile with
+a Notification Click event.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions. Actions do not run as part of the notifying task.
+
+#### Notify Cancel
+
+Cancel a notification (created by Tasker) currently in the System
+Notification bar.\
+\
+Title is the title of the notification to cancel. If Title is not
+specified, all notifications will be cancelled (including \'permanent\')
+ones.\
+\
+If more than one notification with the specified Title is currently
+being displayed, only the last one displayed will be cancelled, the
+otherwise will need to be cancelled manually.\
+\
+Warn Not Exist: if set, a warning will be flashed if there is no
+matching notification.
+
+#### Notify LED
+
+Show a notification on the top bar and flash an LED.\
+\
+The specified title will appear on the bar initially. Notifications with
+a particular (non-empty) title replace existing ones with that title.\
+\
+When the notification area is pulled down, the specified text will be
+visible.\
+\
+A Number other than 0 causes that number to be included in the
+notification area.\
+\
+Rate is the number of milliseconds the LED will flash on and then again
+be off. It must be at least 1.\
+\
+Not all devices support all colours. Many devices will only support red
+and green. In general, colours near the top of the list are more likely
+to be supported.\
+\
+Some devices will only flash the LED when the device is off at the time
+the notification is received.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions. Actions do not run as part of the notifying task.
+
+#### Notify Sound
+
+Show a notification on the top bar and play a sound.\
+\
+The specified Title will appear on the bar initially. Notifications with
+a particular (non-empty) title replace existing ones with that title.\
+\
+When the notification area is pulled down, the specified Text will be
+visible.\
+\
+A Number other than 0 causes that number to be superimposed on the
+notification icon.\
+\
+Music File specifies a file location on the sdcard e.g. music/hello.mp3.
+If it\'s blank, the default notification sound will play.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions.
+
+#### Notify Vibrate
+
+Show a notification on the top bar and vibrate.\
+\
+The specified Title will appear on the bar initially. Notifications with
+a particular (non-empty) title replace existing ones with that title.\
+\
+When the notification area is pulled down, the specified Text will be
+visible.\
+\
+A Number other than 0 causes that number to be included in the
+notification area.\
+\
+Pattern: enter a comma-separated list of numbers. The 1st one is how
+long to be silent for, the 2nd one how long to vibrate for and then
+alternating.\
+\
+Specify no pattern to use the default pattern.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions Actions do not run as part of the notifying task..
+
+#### Open File
+
+Open the specified file on the SD card.\
+\
+The file type is determined by the extension, unless a specific Mime
+Type is specified.\
+\
+The viewer/listener used depends on that registered by the system for
+the file type.
+
+#### Open Map
+
+Launches Google Maps with a particular mode and location/destination.\
+\
+Exactly one of Address or Lat/Long must be specified. Address is not
+valid for StreetView mode.\
+\
+Address is in the format X+Y+Z e.g. Littleton+Delaware\
+\
+Zoom is only possible with Point / StreetView and a Lat/Long
+specification.\
+\
+Label is only possible with Point mode, it will show a marker with the
+specified label.\
+\
+Google Maps version 3.2.1 or higher is (probably) required for
+Navigation.
+
+#### Perform Task
+
+Run the selected Tasker task.\
+\
+You can \'nest\' as many tasks as you wish.\
+\
+When this action is used as part of an Enter task, the settings it
+contains are \*not\* restored when the profile exits.\
+\
+When a task is started from an existing task, the existing task
+continues unless the Stop parameter is set.\
+\
+If you set the priority lower than the current task, the current task
+will finish before the new one starts.\
+\
+If you set the priority the same or higher than the current task (a good
+way to do this is to specify \'%priority+1\'), the new task will
+completely execute before the current one resumes.\
+\
+Values assigned to %par1 and %par2 are available in the child task as
+normal variables.\
+\
+If the child does a Return action, the Return Value Variable in the
+parent task is set to the Value specified in that Return action, however
+note that the value will not be returned if the Perform Task is the last
+action of the parent.\
+\
+See Flow Control in the Userguide for more info.
+
+#### Play Ringtone
+
+Play an alarm, notification or ringer ringtone throught the specified
+audio stream.\
+\
+If no Sound is specified, the current default tone of the specified Type
+will be played.\
+\
+Note: the task will not wait for the ringtone to complete before
+continuing.\
+\
+Note: in some Android versions ringtones will endlessly loop due to an
+Android bug.
+
+#### Plugin
+
+Runs the specified action plugin.\
+\
+Timeout specifies how long Tasker should wait for the plugin to finish.
+**None** indicates that Tasker will proceed immediately to the next
+action in the task.\
+\
+Warning: data you enter in the plugin configuration screen is collected
+by the \*plugin\*, not by Tasker. If the plugin has Internet permissions
+it could e.g. transmit your data to third-parties.
+
+#### Popup
+
+Show a popup box with a message.\
+\
+The popup will dissappear after the specified number of seconds or if
+its text is tapped.
+
+#### Popup Task Buttons
+
+Show a popup box with a message and 1-3 buttons with Task names, icons
+or both.\
+\
+If one of the buttons is clicked, the popup exits and the relevant task
+is performed.
+
+#### Power Mode
+
+Set the system power mode.\
+\
+Requires a rooted device.
+
+#### Profile Status
+
+Enable or disable the named profile.\
+\
+If the state is already the desired one, there will be no effect.
+
+#### Query Action
+
+Get details of an action to run, then run it.\
+\
+If Action is specified, only the parameters will be queried. This is a
+very useful action to assign to a home screen widget, since it allows
+you to easily execute any of Tasker\'s actions without having to set up
+a profile etc first.\
+\
+Wait and Wait Until actions cannot be queried. As a workaround, you
+could query for a variable and then then Wait in the next action of the
+task using the variable value.
+
+#### Quick Setting Add
+
+Add a custom tile to the system Quick Settings panel.\
+\
+If Items are specified, then when the icon is clicked they will be shown
+in a menu.\
+\
+If **no** Items are specified, a click on the tile can be detected via
+the event Quick Setting Clicked.\
+\
+Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support.
+
+#### Quick Setting Remove
+
+Remove a custom tile previously added to the system Quick Settings panel
+with action Quick Setting Add.\
+\
+It is not classified as an error if the tile did not previously exist.\
+\
+Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support.
+
+#### Radio
+
+Set the status of the phone radio.\
+\
+Warning: turning off the phone radio will prevent outgoing/incoming
+calls and mobile data transfer.
+
+#### Read Binary
+
+Read binary data (e.g. image data) from the specified file into a
+variable in base 64 format.\
+\
+Base 64 is a textual format meaning it is safe for use where pure binary
+data may not be.\
+\
+Base 64 can have various formats: that used by Tasker has regular line
+terminators and potentially ends with padding characters (=).\
+\
+See Also: actions Write Binary, Variable Convert
+
+#### Read File
+
+Read a text file into a variable.\
+\
+Don\'t try to read a non-text file with this, the results will probably
+be disastrous
+
+#### Read Line / Read Paragraph
+
+Read a record (a line or paragraph) from a text file.\
+\
+Line/Paragraph is the name of a variable containing the record number to
+read. If unspecified, the record after the previously read one \*in that
+file\* is read. A variable is used in place of a number here to permit
+e.g. reading a random record via the Variable Randomize action.\
+\
+If the end of the file was reached before the specified record number
+was found, it will contain the value EOF. The next line number then
+resets to 1.\
+\
+Blank lines and any newline character at the end of a file are always
+ignored.\
+\
+Don\'t try to read a non-text file with this, the results will probably
+be disastrous.\
+\
+The action is not very efficient for reading all the records in a file,
+since it starts from the beginning each time.
+
+#### Reboot
+
+Reboot (or just shutdown) the device.\
+\
+Unfortunately, this is not a \'clean\' shutdown. Neither Android nor
+running applications are informed that the device is rebooting, so be
+prepared for possible data corruption.\
+\
+On the other hand, every other app that allows reboot does it the same
+way.
+
+#### Record Audio
+
+Record from the microphone to an SD card file.\
+\
+File is the path to the file on the SD card. It will have extension .3gp
+added.\
+\
+Source is where to record from. Not all sources are available on all
+hardware, for instance the Call source is not available on the G1.\
+\
+The Max Filesize is the maximum size of the resulting audio file in K.\
+\
+A zero value for Filesize places no limit, in which case the recording
+will not stop until the SD card is full or the Tasker action Record
+Audio Stop is performed.\
+\
+Note: playback of the resulting files can be done with Tasker\'s Play
+Music action, amongst others.\
+\
+Warning: in many countries, recording of individuals\' speech without
+their consent is illegal.
+
+#### Record Audio Stop
+
+Stop a sound recording previously started with Record Audio.
+
+#### Remount
+
+Remount a file system read-write or read-only.\
+\
+Warning: it\'s inadvisable to\
+\
+\* use this action unless you know what you are doing\
+\* leave /system writeable for long periods
+
+#### Resize Image
+
+Resize and scale the image currently in the image store.\
+\
+Specifying a value of 0 for one of Width or Height will cause that
+dimension to be scaled proportionally with the other dimension so as to
+keep the original aspect ratio of the image.\
+\
+See also: Load Image.
+
+#### Return
+
+Return a value to the parent of this task i.e. the one that started it
+via Perform Task.\
+\
+The parent task must have started it\'s child at equal or higher
+priority and have specified a Return Value Variable in it\'s Perform
+Task action, which will then be set to the Value specified in this
+Return action.\
+\
+If Stop is checked, this task (the child) will terminate after returning
+the Value to the parent.\
+\
+See Flow Control in the Userguide for more info.
+
+#### Ringer Volume
+
+Volume level of phone ringer.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.\
+\
+If you want to put your phone in vibrate or silent mode, use action
+Audio / Silent Mode, not this.\
+\
+Note: on some devices Notification and Ringer volume are linked,
+changing one will change the other. There may be an Android setting for
+controlling that behaviour.
+
+#### Rotate Image
+
+Rotate the image currently in the image store.\
+\
+See also: Load Image.
+
+#### Run SL4A Script
+
+Run the named Scripting Layer for Android (SL4A) script.\
+\
+Every file in /sdcard/sl4a/scripts is expected to be a script.\
+\
+More information: http://code.google.com/p/android-scripting/.\
+\
+Passed Variables is a comma-separated list of variables to pass in the
+intent which starts the script. Their values \*at time of launch\* can
+be accessed from the script by looking at the received intent.
+
+#### Run Shell
+
+Run a system shell command under linux.\
+\
+If Timeout is 0, the command will never time-out.\
+\
+Store Output In is a variable name for the output (stdout) of the
+command.\
+\
+Similarly, Store Errors In is for error output (stderr).\
+\
+A result code of 256 indicates a technical failure executing the
+command, 257 indicates that the specified Timeout value was exceeded,
+258 indicates the process was interrupted.\
+\
+Any non-zero result code will cause the task to stop, unless Continue On
+Error is checked, otherwise the result code will be stored in %err.
+
+#### SMS Backup+
+
+Info: https://github.com/jberkel/sms-backup-plus\
+\
+Minimal version 1.3.4.
+
+#### SQL Query
+
+Query an SQL database in a file or URI.\
+\
+In Raw mode, the Query must be entered as a full SQL statement.\
+\
+In Table URI mode the URI refers to a specific table rather than a DB;
+an example is content://com.android.contacts/groups.\
+\
+In both Formatted modes, SQL directives (SELECT, WHERE etc) should be
+ommitted.\
+\
+Selection refers to the WHERE directive (\'column \> 5\', \'column =
+?\')\
+\
+Selection Args specifies content that fills each ? in Selection in the
+order they appear.\
+\
+The result rows of the query are stored in the specified array with a
+row at each index. The columns within each row are separated by the
+Output Column Divider.\
+\
+Null DB values are represented as , BLOBs as , problems with \??\>\
+\
+When making several transactions on a DB on external storage or which
+needs root to access, it will be much more efficient to first move the
+DB file to internal storage (Move File action) and operate on it there.\
+\
+In Raw mode, only the following directives requiring writeable DB access
+are supported: INSERT INTO, UPDATE, CREATE TABLE, DELETE FROM, ALTER
+TABLE.
+
+#### Save Image
+
+Write the image currently in the image store to a file.\
+\
+The file extension will only be respected for JPEG and WEBP (if
+available on the device); all other extensions will result in PNG
+output.\
+\
+Higher Image Quality values will also result in greater file size and
+more chance of running out of memory. Image Quality is not relevant for
+PNG.\
+\
+See also: Load Image.
+
+#### Say
+
+Synthesize the given Text into speech.\
+\
+Engine:Voice specifies the speech engine and voice/language to use.
+*default:en* specifies the default engine and English voice.\
+Stream/File specifies where the sound should go. Stream specifies a
+sound channel, File specifies a location on the SD card; the synthesized
+speech is stored in WAV format.\
+\
+Network: use network synthesis, if supported by the current
+engine/voice. This may result in better quality.\
+\
+Continue Task Immediately: if selected, Tasker will continue with the
+next queued action while the speech is still ongoing. You must select
+this in order to do a Shut Up action later.\
+\
+Android settings may override locale, speed and pitch. Please see the
+\'Always use my settings option\' in Android\'s Text-To-Speech settings
+section.\
+\
+If *Reduce Resource Usage* in Tasker Prefs / Misc is checked, the speech
+engine will be shutdown after each utterance, meaning the speech will
+always begin later for subsequent Say actions.
+
+#### [Say WaveNet](ah_say_wavenet.html)
+
+#### Scan Media
+
+Force the system to scan the SD card for new/deleted media. This can
+save a lot of time removing and reinserting the physical card.\
+\
+If a file is specified, only that file is scanned.\
+If a directory is specified, all of its contents will be scanned
+recursively.\
+\
+Note: repeatedly scanning the same file will not update the thumbnail in
+Gallery.\
+\
+On Android 4.4+, scanning the whole card or a directory only picks up
+\*new\* files and the task waits till the scan is finished.
+
+#### Search
+
+Perform a search for the specified text.
+
+#### Send Data SMS
+
+Send a binary data SMS without user interaction. The maximum length is
+133 bytes.\
+\
+Multiple numbers can be specified by comma-separating them.\
+\
+The Data field must consist of a Base 64 encoded string.\
+\
+A Tasker variable contents can be encoded to Base 64 with the Variable
+Convert action, or binary data loaded from a file with the File / Read
+Binary action.
+
+#### Send Intent
+
+Broadcast an ordered Intent.\
+\
+This action is intended for advanced users.\
+\
+See *Intents* in the Userguide for more info.
+
+#### Send SMS
+
+Send an SMS without user interaction.\
+\
+Multiple numbers can be specified by comma-separating them.\
+\
+Email addresses are not supported.\
+\
+Store in Messaging App: whether a record will be kept of the sent SMS in
+the standard messaging app (only available prior to Android 4.4).\
+\
+Success or failure can be caught by creating an Event context SMS
+Success/Failure.\
+\
+Maximum length of an SMS is 140 characters. In some character encodings
+that translates to 140 characters, in others to only 70 characters.
+
+#### Set Alarm
+
+Set a new alarm in the default alarm clock application.\
+\
+If Confirm is not checked no user interaction will be required.\
+\
+Note that on some devices, setting the alarm too close to the current
+time may result in the alarm being set for the next day.\
+\
+Also, some devices require that a Message be stipulated.
+
+#### Set Clipboard
+
+Copy the specified text to the system clipboard.\
+\
+If Add is set, the text will be added on the end of the clipboard,
+otherwise it will replace the existing clipboard text.\
+\
+This is probably most useful for storing some data from an event (e.g.
+the text of an arriving SMS). Note that you can also place the clipboard
+contents in an action.
+
+#### Set Key
+
+Preset the passphrase for an encryption key.\
+\
+This allows subsequent en/decryptions to take place automatically
+without user interaction.\
+\
+Important: it is less secure than the Enter Key action; read the
+userguide section on Encryption before use.
+
+#### Set Light
+
+Change the brightness of a light.\
+\
+Available lights will vary per-device but typically include things like
+keyboard backlights, LEDs, camera flashlights, display and button
+backlights.\
+\
+Despite the maximum being given as 255, many lights will only be on or
+off, in which case 0 specifies off and any other number specifies on.\
+\
+Note that turning a light off is not permanent, Android may turn it on
+at a later time in response to various events on the device.\
+\
+If you accidentally reduce the display backlight to 0, a reboot should
+solve the problem.
+
+#### Set SMS App
+
+Set the app which is the system-default SMS app.\
+\
+A dialog will be shown to confirm the change.\
+\
+Will have no effect unless a valid app is chosen.
+
+#### Set Tasker Icon
+
+Set the icon for Tasker\'s permanent notification in the status bar.\
+\
+Lasts until the monitor service is stopped e.g. due to disabling
+Tasker.\
+\
+To permanently change the icon, see Menu / Prefs / Monitor /
+Notification Icon
+
+#### Set Tasker Pref
+
+Dynamically set a preference value normally configured via Menu / Prefs
+in the Tasker UI.\
+\
+The changed values will have immediate effect unless the related
+operation is already in progress.\
+\
+The Use Reliable Alarms preference will not cause existing alarms to be
+recreated.
+
+#### Set Wallpaper
+
+Set the system (home screen) wallpaper from an SD card image file.\
+\
+JPG and PNG are supported.\
+\
+If no image is specified, the default system image is set.\
+\
+Scale: if the image is smaller in width or height than the
+launcher-specified values, scale it up to those values while keeping the
+aspect ratio.\
+\
+Crop: if the image dimensions (possibly after scaling) are greater than
+the launcher-specified values crop it down to those dimensions. This can
+be necessary to prevent Android-internal problems.\
+\
+Note that it can take more than 20 seconds for this action to take
+effect.
+
+#### Set Widget Icon
+
+Change the label of the specified (existing) Task Widget on the home
+screen.\
+\
+Name is the name of the Task which the widget performs (which appears on
+the homescreen, unless a label has been set with Set Widget Label.\
+\
+Icon is the new icon to set.
+
+#### Set Widget Label
+
+Change the icon of the specified (existing) Task Widget on the home
+screen.\
+\
+Name is the name of the Task which the widget performs (set when it was
+initially created and initially used as the label).\
+\
+Label is the new home screen label for the widget.\
+\
+Note: if you want to change the label several times, you refer to the
+\*original\* Task name each time, which does not change.
+
+#### Setup App Shortcuts
+
+Dynamically configure the list of app shortcuts which will show when the
+Tasker icon is long-clicked in the launcher.\
+\
+If no task is specified, that slot will receive the default appearance
+and functionality.\
+\
+This action is mainly of use for child apps created with Tasker.\
+\
+See also: Prefs / Action / App Shortcut Tasks.
+
+#### Setup Quick Setting
+
+Dynamically change one of Tasker\'s quick settings tiles.\
+\
+If no task name is specified, the tile will receive the default
+appearance and functionality.\
+\
+The status affects the appearance of the tile in a way defined by the
+system. In addition, if it is set to Disabled, the tile will not respond
+to clicks.\
+\
+The effects of this action will only be visible when the tile is
+manually added to the set of used tiles via the Android UI.\
+\
+See Also: Prefs / Action / Quick Settings Tasks.
+
+#### Share File
+
+Share a file with another application or device.\
+\
+If Mime Type is not specified, Tasker will attempt to deduce it.\
+\
+If Show Chooser is specified, Android will display a selection of
+possible ways of sharing the file, in a dialog.\
+\
+If not specified, the chooser may be shown anyway if there is no known
+default way of handling that Mime Type.\
+\
+Some Android versions may ignore Chooser Title.
+
+#### Show Alarms
+
+Bring up a screen showing the configured system alarms.
+
+#### Show Scene
+
+Display a scene, creating it first if necessary.\
+\
+All Overlays are displayed over the current application and persist
+until hidden or destroyed.\
+\
+Blocking overlays only block touches on the part of the screen they
+cover.\
+\
+Non-blocking Overlays are also displayed over the Keyguard.\
+\
+Dialogs are little popup windows which take all user input while they
+are displayed and can be dismissed with the Back key.\
+\
+Activities are standard Android app views.\
+\
+Offsets are percentages of the screen size with in the range 0-200,
+(0=100% left, 100=centre, 200=100% right).\
+\
+Animation is only relevant for non-overlay scenes and when animations
+are enabled in Android settings.\
+\
+See also: Scenes in the Userguide.
+
+#### Shut Up
+
+Stop speech initiated from a previous Say or Say To File action.\
+\
+Note: you must select Continue Task Immediately in the Say action to be
+able to use Shut Up, otherwise Tasker will not get to the Shut Up action
+until the speech has finished anyway.
+
+#### Silence Ringer
+
+During an incoming call, immediately stop the ringsound and/or
+vibration.\
+\
+This is temporary; the ringer will still sound on the next incoming
+call.
+
+#### Silent Mode
+
+Android 5.0: toggles vibrate mode on or off.\
+\
+Prior Android versions: in silent mode, all sounds except media and
+alarm are surpressed by the system (without having their volume settings
+changed). With Vibrate, the phone will vibrate on an incoming call.\
+\
+This setting overrides the Ringer Vibrate setting.
+
+#### SleepBot
+
+Info:\
+\
+http://wiki.mysleepbot.com
+
+#### Sound Effects
+
+Whether to enable or disable system sounds like clicks on icons.\
+\
+See also: Sound/System Volume setting.
+
+#### Speakerphone
+
+Whether the speakerphone is on or off.\
+\
+Note: this will only have any effect when a call has already started,
+but you could use it with e.g. a Phone Offhook event if you want every
+incoming call on speakerphone.
+
+#### Start System Timer
+
+Start a system or 3rd party countdown timer.\
+\
+When Show UI is selected the UI of the timer app will be displayed,
+otherwise probably only a notification will be shown.\
+\
+Only available from Android 4.3.\
+\
+This action has no relation to Tasker\'s countdown timer widgets.
+
+#### Status Bar
+
+Expand or collapse the system status bar.\
+\
+On some devices Tasker\'s Accessibility Service will need to be enabled
+in Android settings.
+
+#### Stay On
+
+Whether to prevent the screen going off while a power supply is
+present.\
+\
+The screen will still dim a few seconds before Screen Timeout is
+reached.
+
+#### Stop
+
+Stop execution of one or more tasks after any currently running action
+has finished.\
+\
+If a task is specified, then **all** tasks with the same name currently
+executing are stopped.\
+\
+If no task is specified, the current task is stopped (but **not** other
+tasks with the same name).\
+\
+If With Error is checked, the task(s) are marked as finished due to an
+error.\
+\
+Note: to stop a different task will often require that it has a lower
+priority than the task with the Stop action, since otherwise the Stop
+action will perhaps never be executed.\
+\
+Currently running actions in a different task will not be interupted by
+a Stop action, with the exception of Play Ringtone and a non-root Run
+Shell.
+
+#### Stop Location
+
+Stop tracking a location source which was previously initiated by Get
+Location.\
+\
+This is only necessary if the Keep Tracking parameter is checked in Get
+Location.
+
+#### System Lock
+
+Turn off the display and engage the keyguard.
+
+#### System Volume
+
+Volume level of system sounds.\
+\
+Setting to 0 will mute system sounds.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.\
+\
+Note: System Sounds must also be enabled if required.
+
+#### Take Call
+
+Silence the ringer and pick up the phone, if it\'s ringing.
+
+#### Take Photo
+
+Take a photo. The current activity will be interrupted for a couple of
+seconds.\
+\
+If Discreet is checked, there will be no visible or audible sign of the
+picture being taken, and the device will not turn on if it is already
+off (except on Eclair devices).\
+\
+Without Discreet, a small delay allows time for aiming.\
+\
+Insert in Gallery: immediately insert a thumbnail in the Gallery
+application, otherwise it will not appear until the next time the SD
+card is scanned.\
+\
+Naming Sequence: Series: photo names have an index number attached which
+increases with each one taken. Chronological: the date and time is
+attached to the filename.\
+\
+Photos are in JPG format and stored in /sdcard/dcim/Tasker/. You should
+not attach the .jpg affix when specifying the filename prefix.\
+\
+See also: Menu / Prefs / Action / Camera Delay.
+
+#### Take Screenshot
+
+Take a screenshot of the phones current display.\
+\
+Writing to external storage is not supported.
+
+#### TeslaLED
+
+Use the camera flash as a torch.\
+\
+More info:\
+\
+http://teslacoilsw.com/teslaled\
+\
+Please reward the developer by choosing the Donate version!\
+\
+See Also: Alert / Torch.
+
+#### Test App
+
+Test some aspect of an application.\
+\
+A failed test will result in the specified result variable being
+cleared.\
+\
+Calendar tests: require the time in seconds since the epoch as Data
+(e.g. use %TIMES, or use the Variable Convert action to convert a
+date/time into seconds first) and are entered in an array (%var1, %var2
+etc), not a plain value, because there may be multiple events at the
+time specified.
+
+#### Test Display
+
+Test an attribute of the display.\
+\
+AutoRotate: on or off\
+\
+Orientation: portrait or landscape.\
+\
+Resolution/DPI: depends on current orientation of display.
+
+#### Test Element
+
+Test some property of the specified scene element e.g. it\'s position
+within the scene.\
+\
+The scene must have been created first and in some cases already be
+displayed.\
+\
+Not all tests apply to all elements.
+
+#### Test File
+
+Test an attribute of a file and put the result in a variable.\
+\
+A failed test will result in the specified result variable being
+cleared.\
+\
+Parent Dir: the parent directory of the given file, note that it may not
+actually exist.\
+Size: file size in bytes, or for directories number of children.\
+Modification time: the modification time of a directory is the time a
+file was last added or deleted from them.\
+Type: either **file** or **dir**.
+
+#### Test Media
+
+Test some aspect of a media carrier or player.\
+\
+Music Playing Position: applies only to tracks started by Tasker via the
+Music Play action.\
+\
+Note: a failed test will result in the specified result variable being
+cleared.
+
+#### Test Net
+
+Test a network attribute.\
+\
+Possible Connection Types are **none, mobile, wifi, mms, supl, dun,
+hipri, wimax, bluetooth, dummy, ethernet**, and **vpn**.\
+Mobile Data and Wifi Hidden are **yes** or **no**.\
+\
+BT Paired Addresses is a comma-separated list of the bluetooth devices
+this device is paired with. The other BT tests need a name or address to
+test.\
+\
+BT Device Connected may require Tasker to be enabled when the device
+connects (for some device types).\
+Bluetooth must be enabled for all BT tests.
+
+#### Test Phone
+
+Test something phone related.\
+\
+\
+\
+A failed test will result in the specified result variable being
+cleared.\
+\
+All tests require the phone number of the contact as Data.
+
+#### Test Scene
+
+Test an attribute of the specified scene and store the result in the
+specified variable.\
+\
+Possible status values are\
+\
+uncreated, hidden, visible, background (shown but currently not on
+screen)\
+\
+Offsets are percentages from -100 to 100, with 0 being display centre.\
+\
+If the scene does not exist the specified variable will be cleared.
+
+#### Test System
+
+Test an attribute of the operating system.\
+\
+Android ID: 64 bit hex value which should be constant for the life of
+the device.\
+\
+UserID: the user ID of the current active (foreground) user, only
+available on Android 4.2+.
+
+#### Test Tasker
+
+Test some aspect of Tasker\'s configuration.\
+\
+The Global Var, Local Var, Profile, Scene and Task test types store
+their results as an array (%var1, %var2 etc).\
+\
+The Global Var type doesn\'t include built-in variables.\
+\
+The Profile and Task test types only list **named** profiles or tasks.
+
+#### Test Variable
+
+Test a variable attribute.
+
+#### Timer Widget Control
+
+Control the operation of a previously-created Task Timer widget.\
+\
+End: cause the timer to finish. The associated task will execute if the
+timer was previously running.\
+\
+Resume: resume (or start, if not paused)) the countdown.\
+\
+Reset: stop the countdown and set it to it\'s initial value.\
+\
+Update: refresh the display of the remaining time, not usually
+necessary.
+
+#### Timer Widget Set
+
+Set the period of a previously-created Task Timer widget.\
+\
+The elapsed time is set to 0.\
+\
+If the timer was already running, it will continue to do so.
+
+#### Toggle Split Screen
+
+Toggle whether the current app is in split screen mode or not.
+
+#### Torch
+
+Hold the camera flashlight on.\
+\
+May not work on all devices.\
+\
+If it gets stuck on, just turn the device off.\
+\
+See Also: 3rd Party / TeslaLED.
+
+#### Turn On
+
+Restart the system display timeout timer. If the display is off, it will
+be turned on.
+
+#### Type
+
+Simulate typing of text.\
+\
+Only available on a rooted device.\
+\
+Accented characters currently do not work.\
+\
+USB Debugging probably needs to be enabled in Android\'s Developer
+Settings.
+
+#### USB Tether
+
+Turn on sharing of the device\'ss Internet connection via USB cable.\
+\
+On some devices, you may need to enable the USB tether once in Android
+settings before Tasker will be able to do it.
+
+#### UnZip
+
+Decompress the specified zip archive file on the SD card.\
+\
+You do not need to add .zip on the end of the filename.\
+\
+Specify Delete Zip to delete the zip file if the compression succeeds.
+
+#### Variable Add
+
+Increase the value of the variable Name.\
+\
+The value is increased by the integer Value.\
+\
+If the variable does not contain a numeric value (e.g. 3) this action
+has no effect and a warning will be flashed.\
+\
+If the variable does not exist, it will first be created with a value of
+0.\
+\
+If a Wrap Around is not zero, then when the final result is equal to or
+greater than the Wrap Around value, it will wrap back to 0 e.g. with
+Wrap Around 5, 2 + 4 = 1.\
+\
+See the section on Conditions and Loops in the Userguide for more
+information.\
+\
+Use action Variable Set for non-integer addition.
+
+#### Variable Clear
+
+Remove the stored value for the user-variable Name.\
+\
+If no Name is specified, all user-variables are cleared.\
+\
+If Pattern Matching is specified, all variables which match the pattern
+are cleared (see Pattern Matching in the Userguide).
+
+#### Variable Convert
+
+Convert the specified variable\'s value from one unit to another.\
+\
+If a variable is specified for Store Result In, the new value is stored
+there and the original variable will not be changed.\
+\
+If the conversion fails, no values will be unchanged.\
+\
+Notes on particular conversions:\
+\
+Date Time to Seconds\
+\* date and time must be separated by whitespace e.g. 20110304 11.32\
+\* date can be in YYYYMMDD format or xx-yy-zz, in which case the
+positions of day, month and year are determined by Android preferences\
+\* if time is ommitted it is assumed to be 00:00\
+\* time must be in 24hr format\
+\* individual components of date and time can also be separated by a
+colon, slash etc.\
+\
+Bytes\
+\*Megabyte and Gigabyte conversions are human-readable rather than
+precise.
+
+#### Variable Join
+
+Join all the values in the array %ARR into a single simple variable with
+the given Joiner.\
+\
+Example: if %VAR1=\"I\", %VAR2=\"like\" and %VAR3=\"humus\", then after
+the action Join/%VAR/;/Yes there will be a single variable %VAR with the
+value \"I;like;humus\".\
+\
+Any missing indices in the array will be completely skipped.
+
+#### Variable Query
+
+Ask the user for a value via a popup dialog and assign it to the
+specified variable.\
+\
+Tip: if you specify the same variable for the Default parameter, your
+last input will be automatically filled in.
+
+#### Variable Randomize
+
+Set the variable Name to a random integer value between Min and Max
+(inclusive; the number could be Min or Max).
+
+#### Variable Search Replace
+
+Find parts of a variable which match a regular expression (regex) and
+optionally replace them with something else.\
+\
+Store Matches In specifies an array variable in which each successive
+part of the Variable contents which matches the **whole** Search
+parameter is stored.\
+\
+Replace With specifies what each matching part of the variable should be
+replaced with.\
+\
+See Pattern Matching in the Userguide for more info.
+
+#### Variable Section
+
+Select a particular section of a variable and throw away the rest.\
+\
+If Adapt To Fit is checked, the specified Length is changed, if it is
+too long, so that the selected section ends at the end of the original
+variable contents.
+
+#### Variable Set
+
+Set the variable Name to the value To.\
+\
+Name can be any desired string, however it\'s advisable to make it a
+sequence that does not commonly occur in text otherwise it will match at
+unexpected times.\
+\
+Names all in lower-case are *local* variables which are only visible in
+the current task.\
+\
+If Recurse Variables is checked, all variables mentioned in the To
+parameter will be repeatedly replaced until there are no variable names
+left, otherwise only one round of variable replacement will take place.\
+\
+If Append is checked, To is added to the existing value of the
+variable.\
+\
+If Do Maths is checked then at the time of assignment the value of To
+will be evaluated as a mathematical expression.\
+\
+e.g.\
+\
+Name: %FROG\
+\
+To: %VOLC + 1\
+\
+Assuming %VOLC is 8, if Do Maths is checked, %FROG will get the value
+\'9\', otherwise it will get the value \'8 + 1\'.\
+\
+If To cannot be numerically evaluated (e.g. it is \'cat + 3\') then the
+current task will terminate.\
+\
+See Also: Variables section in the Userguide.
+
+#### Variable Split
+
+Split the value of the given variable into several sub-variables.\
+\
+Each time Splitter is encountered in the variable value, a new variable
+is made with name %VARX.\
+\
+If Delete Base is selected, the original variable is removed after the
+split.\
+\
+Example: %VAR contains \"I;like;humus\". After the action
+Split/%VAR/;/Yes %VAR is replaced with 3 variables %VAR1, %VAR2 and
+%VAR3 containtin \"I\", \"like\" and \"humus\".
+
+#### Variable Subtract
+
+Decrease the value of the variable Name.\
+\
+The value is decreased by the integer By.\
+\
+If the variable does not contain a numeric value (e.g. 3) this action
+has no effect and a warning will be flashed.\
+\
+If the variable does not exist, it will first be created with a value of
+0.\
+\
+If the Wrap Around parameter is set and the result is below zero, it
+will wrap back to the Wrap Around value.\
+\
+See the section on Conditions and Loops in the Userguide for more
+information.\
+\
+Use action Variable Set for non-integer subtraction.
+
+#### Vibrate
+
+Activate the device\'s vibrator.\
+\
+The specified time is in milliseconds i.e. to vibrate for one second
+enter 1000, to vibrate for half a second enter 500.
+
+#### Vibrate On Notify
+
+Whether to vibrate with a system notification.\
+\
+Note: if you are going to use Tasker for this, it\'s probably best not
+to mix it with other methods of controlling the setting.\
+\
+See also: Notification Volume.
+
+#### Vibrate On Ringer
+
+Whether to vibrate on an incoming call.\
+\
+You\'re probably really looking for the action Audio / Silent Mode if
+you want to put your phone in vibrate or silent mode.\
+\
+Note: if silent/vibrate mode is engaged, this setting is overridden.\
+\
+Note: if you are going to use Tasker for this, it\'s probably best not
+to mix it with other methods of controlling the setting.\
+\
+See also: Ringer Volume.
+
+#### Vibrate Pattern
+
+Activate the device\'s vibrator in a pattern.\
+\
+Enter a comma-separated list of numbers. The 1st one is how long to be
+silent for, the 2nd one is how long to vibrate for and then
+alternating.\
+\
+Times are in milliseconds i.e. to vibrate for one second enter 1000, to
+vibrate for half a second enter 500.\
+\
+0 values are disallowed, excepting for the first value.
+
+#### Voice Command
+
+Run the system-default application for processing voice commands.\
+\
+Note: unlike the Get Voice action, the calling task will not wait for
+the voice command to be processed.
+
+#### Wait
+
+Stop executing the current Task for the specified amount of time.\
+\
+If another task becomes queued during the wait, the wait could end up
+being much longer than expected, depending on the other task\'s priority
+and actions.
+
+#### Wait Until
+
+Stop executing the current Task until the condition is met. Wait
+\*maximally\* the specified time between checks. The actual time between
+checks will vary because Tasker will opportunistically retest the
+condition at times when battery life will be unaffected.\
+\
+Note: a very small wait period might have battery life implications, in
+general it should be as large as is acceptable.
+
+#### WiFi
+
+Whether the WiFi radio is enabled or disabled.\
+\
+This action is ignored when Airplane Mode is on prior to Android 2.0. It
+also has no effect when a Wifi Tether (Hotspot) is enabled.\
+\
+Note: it\'s not usually advisable to use the Toggle setting when also
+using a Wifi Near state with Enable Wifi checked, since the action will
+then have different effects dependent on whether wifi has already been
+auto-enabled for a wifi scan or not.
+
+#### WiFi Net
+
+Change the wifi network connection status.\
+\
+Reassociate: reconnect even if already connected.\
+\
+Force: try to carry out the action even if the network status that
+Android reports is incompatible e.g. disconnect even if Android reports
+already disconnected.\
+\
+Report Failure: flash a short error message if the action fails. Note
+that Android might not e.g. report a disconnect failure if there is
+currently no connection.
+
+#### WiFi Sleep
+
+The policy for deciding when Wifi should go to sleep. When Wifi goes to
+sleep, the device will switch to using the mobile data connection.\
+\
+\\*Default*: depends on the Android version. Will be something like
+\'When the screen goes off\' or \'After 15 Minutes\'.\
+\
+*Never While Plugged*: When Screen Off if on battery power.
+
+#### WiFi Tether
+
+Turn on sharing of the device\'s Internet connection via wifi.\
+\
+If Wifi was on, it will be turned off, you will need to enable it
+manually after the tether.
+
+#### WiMax
+
+Whether the Wimax radio is enabled or disabled.
+
+#### WidgetLocker
+
+Info:\
+\
+http://teslacoilsw.com/widgetlocker\
+\
+Suspend: Keep WidgetLocker enabled/running, but prevent it from
+activating on screen off.
+
+#### Write Binary
+
+Write base 64 data from a variable to binary format in a file.\
+\
+See Also: actions Read Binary, Variable Convert
+
+#### Write File
+
+Write the specified text to the specified SD card file.\
+\
+If Append is checked, the text is added to the end of the file without
+changing the existing contents.\
+\
+A newline character is always appended to the text.
+
+#### Zip
+
+Compress the specified file(s) (or directory(ies), recursively) on the
+SD card to a zip archive,\
+\
+Multiple Files can be specified by separating them with a newline.\
+\
+If only a single file is specified and no Output Path is give, the
+Output Path will be the same file with a .zip extension.\
+\
+Level is the compression level to use. Higher values will take longer to
+compress but use less space.\
+\
+Specify Delete Orig to delete the original file if the compression
+succeeds.
+
+#### Zoom Alpha
+
+Set the alpha level of the specified Zoom image element.\
+\
+0 is invisible, 255 is fully visible.
+
+#### Zoom Colour
+
+Set the Colour and End Colour of the specified Zoom oval or rectangle
+element.\
+\
+End Colour is only used if a shading has been specified for the element
+in Zoom.
+
+#### Zoom Image
+
+Set the image source of the specified Zoom image element.
+
+#### Zoom Position
+
+Set the X and Y coordinates of the specified Zoom element, relative to
+the top-left corner of its widget.
+
+#### Zoom Size
+
+Set the width and height of the specified Zoom element.
+
+#### Zoom State
+
+Set the state of the specified Zoom element, which must be a Switcher or
+(more unusually) an AutoSwitcher.
+
+#### Zoom Text
+
+Set the text or label of the specified Zoom text or button element.
+
+#### Zoom Text Colour
+
+Set the text or label colour of the specified Zoom text or button
+element.
+
+#### Zoom Text Size
+
+Set the text or label size of the specified Zoom text or button element.
+
+#### Zoom Visibility
+
+Show or hide the specified Zoom element.
diff --git a/en/help/ah_input_method_select.md b/en/help/ah_input_method_select.md
new file mode 100644
index 0000000..fe85635
--- /dev/null
+++ b/en/help/ah_input_method_select.md
@@ -0,0 +1,9 @@
+### Input Method Select
+
+Show the Android Input Method picker dialog.\
+\
+If some methods you have installed are not shown, make sure they are
+enabled in Android settings.\
+\
+Note: unfortunately Android does not allow changing of the input method
+without user iteraction.
diff --git a/en/help/ah_interrupt_mode.md b/en/help/ah_interrupt_mode.md
new file mode 100644
index 0000000..33e0a53
--- /dev/null
+++ b/en/help/ah_interrupt_mode.md
@@ -0,0 +1,14 @@
+### Interrupt Mode
+
+Sets the interruption mode for the device i.e. whether notifications,
+alarms etc should interrupt the current activity.\
+\
+This action requires that Tasker\'s notification access service is
+running, see Android\'s Sound And Notification settings.\
+\
+Note that changes to Ringer, DTMF, Notification or System volume may
+knock the system out of mode \'none\'.\
+\
+Android 5.0+ only.\
+\
+See Also: variable %INTERRUPT.
diff --git a/en/help/ah_java_func.md b/en/help/ah_java_func.md
new file mode 100644
index 0000000..6755837
--- /dev/null
+++ b/en/help/ah_java_func.md
@@ -0,0 +1,5 @@
+### Java Function
+
+Execute a native Java function.\
+\
+See Java in the userguide.
diff --git a/en/help/ah_java_object.md b/en/help/ah_java_object.md
new file mode 100644
index 0000000..ba05cfe
--- /dev/null
+++ b/en/help/ah_java_object.md
@@ -0,0 +1,6 @@
+### Java Object
+
+Manipulate in some way a Java object previously created by the action
+Java Function.\
+\
+See Java in the userguide.
diff --git a/en/help/ah_javascript.md b/en/help/ah_javascript.md
new file mode 100644
index 0000000..221c678
--- /dev/null
+++ b/en/help/ah_javascript.md
@@ -0,0 +1,10 @@
+### JavaScript
+
+Run JavaScript from a file and wait till it finishes.\
+\
+Most Tasker actions are available via function calls.\
+\
+Warning: code in the file will have access to local device files, data
+stores etc\
+\
+See the JavaScript section of the Userguide for more information.
diff --git a/en/help/ah_javascriptlet.md b/en/help/ah_javascriptlet.md
new file mode 100644
index 0000000..d41b72e
--- /dev/null
+++ b/en/help/ah_javascriptlet.md
@@ -0,0 +1,7 @@
+### JavaScriptlet
+
+Run a piece of JavaScript and wait till it finishes.\
+\
+Most Tasker actions are available via function calls.\
+\
+See the JavaScript section of the Userguide for more information.
diff --git a/en/help/ah_jd_data.md b/en/help/ah_jd_data.md
new file mode 100644
index 0000000..4701b95
--- /dev/null
+++ b/en/help/ah_jd_data.md
@@ -0,0 +1,7 @@
+### Juice Defender Data
+
+Use the Juice Defender app to change Mobile Data APNs (in order to
+change mobile data connectivity).\
+\
+Juice Defender Control: Juice Defender decides whether to turn the APNs
+on or off.
diff --git a/en/help/ah_jd_status.md b/en/help/ah_jd_status.md
new file mode 100644
index 0000000..8f90506
--- /dev/null
+++ b/en/help/ah_jd_status.md
@@ -0,0 +1,4 @@
+### Juice Defender Status
+
+Turn the Juice Defender app on or off. Requires JD version 3.3.2 or
+higher.
diff --git a/en/help/ah_join_variable.md b/en/help/ah_join_variable.md
new file mode 100644
index 0000000..9c3d22a
--- /dev/null
+++ b/en/help/ah_join_variable.md
@@ -0,0 +1,10 @@
+### Variable Join
+
+Join all the values in the array %ARR into a single simple variable with
+the given Joiner.\
+\
+Example: if %VAR1=\"I\", %VAR2=\"like\" and %VAR3=\"humus\", then after
+the action Join/%VAR/;/Yes there will be a single variable %VAR with the
+value \"I;like;humus\".\
+\
+Any missing indices in the array will be completely skipped.
diff --git a/en/help/ah_keyboard.md b/en/help/ah_keyboard.md
new file mode 100644
index 0000000..01082e7
--- /dev/null
+++ b/en/help/ah_keyboard.md
@@ -0,0 +1,62 @@
+### Keyboard
+
+Make Tasker send keyboard presses to whatever app is in the foreground.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Input
+:::
+
+::: {.text}
+Comma separated list of key presses.
+:::
+
+::: {.text}
+The following formats are allowed for each key press:
+:::
+
+- **write(Some Text)**: will directly insert the text (in this case
+ **Some Text**) in a text box but only if a text box in an app has
+ focus
+- **replace(Some Text)**: will replace all the text in the focused
+ text box with the selected text (in this case **Some Text**)
+- **wait(400)**: will wait for the time (in this case **400 ms**)
+ before moving on to the next key press
+- **select(Some Text)**: will select the first occurrence of the text
+ (in this case **Some Text**) in a text box but only if a text box in
+ an app has focus
+- **selectPositions(1,10)**: will select the text in a focused text
+ box starting and ending in the selected positions (in this case
+ **start in 1** and **end in 10**)
+- **cursor(1)**: will set the cursor position (in this case **position
+ 1**) in a focused text box.
+- **selectAll()**: will select all the text in a focused text box.
+- **delete(Some Text)**: will delete the first occurrence of the text
+ (in this case **Some Text**) in a text box but only if a text box in
+ an app has focus
+- **deleteAll()**: will delete all the text in a focused text box.
+- **\'29\'**: will use the key code between single quotes (in this
+ case **29**, which corresponds to the **A** keycode) directly. Check
+ out all the standard keycodes
+ [here](https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_0).
+ Look for the **Constant Value** value of all the constants that
+ start with **KEYCODE\_**.
+- **Tab**: if none of the above special characters surround the key
+ press, the keycode corresponding to the text will be sent (in this
+ case, the **Tab** key will be sent). You can find a list of these by
+ using the magnifying glass near the **Input** field in this action.
+
+::: {.title}
+Modifiers
+:::
+
+::: {.text}
+The following modifiers are allowed for each key press (applies to
+custom key codes and direct key):
+:::
+
+- **Control+Shift+C**: will press **C**, with the **Control** and
+ **Shift** modifiers
+:::
+:::
diff --git a/en/help/ah_keyguard.md b/en/help/ah_keyguard.md
new file mode 100644
index 0000000..34498c2
--- /dev/null
+++ b/en/help/ah_keyguard.md
@@ -0,0 +1,23 @@
+### Keyguard
+
+Whether the keyguard is enabled or disabled.\
+\
+The keyguard is the dialog requiring some sort of unlock action when the
+device is turned on.\
+\
+Note: while keyguard is disabled, your SIM pin unlock screen may
+disappear after a few seconds after a reboot.\
+\
+WARNING: while keyguard is disabled, the \'lock pattern\' mechanism is
+also disabled, so your phone is unprotected if it is lost. There is also
+the possibility of interference with other applications that manipulate
+the keyguard.\
+\
+On Android 2.2+, this action should probably only be used when the
+device is on and unlocked, unless the unlock method in Android settings
+is set to None.\
+\
+Side-effect: coming out of Airplane Mode with Keyguard disabled may
+leave the SIM unrecognized until Keyguard is toggled again.\
+\
+See also: action Keyguard Pattern.
diff --git a/en/help/ah_keyguard_pattern.md b/en/help/ah_keyguard_pattern.md
new file mode 100644
index 0000000..8db9793
--- /dev/null
+++ b/en/help/ah_keyguard_pattern.md
@@ -0,0 +1,10 @@
+### Keyguard Pattern
+
+Control the lock pattern displayed by the Android keyguard. If the
+keyguard is disabled, no pattern is displayed even if the pattern is
+enabled.\
+\
+WARNING: behaviour is unknown if you enable the lock pattern without
+having first entered a pattern in Android settings.\
+\
+See also: action Keyguard.
diff --git a/en/help/ah_kill_app.md b/en/help/ah_kill_app.md
new file mode 100644
index 0000000..444ea35
--- /dev/null
+++ b/en/help/ah_kill_app.md
@@ -0,0 +1,13 @@
+### Kill App
+
+Stop the specified application.\
+\
+Android 2.2+: restarts an application\'s background services only.\
+\
+For other Android versions or if Use Root is selected: kills a running
+application and all its background services, notifications, alarms etc
+Note that Use Root can cause future malfunctioning of the target app if
+it e.g. is killed while writing data.\
+\
+Tip: may be more effective if the target app is not in the foreground,
+try using action Go Home first.
diff --git a/en/help/ah_list_apps.md b/en/help/ah_list_apps.md
new file mode 100644
index 0000000..7b4c36b
--- /dev/null
+++ b/en/help/ah_list_apps.md
@@ -0,0 +1,13 @@
+### List Apps
+
+List installed packages, apps and components in the specified array
+variable.\
+\
+Packages correspond to APK files.\
+\
+Each package can contain multiple apps (though usually there is only
+one) and multiple components of each of the four types.\
+\
+Only **enabled** and **exported** apps and components are listed.\
+\
+Apps and components are listed in the format PkgName:ClassName.
diff --git a/en/help/ah_list_files.md b/en/help/ah_list_files.md
new file mode 100644
index 0000000..1881290
--- /dev/null
+++ b/en/help/ah_list_files.md
@@ -0,0 +1,13 @@
+### List Files
+
+List the files contained in a specified directory in alphabetical
+order.\
+\
+If a Match is specified, only filename which match that pattern are
+included.\
+\
+The results are stored in the specified variable. The first file path is
+stored in %VAR1, the second in %VAR2 etc\
+\
+Note: when Use Root is selected, it may be necessary to specify an
+absolute path (starts with /) for Dir.
diff --git a/en/help/ah_load_app.md b/en/help/ah_load_app.md
new file mode 100644
index 0000000..377ab91
--- /dev/null
+++ b/en/help/ah_load_app.md
@@ -0,0 +1,20 @@
+### Launch App
+
+Launch the specified application.\
+\
+If Data is specified, it is passed to the application when launched. Not
+all applications examine the data field, however.\
+\
+If *Exclude From Recent Apps* is checked, the application will not
+appear in the recent apps list (usually accessed by long-clicking home
+in the Android launcher), unless it was already in the list.\
+\
+If Always Use New Copy is not checked, any existing copy of the app to
+be launched instead of a new copy.\
+\
+To change the application once you\'ve selected one, tap on the
+application icon.\
+\
+When selecting an app, you can long-click to select a sub-activity of
+the app. Note that often the app is not expecting a sub-activity to be
+launched directly and may crash.
diff --git a/en/help/ah_load_image.md b/en/help/ah_load_image.md
new file mode 100644
index 0000000..fbec1a9
--- /dev/null
+++ b/en/help/ah_load_image.md
@@ -0,0 +1,21 @@
+### Load Image
+
+Load an image into the image store, overwriting any image there
+previously.\
+\
+The image store is an image held in the device memory on which all
+actions from the Image category act.\
+\
+Once finished manipulating an image, it can be saved to a file with the
+Save Image action.\
+\
+However, it could also be used to e.g. directly set an image element in
+a scene.\
+\
+Max Width Or Height: if specified, the image is scaled as it is loaded
+so that no dimension is more than the specified number of pixels. Useful
+when memory is an issue.\
+\
+Respect EXIF Orientation: if the specified image is JPG format, it will
+be automatically adjusted after loading dependent on the EXIF meta-data
+tag, if present.
diff --git a/en/help/ah_load_last_app.md b/en/help/ah_load_last_app.md
new file mode 100644
index 0000000..13bbcfc
--- /dev/null
+++ b/en/help/ah_load_last_app.md
@@ -0,0 +1,3 @@
+### Load Last App
+
+Launch the previous foreground application.
diff --git a/en/help/ah_location_mode.md b/en/help/ah_location_mode.md
new file mode 100644
index 0000000..121b756
--- /dev/null
+++ b/en/help/ah_location_mode.md
@@ -0,0 +1,18 @@
+### Location Mode
+
+Set the type of Location tracking on your device
+
+- **Off**: Turn location tracking off
+- **Device Only**: Use GPS and device sensors to determine location
+- **Battery Saving**: Use Wi-Fi, Bluetooth, or mobile networks to
+ determine location
+- **High Accuracy**: Use GPS, Wi-Fi, Bluetooth, or mobile networks to
+ determine location
+
+### This is a Secure Setting
+
+To use this setting, Tasker needs to be granted permission to change
+secure settings on your device
+
+Please follow the [instructions](ah_secure_setting_grant.html) to learn
+how to grant the permission.
diff --git a/en/help/ah_lock.md b/en/help/ah_lock.md
new file mode 100644
index 0000000..71342e3
--- /dev/null
+++ b/en/help/ah_lock.md
@@ -0,0 +1,22 @@
+### Lock
+
+Show a lock screen.\
+\
+To continue, the specified code must be entered. Allow Cancel determines
+whether a Cancel button will be shown or not. If Cancel is pressed the
+user is taken back to the home screen.\
+\
+If Remember Till Off is selected, a correctly entered password will be
+remembered and reused until the device enters sleep mode.\
+\
+A common use is to lock particular applications.\
+\
+Consider locking this profile. That will prevent circumvention of this
+action\'s lock by changes within Tasker.\
+\
+Also consider attaching a Lock action to any application on your system
+which would allow removal of Tasker e.g. system Settings.\
+\
+In any case, this action should not considered as a replacement for the
+system Keyguard lock, as it is less secure. A reboot will remove the
+lock screen, for instance.
diff --git a/en/help/ah_make_dir.md b/en/help/ah_make_dir.md
new file mode 100644
index 0000000..2711680
--- /dev/null
+++ b/en/help/ah_make_dir.md
@@ -0,0 +1,8 @@
+### Create Directory
+
+Create an SD card directory.\
+\
+If Create All is specified, all of the directories above the specified
+one will be created if necessary.\
+\
+The path starts in the root directory of the SD card.
diff --git a/en/help/ah_make_phonecall.md b/en/help/ah_make_phonecall.md
new file mode 100644
index 0000000..fbeffd6
--- /dev/null
+++ b/en/help/ah_make_phonecall.md
@@ -0,0 +1,6 @@
+### Call
+
+Bring up the dialer screen with the specified phone number filled in.\
+\
+Commas and Semi-Colons terminate the number currently, this is filed as
+an Android bug.
diff --git a/en/help/ah_menu.md b/en/help/ah_menu.md
new file mode 100644
index 0000000..dcda8d8
--- /dev/null
+++ b/en/help/ah_menu.md
@@ -0,0 +1,18 @@
+### Menu
+
+Show a selection dialog and perform a different action depending on
+which item the user selects.\
+\
+The Layout parameter specifies the look of all the items. Click to edit
+it.\
+\
+The Items parameter specifies the content of each item.\
+\
+The selected item label and index are available in the resulting task in
+%tap\_label and %tap\_index respectively.\
+\
+If the user does not explicity select an item then when the specified
+Timeout is reached the item with a checkmark will be automatically
+selected.\
+\
+More info: Menu element in the Userguide.
diff --git a/en/help/ah_mic_mute.md b/en/help/ah_mic_mute.md
new file mode 100644
index 0000000..bb18de0
--- /dev/null
+++ b/en/help/ah_mic_mute.md
@@ -0,0 +1,3 @@
+### Mic Mute
+
+Mute the device\'s microphone.
diff --git a/en/help/ah_midi_play.md b/en/help/ah_midi_play.md
new file mode 100644
index 0000000..f895174
--- /dev/null
+++ b/en/help/ah_midi_play.md
@@ -0,0 +1,5 @@
+### MIDI Play
+
+Play notes on a MIDI instrument attached by USB.\
+\
+For details, see MIDI in the userguide.
diff --git a/en/help/ah_mms_compose.md b/en/help/ah_mms_compose.md
new file mode 100644
index 0000000..682a792
--- /dev/null
+++ b/en/help/ah_mms_compose.md
@@ -0,0 +1,4 @@
+### Compose MMS
+
+Launch an application to compose an MMS from optional predefined
+elements.
diff --git a/en/help/ah_mobile_data_apn.md b/en/help/ah_mobile_data_apn.md
new file mode 100644
index 0000000..80d0b4f
--- /dev/null
+++ b/en/help/ah_mobile_data_apn.md
@@ -0,0 +1,17 @@
+### APN Droid
+
+Enable or disable mobile data by changing APN data.\
+\
+This action requires that the application APNDroid is installed on your
+device.\
+\
+It apparently does \*not\* work for CDMA phones e.g. Motorola Droid, try
+the Mobile Data action instead.\
+\
+If you have trouble reconnecting after using this action, use the
+\'Reset to Default\' menu item in the APNs screen of Android Settings.\
+\
+Warning: APNDroid v2.5+: the Tasker action seems \*not\* to affect the
+new APNDroid data toggle. If you use Tasker with APNDroid 2.5+, it\'s
+recommended that you \*disable\* the \'Use system toggle\' option in
+system settings to prevent confusion.
diff --git a/en/help/ah_mobile_data_direct.md b/en/help/ah_mobile_data_direct.md
new file mode 100644
index 0000000..6c729bd
--- /dev/null
+++ b/en/help/ah_mobile_data_direct.md
@@ -0,0 +1,14 @@
+### Mobile Data
+
+Set mobile data status without affecting incoming calls.\
+\
+This action has the disadvantage that Android may manipulate it
+internally when certain things happen e.g. wifi disconnected.\
+\
+Note: this action requires that Mobile Data is intitially turned \*on\*
+in Android System Settings.\
+\
+When Mobile Data is \*off\* in System Settings, this action will have no
+effect.\
+\
+It has been reported that many Google apps reenable the setting.
diff --git a/en/help/ah_mobile_network_mode.md b/en/help/ah_mobile_network_mode.md
new file mode 100644
index 0000000..8063d55
--- /dev/null
+++ b/en/help/ah_mobile_network_mode.md
@@ -0,0 +1,5 @@
+### Mobile Data 2G/3G
+
+Setting the mode to 2G only will save power at the cost of speed.\
+\
+This action is not possible on a standard Android ROM.
diff --git a/en/help/ah_morse.md b/en/help/ah_morse.md
new file mode 100644
index 0000000..533b9c8
--- /dev/null
+++ b/en/help/ah_morse.md
@@ -0,0 +1,11 @@
+### Morse
+
+Play morse code representing the given Text.\
+\
+Amplitude is the percentage of maximum amplitude. The system volume
+setting for the selected output stream will also affect the perceived
+volume.\
+\
+Non-latin characters are not supported.\
+\
+Note: Frequency is not on a Hertz scale.
diff --git a/en/help/ah_move_file.md b/en/help/ah_move_file.md
new file mode 100644
index 0000000..283add9
--- /dev/null
+++ b/en/help/ah_move_file.md
@@ -0,0 +1,10 @@
+### Move
+
+Move an SD card file or directory to a new directory.\
+\
+If To specifies an existing file, it will be overwritten.\
+\
+The paths start in the root directory of the SD card.\
+\
+Note: files cannot be moved from one file system to another e.g.
+internal memory to SD. A workaround is to Copy and then Delete.
diff --git a/en/help/ah_music_back.md b/en/help/ah_music_back.md
new file mode 100644
index 0000000..7c7288b
--- /dev/null
+++ b/en/help/ah_music_back.md
@@ -0,0 +1,6 @@
+### Music Back
+
+Jump backwards in a sound file which was previously started with Play
+Music.\
+\
+Jump value is in seconds.
diff --git a/en/help/ah_music_forward.md b/en/help/ah_music_forward.md
new file mode 100644
index 0000000..de1de18
--- /dev/null
+++ b/en/help/ah_music_forward.md
@@ -0,0 +1,6 @@
+### Music Skip
+
+Jump forward in a sound file which was previously started with Play
+Music.\
+\
+Jump value is in seconds.
diff --git a/en/help/ah_music_play.md b/en/help/ah_music_play.md
new file mode 100644
index 0000000..bca18d4
--- /dev/null
+++ b/en/help/ah_music_play.md
@@ -0,0 +1,19 @@
+### Music Play
+
+Play a sound file from the SD card.\
+\
+File is the path to the file on the SD card e.g. Music/wow.mp3\
+\
+If Loop is selected, the playback will restart when it reaches the end
+of the file.\
+\
+Start specifies how many seconds into the track to begin playing.\
+\
+You can stop the playback before it is finished with the Stop Music
+action.\
+\
+You can start playback from the start by repeating the action\
+\
+Playback has been tested with 3gp, mp3 and wma formats.\
+\
+See also: variable Music Track
diff --git a/en/help/ah_music_play_dir.md b/en/help/ah_music_play_dir.md
new file mode 100644
index 0000000..ffcd4d7
--- /dev/null
+++ b/en/help/ah_music_play_dir.md
@@ -0,0 +1,16 @@
+### Music Play Dir
+
+Play music files from the specified SD card directory.\
+\
+If Audio Only is selected, only files with the following extensions will
+be played: 3gp, mp3, wma, au, mid, midi, mp2, ogg, wav.\
+\
+If Random is selected, files will be played in random order.\
+\
+You can stop the playback before it is finished with the Stop Music
+action.\
+\
+Doing the same action on the same directory will move playback to the
+next file. If you want to start afresh, use Music Stop first.\
+\
+See also: variable Music Track.
diff --git a/en/help/ah_music_stop.md b/en/help/ah_music_stop.md
new file mode 100644
index 0000000..caf042f
--- /dev/null
+++ b/en/help/ah_music_stop.md
@@ -0,0 +1,7 @@
+### Music Stop
+
+Stop playback of a sound file or directory which was previously started
+with Play Music.\
+\
+If Clear Dir is specified and a directory was being played, next time
+Music Play is used the playback will start from the first file.
diff --git a/en/help/ah_music_volume.md b/en/help/ah_music_volume.md
new file mode 100644
index 0000000..016b246
--- /dev/null
+++ b/en/help/ah_music_volume.md
@@ -0,0 +1,9 @@
+### Media Volume
+
+Volume level during media playback.\
+\
+Setting to 0 will mute music.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.
diff --git a/en/help/ah_navigation_bar.md b/en/help/ah_navigation_bar.md
new file mode 100644
index 0000000..c934221
--- /dev/null
+++ b/en/help/ah_navigation_bar.md
@@ -0,0 +1,40 @@
+### Navigation Bar
+
+Change the buttons on the Android navigation bar that\'s usually at the
+bottom of the screen. To bring back the default buttons, run the action
+with all blank fields.
+
+### This is a Secure Setting
+
+To use this setting, Tasker needs to be granted permission to change
+secure settings on your device
+
+Please follow the [instructions](ah_secure_setting_grant.html) to learn
+how to grant the permission.
+
+#### Important Note
+
+If for some reason **System UI** crashes while using this action, use
+the following adb command to reset the navigation bar:
+
+``` {.small}
+adb shell settings delete secure sysui_nav_bar
+```
+
+This will make the navigation bar back to what it was and make it stop
+crashing.
+
+If you can, re-configure the action and leave all the fields empty and
+run it. That should make it reset as well.
+
+#### Unsupported Devices
+
+This action may not work on all devices. These are the ones that I\'ve
+confirmed are not working correctly:
+
+- Some (all?) OnePlus devices
+- Some (all?) LG devices
+- Huawei P20 Lite
+- Probably a lot (if not all) of Huawei devices
+
+Other devices may also not be compatible
diff --git a/en/help/ah_network_access.md b/en/help/ah_network_access.md
new file mode 100644
index 0000000..1683537
--- /dev/null
+++ b/en/help/ah_network_access.md
@@ -0,0 +1,19 @@
+### Network Access
+
+Deny network access to all or selected apps.\
+\
+When mode Deny is selected, all apps have network access except for
+those specified.\
+\
+When mode Allow is selected, only the specified apps have access.\
+\
+Use of this action overrides and replaces the effects of any previous
+use.\
+\
+Notes:\
+\* this action is implemented via a VPN local to the device and cannot
+be used in combination with other VPNs.\
+\* some devices will clear the users confirmation of Tasker\'s
+permission to setup a VPN after every boot\
+\* the icon which Android shows in the status bar cannot be avoided\
+\* Tasker does not examine the contents of any network packet
diff --git a/en/help/ah_newsrob.md b/en/help/ah_newsrob.md
new file mode 100644
index 0000000..dba918f
--- /dev/null
+++ b/en/help/ah_newsrob.md
@@ -0,0 +1,5 @@
+### NewsRob
+
+Info:\
+\
+http://newsrob.com
diff --git a/en/help/ah_nfc_status.md b/en/help/ah_nfc_status.md
new file mode 100644
index 0000000..3882a95
--- /dev/null
+++ b/en/help/ah_nfc_status.md
@@ -0,0 +1,3 @@
+### NFC
+
+Enable or disable your NFC sensor
diff --git a/en/help/ah_nfc_tag.md b/en/help/ah_nfc_tag.md
new file mode 100644
index 0000000..f247c58
--- /dev/null
+++ b/en/help/ah_nfc_tag.md
@@ -0,0 +1,48 @@
+#### NFC Tag
+
+Allows you to read and/or write data from and to an NFC Tag.
+
+You have a list of pre-defined variables that this action will create.
+These are visible in the configuration screen.
+
+Check out [this video
+example](https://www.youtube.com/watch?v=PMbj7bRoSKI) to see this in
+action.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Payload To Write
+:::
+
+::: {.text}
+Optionally allows you to write data to the tag. If you leave this empty,
+data will just be read. Select different **Payload Types** and then use
+the magnifying glass to help selecting a payload for the selected type.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Payload Type
+:::
+
+::: {.text}
+Optinally set a type for the payload. If none is set, the **Text** type
+will be automatically used.
+:::
+
+::: {.text}
+Different Payload Types will have different behaviours when the tag is
+later scanned:
+:::
+
+- **Text**: The system will not react to this. You\'ll have to
+ implement your own behaviour by using the **NFC Tag Event**.
+- **Application**: The system will automatically open the selected
+ app, even on a device that doesn\'t have Tasker installed.
+- **Uri**: The system will automatically open the selected Uri (like a
+ web URL for example), even on a device that doesn\'t have Tasker
+ installed.
+:::
+:::
diff --git a/en/help/ah_night_mode.md b/en/help/ah_night_mode.md
new file mode 100644
index 0000000..81a4157
--- /dev/null
+++ b/en/help/ah_night_mode.md
@@ -0,0 +1,7 @@
+### Night Mode
+
+Change Android\'s Night Mode setting.\
+\
+Only effective when Android\'s UI Mode is Car or Desk.\
+\
+Requires Android 2.2+
diff --git a/en/help/ah_notification.md b/en/help/ah_notification.md
new file mode 100644
index 0000000..74562e7
--- /dev/null
+++ b/en/help/ah_notification.md
@@ -0,0 +1,71 @@
+### Notify
+
+Show a notification on the top bar.\
+\
+The specified Title will appear on the bar initially with the Icon.\
+\
+Notifications with a particular (non-empty) title replace existing ones
+with that title.\
+\
+When the notification area is pulled down, the specified Text will be
+visible.\
+\
+If Permanent is checked, the notification will not be removed by
+clicking on it or pressing the Clear button. It \*can\* be removed using
+the Notify Cancel action.\
+\
+A common use of creating a permanent notification is to allow permanent
+quick access to e.g. a Menu Task through the Notification Bar. Specify a
+task to run when the notification is clicked by creating a profile with
+a Notification Click event.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions. Actions do not run as part of the notifying task.
+
+#### BETA ONLY
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Category
+:::
+
+::: {.text}
+If you use Android 8 or above you have to use the new **Notification
+Category** system.
+:::
+
+::: {.text}
+A notification category is a mandatory feature of notifications that
+allows users to change notification features in Android Settings.
+:::
+
+::: {.text}
+The first time the **Category** field is used in a **Notify** action,
+the category will be created in Android Settings with the settings
+(Sound, Vibration, LED, etc) set to those that are configured in the
+action. Subsequent uses of the same category will use the same settings,
+even if changed in the Tasker action.
+:::
+
+::: {.text}
+To make it perfectly clear, an Android Notification Category\'s settings
+can never be changed by Tasker after it\'s first created. Only you, the
+user, can change those settings in the Android System Settings for
+Tasker.
+:::
+
+::: {.text}
+By default Tasker will use the **User Notifications** category if the
+**Category** field is not filled in.
+:::
+
+::: {.text}
+You will be warned if you create a notification without a category
+because, as mentioned above, the **User Notifications** category will be
+used and that category will be set up with default settings that can not
+be changed by Tasker.
+:::
+:::
+:::
diff --git a/en/help/ah_notification_led.md b/en/help/ah_notification_led.md
new file mode 100644
index 0000000..f8af808
--- /dev/null
+++ b/en/help/ah_notification_led.md
@@ -0,0 +1,26 @@
+### Notify LED
+
+Show a notification on the top bar and flash an LED.\
+\
+The specified title will appear on the bar initially. Notifications with
+a particular (non-empty) title replace existing ones with that title.\
+\
+When the notification area is pulled down, the specified text will be
+visible.\
+\
+A Number other than 0 causes that number to be included in the
+notification area.\
+\
+Rate is the number of milliseconds the LED will flash on and then again
+be off. It must be at least 1.\
+\
+Not all devices support all colours. Many devices will only support red
+and green. In general, colours near the top of the list are more likely
+to be supported.\
+\
+Some devices will only flash the LED when the device is off at the time
+the notification is received.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions. Actions do not run as part of the notifying task.
diff --git a/en/help/ah_notification_pulse.md b/en/help/ah_notification_pulse.md
new file mode 100644
index 0000000..de7ac3c
--- /dev/null
+++ b/en/help/ah_notification_pulse.md
@@ -0,0 +1,4 @@
+### Notification Pulse
+
+Android system setting, whether to pulse the notification light for new
+notifications.
diff --git a/en/help/ah_notification_settings.md b/en/help/ah_notification_settings.md
new file mode 100644
index 0000000..e1ea3a9
--- /dev/null
+++ b/en/help/ah_notification_settings.md
@@ -0,0 +1,35 @@
+#### Notification Settings
+
+Allows you to open an app\'s notification settings screen.
+
+You can optionally provide a notification category, so that the screen
+opens directly on that.
+
+Unfortunately it\'s not possible for Tasker to get other app\'s
+notification categories.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Package
+:::
+
+::: {.text}
+The app\'s package name. If left blank, the current package name will be
+used, which means that if you\'re in an App Factory app, that app\'s
+package name will be used, if not Tasker\'s package name will be used.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Category
+:::
+
+::: {.text}
+If set, will open the specific category instead of the notification
+settings overview screen for the app. Only available for Android 8 or
+above.
+:::
+:::
+:::
diff --git a/en/help/ah_notification_sound.md b/en/help/ah_notification_sound.md
new file mode 100644
index 0000000..b2b084c
--- /dev/null
+++ b/en/help/ah_notification_sound.md
@@ -0,0 +1,19 @@
+### Notify Sound
+
+Show a notification on the top bar and play a sound.\
+\
+The specified Title will appear on the bar initially. Notifications with
+a particular (non-empty) title replace existing ones with that title.\
+\
+When the notification area is pulled down, the specified Text will be
+visible.\
+\
+A Number other than 0 causes that number to be superimposed on the
+notification icon.\
+\
+Music File specifies a file location on the sdcard e.g. music/hello.mp3.
+If it\'s blank, the default notification sound will play.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions.
diff --git a/en/help/ah_notification_vibrate.md b/en/help/ah_notification_vibrate.md
new file mode 100644
index 0000000..410aad6
--- /dev/null
+++ b/en/help/ah_notification_vibrate.md
@@ -0,0 +1,22 @@
+### Notify Vibrate
+
+Show a notification on the top bar and vibrate.\
+\
+The specified Title will appear on the bar initially. Notifications with
+a particular (non-empty) title replace existing ones with that title.\
+\
+When the notification area is pulled down, the specified Text will be
+visible.\
+\
+A Number other than 0 causes that number to be included in the
+notification area.\
+\
+Pattern: enter a comma-separated list of numbers. The 1st one is how
+long to be silent for, the 2nd one how long to vibrate for and then
+alternating.\
+\
+Specify no pattern to use the default pattern.\
+\
+Up to 3 Actions can be specified which will appear in the notification
+area. In some cases it may be necessary to slide down to reveal the
+actions Actions do not run as part of the notifying task..
diff --git a/en/help/ah_notification_volume.md b/en/help/ah_notification_volume.md
new file mode 100644
index 0000000..0981cdb
--- /dev/null
+++ b/en/help/ah_notification_volume.md
@@ -0,0 +1,13 @@
+### Notification Volume
+
+Volume level of notification alert.\
+\
+Setting to 0 will mute the notification sound.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.\
+\
+Note: on some devices Notification and Ringer volume are linked,
+changing one will change the other. There may be an Android setting for
+controlling that behaviour.
diff --git a/en/help/ah_open_map.md b/en/help/ah_open_map.md
new file mode 100644
index 0000000..6ec5295
--- /dev/null
+++ b/en/help/ah_open_map.md
@@ -0,0 +1,17 @@
+### Open Map
+
+Launches Google Maps with a particular mode and location/destination.\
+\
+Exactly one of Address or Lat/Long must be specified. Address is not
+valid for StreetView mode.\
+\
+Address is in the format X+Y+Z e.g. Littleton+Delaware\
+\
+Zoom is only possible with Point / StreetView and a Lat/Long
+specification.\
+\
+Label is only possible with Point mode, it will show a marker with the
+specified label.\
+\
+Google Maps version 3.2.1 or higher is (probably) required for
+Navigation.
diff --git a/en/help/ah_ping.md b/en/help/ah_ping.md
new file mode 100644
index 0000000..cd3a383
--- /dev/null
+++ b/en/help/ah_ping.md
@@ -0,0 +1,11 @@
+### Ping
+
+Tests the connection and latency between you and the specified host.
+
+**Number** is the number of times it\'ll ping the host
+
+If **Number** is set to **1** the 3 result variables will have the same
+value.
+
+If there is no internet connection or the host can\'t be reached the
+action will end in an error.
diff --git a/en/help/ah_play_ringtone.md b/en/help/ah_play_ringtone.md
new file mode 100644
index 0000000..3f26dd1
--- /dev/null
+++ b/en/help/ah_play_ringtone.md
@@ -0,0 +1,13 @@
+### Play Ringtone
+
+Play an alarm, notification or ringer ringtone throught the specified
+audio stream.\
+\
+If no Sound is specified, the current default tone of the specified Type
+will be played.\
+\
+Note: the task will not wait for the ringtone to complete before
+continuing.\
+\
+Note: in some Android versions ringtones will endlessly loop due to an
+Android bug.
diff --git a/en/help/ah_plugin.md b/en/help/ah_plugin.md
new file mode 100644
index 0000000..1a0496d
--- /dev/null
+++ b/en/help/ah_plugin.md
@@ -0,0 +1,11 @@
+### Plugin
+
+Runs the specified action plugin.\
+\
+Timeout specifies how long Tasker should wait for the plugin to finish.
+**None** indicates that Tasker will proceed immediately to the next
+action in the task.\
+\
+Warning: data you enter in the plugin configuration screen is collected
+by the \*plugin\*, not by Tasker. If the plugin has Internet permissions
+it could e.g. transmit your data to third-parties.
diff --git a/en/help/ah_poke_display.md b/en/help/ah_poke_display.md
new file mode 100644
index 0000000..98b3cf4
--- /dev/null
+++ b/en/help/ah_poke_display.md
@@ -0,0 +1,9 @@
+### Turn On
+
+If the display is off, it will be turned on.
+
+#### Block Time
+
+When the screen is turned on, screen will be blocked for this many
+milliseconds. In most cases the default value should work, but if it
+doesn\'t work on your device, try using a higher value.
diff --git a/en/help/ah_popup.md b/en/help/ah_popup.md
new file mode 100644
index 0000000..24cf269
--- /dev/null
+++ b/en/help/ah_popup.md
@@ -0,0 +1,6 @@
+### Popup
+
+Show a popup box with a message.\
+\
+The popup will dissappear after the specified number of seconds or if
+its text is tapped.
diff --git a/en/help/ah_popup_task_buttons.md b/en/help/ah_popup_task_buttons.md
new file mode 100644
index 0000000..14a9844
--- /dev/null
+++ b/en/help/ah_popup_task_buttons.md
@@ -0,0 +1,7 @@
+### Popup Task Buttons
+
+Show a popup box with a message and 1-3 buttons with Task names, icons
+or both.\
+\
+If one of the buttons is clicked, the popup exits and the relevant task
+is performed.
diff --git a/en/help/ah_power_mode.md b/en/help/ah_power_mode.md
new file mode 100644
index 0000000..2db3cbd
--- /dev/null
+++ b/en/help/ah_power_mode.md
@@ -0,0 +1,12 @@
+### Power Mode
+
+Set the system power mode.\
+\
+
+### This is a Secure Setting
+
+To use this setting, Tasker needs to be granted permission to change
+secure settings on your device
+
+Please follow the [instructions](ah_secure_setting_grant.html) to learn
+how to grant the permission.
diff --git a/en/help/ah_query_variable.md b/en/help/ah_query_variable.md
new file mode 100644
index 0000000..38822bd
--- /dev/null
+++ b/en/help/ah_query_variable.md
@@ -0,0 +1,7 @@
+### Variable Query
+
+Ask the user for a value via a popup dialog and assign it to the
+specified variable.\
+\
+Tip: if you specify the same variable for the Default parameter, your
+last input will be automatically filled in.
diff --git a/en/help/ah_quick_setting_add.md b/en/help/ah_quick_setting_add.md
new file mode 100644
index 0000000..f9e1205
--- /dev/null
+++ b/en/help/ah_quick_setting_add.md
@@ -0,0 +1,11 @@
+### Quick Setting Add
+
+Add a custom tile to the system Quick Settings panel.\
+\
+If Items are specified, then when the icon is clicked they will be shown
+in a menu.\
+\
+If **no** Items are specified, a click on the tile can be detected via
+the event Quick Setting Clicked.\
+\
+Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support.
diff --git a/en/help/ah_quick_setting_remove.md b/en/help/ah_quick_setting_remove.md
new file mode 100644
index 0000000..746d074
--- /dev/null
+++ b/en/help/ah_quick_setting_remove.md
@@ -0,0 +1,8 @@
+### Quick Setting Remove
+
+Remove a custom tile previously added to the system Quick Settings panel
+with action Quick Setting Add.\
+\
+It is not classified as an error if the tile did not previously exist.\
+\
+Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support.
diff --git a/en/help/ah_radio_status.md b/en/help/ah_radio_status.md
new file mode 100644
index 0000000..078b56a
--- /dev/null
+++ b/en/help/ah_radio_status.md
@@ -0,0 +1,6 @@
+### Radio
+
+Set the status of the phone radio.\
+\
+Warning: turning off the phone radio will prevent outgoing/incoming
+calls and mobile data transfer.
diff --git a/en/help/ah_read_binary.md b/en/help/ah_read_binary.md
new file mode 100644
index 0000000..9d89ccc
--- /dev/null
+++ b/en/help/ah_read_binary.md
@@ -0,0 +1,12 @@
+### Read Binary
+
+Read binary data (e.g. image data) from the specified file into a
+variable in base 64 format.\
+\
+Base 64 is a textual format meaning it is safe for use where pure binary
+data may not be.\
+\
+Base 64 can have various formats: that used by Tasker has regular line
+terminators and potentially ends with padding characters (=).\
+\
+See Also: actions Write Binary, Variable Convert
diff --git a/en/help/ah_read_file.md b/en/help/ah_read_file.md
new file mode 100644
index 0000000..4bfaf14
--- /dev/null
+++ b/en/help/ah_read_file.md
@@ -0,0 +1,6 @@
+### Read File
+
+Read a text file into a variable.\
+\
+Don\'t try to read a non-text file with this, the results will probably
+be disastrous
diff --git a/en/help/ah_read_file_part.md b/en/help/ah_read_file_part.md
new file mode 100644
index 0000000..6b947fd
--- /dev/null
+++ b/en/help/ah_read_file_part.md
@@ -0,0 +1,21 @@
+### Read Line / Read Paragraph
+
+Read a record (a line or paragraph) from a text file.\
+\
+Line/Paragraph is the name of a variable containing the record number to
+read. If unspecified, the record after the previously read one \*in that
+file\* is read. A variable is used in place of a number here to permit
+e.g. reading a random record via the Variable Randomize action.\
+\
+If the end of the file was reached before the specified record number
+was found, it will contain the value EOF. The next line number then
+resets to 1.\
+\
+Blank lines and any newline character at the end of a file are always
+ignored.\
+\
+Don\'t try to read a non-text file with this, the results will probably
+be disastrous.\
+\
+The action is not very efficient for reading all the records in a file,
+since it starts from the beginning each time.
diff --git a/en/help/ah_reboot.md b/en/help/ah_reboot.md
new file mode 100644
index 0000000..b8b68dd
--- /dev/null
+++ b/en/help/ah_reboot.md
@@ -0,0 +1,10 @@
+### Reboot
+
+Reboot (or just shutdown) the device.\
+\
+Unfortunately, this is not a \'clean\' shutdown. Neither Android nor
+running applications are informed that the device is rebooting, so be
+prepared for possible data corruption.\
+\
+On the other hand, every other app that allows reboot does it the same
+way.
diff --git a/en/help/ah_remount.md b/en/help/ah_remount.md
new file mode 100644
index 0000000..f4ab743
--- /dev/null
+++ b/en/help/ah_remount.md
@@ -0,0 +1,8 @@
+### Remount
+
+Remount a file system read-write or read-only.\
+\
+Warning: it\'s inadvisable to\
+\
+\* use this action unless you know what you are doing\
+\* leave /system writeable for long periods
diff --git a/en/help/ah_resize_image.md b/en/help/ah_resize_image.md
new file mode 100644
index 0000000..2a1b8b4
--- /dev/null
+++ b/en/help/ah_resize_image.md
@@ -0,0 +1,9 @@
+### Resize Image
+
+Resize and scale the image currently in the image store.\
+\
+Specifying a value of 0 for one of Width or Height will cause that
+dimension to be scaled proportionally with the other dimension so as to
+keep the original aspect ratio of the image.\
+\
+See also: Load Image.
diff --git a/en/help/ah_return.md b/en/help/ah_return.md
new file mode 100644
index 0000000..2822b2c
--- /dev/null
+++ b/en/help/ah_return.md
@@ -0,0 +1,14 @@
+### Return
+
+Return a value to the parent of this task i.e. the one that started it
+via Perform Task.\
+\
+The parent task must have started it\'s child at equal or higher
+priority and have specified a Return Value Variable in it\'s Perform
+Task action, which will then be set to the Value specified in this
+Return action.\
+\
+If Stop is checked, this task (the child) will terminate after returning
+the Value to the parent.\
+\
+See Flow Control in the Userguide for more info.
diff --git a/en/help/ah_revert_phonecalls.md b/en/help/ah_revert_phonecalls.md
new file mode 100644
index 0000000..1203b6e
--- /dev/null
+++ b/en/help/ah_revert_phonecalls.md
@@ -0,0 +1,10 @@
+### Call Revert
+
+Stop blocking or diverting calls to to the specified number.\
+\
+If no number is specified, all blocks and diversions will be cancelled.\
+\
+If Info is checked, all diversions and blocks will be displayed after
+the action.\
+\
+See also: Block Calls, Divert Calls
diff --git a/en/help/ah_ringer_mode.md b/en/help/ah_ringer_mode.md
new file mode 100644
index 0000000..bbec317
--- /dev/null
+++ b/en/help/ah_ringer_mode.md
@@ -0,0 +1,13 @@
+### Sound Mode
+
+Only works correctly on some devices (like Samsung for example)
+
+**Do not disturb** settings on the phone may override this in some
+situations
+
+- **Sound**: Your phone uses the sounds, vibrations, and volume levels
+ you have chosen in Sound settings for notifications and alerts.
+- **Vibrate**: Your phone vibrates for notifications and alerts. This
+ uses the Vibration intensity you choose in Sound settings.
+- **Mute**: Your phone plays no sounds or vibrations. Onscreen
+ reminders will still occur.
diff --git a/en/help/ah_ringer_vibrate.md b/en/help/ah_ringer_vibrate.md
new file mode 100644
index 0000000..3d87a67
--- /dev/null
+++ b/en/help/ah_ringer_vibrate.md
@@ -0,0 +1,13 @@
+### Vibrate On Ringer
+
+Whether to vibrate on an incoming call.\
+\
+You\'re probably really looking for the action Audio / Silent Mode if
+you want to put your phone in vibrate or silent mode.\
+\
+Note: if silent/vibrate mode is engaged, this setting is overridden.\
+\
+Note: if you are going to use Tasker for this, it\'s probably best not
+to mix it with other methods of controlling the setting.\
+\
+See also: Ringer Volume.
diff --git a/en/help/ah_ringer_volume.md b/en/help/ah_ringer_volume.md
new file mode 100644
index 0000000..79444ca
--- /dev/null
+++ b/en/help/ah_ringer_volume.md
@@ -0,0 +1,14 @@
+### Ringer Volume
+
+Volume level of phone ringer.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.\
+\
+If you want to put your phone in vibrate or silent mode, use action
+Audio / Silent Mode, not this.\
+\
+Note: on some devices Notification and Ringer volume are linked,
+changing one will change the other. There may be an Android setting for
+controlling that behaviour.
diff --git a/en/help/ah_ringtone.md b/en/help/ah_ringtone.md
new file mode 100644
index 0000000..d6a2dad
--- /dev/null
+++ b/en/help/ah_ringtone.md
@@ -0,0 +1,13 @@
+### Default Ringtone
+
+Sets the default ringtone for alarms, notifications or the ringer.\
+\
+Music files you place in /sdcard/media/ringtones/ will be included in
+the selection list for the Ringer ringtone, similarly for Notification
+and Alarm ringtones. You may have to create the folders first.\
+\
+An easier way to use SD card audio files as ringtones is to install a
+tone picker application e.g. Tone Picker.\
+\
+You can also just put the title of the track in the box if it matches
+the title of an audio track you have on SD.
diff --git a/en/help/ah_rotate_image.md b/en/help/ah_rotate_image.md
new file mode 100644
index 0000000..ef2fb75
--- /dev/null
+++ b/en/help/ah_rotate_image.md
@@ -0,0 +1,5 @@
+### Rotate Image
+
+Rotate the image currently in the image store.\
+\
+See also: Load Image.
diff --git a/en/help/ah_run_action.md b/en/help/ah_run_action.md
new file mode 100644
index 0000000..5fd874b
--- /dev/null
+++ b/en/help/ah_run_action.md
@@ -0,0 +1,12 @@
+### Query Action
+
+Get details of an action to run, then run it.\
+\
+If Action is specified, only the parameters will be queried. This is a
+very useful action to assign to a home screen widget, since it allows
+you to easily execute any of Tasker\'s actions without having to set up
+a profile etc first.\
+\
+Wait and Wait Until actions cannot be queried. As a workaround, you
+could query for a variable and then then Wait in the next action of the
+task using the variable value.
diff --git a/en/help/ah_run_script.md b/en/help/ah_run_script.md
new file mode 100644
index 0000000..564252b
--- /dev/null
+++ b/en/help/ah_run_script.md
@@ -0,0 +1,11 @@
+### Run SL4A Script
+
+Run the named Scripting Layer for Android (SL4A) script.\
+\
+Every file in /sdcard/sl4a/scripts is expected to be a script.\
+\
+More information: http://code.google.com/p/android-scripting/.\
+\
+Passed Variables is a comma-separated list of variables to pass in the
+intent which starts the script. Their values \*at time of launch\* can
+be accessed from the script by looking at the received intent.
diff --git a/en/help/ah_run_shell.md b/en/help/ah_run_shell.md
new file mode 100644
index 0000000..c8c494c
--- /dev/null
+++ b/en/help/ah_run_shell.md
@@ -0,0 +1,19 @@
+### Run Shell
+
+Run a system shell command under linux.\
+\
+Most commands require root, so be aware of that.\
+\
+If Timeout is 0, the command will never time-out.\
+\
+Store Output In is a variable name for the output (stdout) of the
+command.\
+\
+Similarly, Store Errors In is for error output (stderr).\
+\
+A result code of 256 indicates a technical failure executing the
+command, 257 indicates that the specified Timeout value was exceeded,
+258 indicates the process was interrupted.\
+\
+Any non-zero result code will cause the task to stop, unless Continue On
+Error is checked, otherwise the result code will be stored in %err.
diff --git a/en/help/ah_run_task.md b/en/help/ah_run_task.md
new file mode 100644
index 0000000..14c9718
--- /dev/null
+++ b/en/help/ah_run_task.md
@@ -0,0 +1,28 @@
+### Perform Task
+
+Run the selected Tasker task.\
+\
+You can \'nest\' as many tasks as you wish.\
+\
+When this action is used as part of an Enter task, the settings it
+contains are \*not\* restored when the profile exits.\
+\
+When a task is started from an existing task, the existing task
+continues unless the Stop parameter is set.\
+\
+If you set the priority lower than the current task, the current task
+will finish before the new one starts.\
+\
+If you set the priority the same or higher than the current task (a good
+way to do this is to specify \'%priority+1\'), the new task will
+completely execute before the current one resumes.\
+\
+Values assigned to %par1 and %par2 are available in the child task as
+normal variables.\
+\
+If the child does a Return action, the Return Value Variable in the
+parent task is set to the Value specified in that Return action, however
+note that the value will not be returned if the Perform Task is the last
+action of the parent.\
+\
+See Flow Control in the Userguide for more info.
diff --git a/en/help/ah_save_image.md b/en/help/ah_save_image.md
new file mode 100644
index 0000000..403c63b
--- /dev/null
+++ b/en/help/ah_save_image.md
@@ -0,0 +1,13 @@
+### Save Image
+
+Write the image currently in the image store to a file.\
+\
+The file extension will only be respected for JPEG and WEBP (if
+available on the device); all other extensions will result in PNG
+output.\
+\
+Higher Image Quality values will also result in greater file size and
+more chance of running out of memory. Image Quality is not relevant for
+PNG.\
+\
+See also: Load Image.
diff --git a/en/help/ah_say.md b/en/help/ah_say.md
new file mode 100644
index 0000000..a98ed37
--- /dev/null
+++ b/en/help/ah_say.md
@@ -0,0 +1,24 @@
+### Say
+
+Synthesize the given Text into speech.\
+\
+Engine:Voice specifies the speech engine and voice/language to use.
+*default:en* specifies the default engine and English voice.\
+Stream/File specifies where the sound should go. Stream specifies a
+sound channel, File specifies a location on the SD card; the synthesized
+speech is stored in WAV format.\
+\
+Network: use network synthesis, if supported by the current
+engine/voice. This may result in better quality.\
+\
+Continue Task Immediately: if selected, Tasker will continue with the
+next queued action while the speech is still ongoing. You must select
+this in order to do a Shut Up action later.\
+\
+Android settings may override locale, speed and pitch. Please see the
+\'Always use my settings option\' in Android\'s Text-To-Speech settings
+section.\
+\
+If *Reduce Resource Usage* in Tasker Prefs / Misc is checked, the speech
+engine will be shutdown after each utterance, meaning the speech will
+always begin later for subsequent Say actions.
diff --git a/en/help/ah_say_wavenet.md b/en/help/ah_say_wavenet.md
new file mode 100644
index 0000000..b708642
--- /dev/null
+++ b/en/help/ah_say_wavenet.md
@@ -0,0 +1,63 @@
+#### Say WaveNet
+
+Allows you to make Tasker say something out loud using advanced [WaveNet
+Voices](https://cloud.google.com/text-to-speech/).
+
+To use this action, you\'ll have to have a Google Cloud project on your
+Google account and use an API Key from that project.
+
+
+
+To do that:
+
+
+
+- Select or create a Google Cloud project
+ [here](https://console.cloud.google.com/cloud-resource-manager).
+- Enable billing for your project
+ [here](https://console.cloud.google.com/billing/linkedaccount).
+ (Note: even though billing is enabled, you\'ll only be charged if
+ you go over the [free
+ quota](https://cloud.google.com/text-to-speech/pricing).)
+- Enable the Text-to-Speech API
+ [here](https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com).
+- Go to the
+ [Credentials](https://console.cloud.google.com/apis/credentials)
+ page, click on **Create credentials** \> **API key**.
+- Copy and paste the API Key into Tasker \> Preferences \> Misc \>
+ Google API Key.
+- Alternatively you can set the **Override API Key** field in every
+ **Say WaveNet** action.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Continue Task Immediately
+:::
+
+::: {.text}
+Enable if you don\'t want the task to wait for it to finish speaking.
+You must select this in order to do a Shut Up action later.
+:::
+:::
+
+::: {.input}
+::: {.title}
+File
+:::
+
+::: {.text}
+If set, will write the speech to a file with the mp3 format
+:::
+:::
+
+::: {.input}
+::: {.title}
+Override API Key
+:::
+
+::: {.text}
+If set will override the key entered in the main Tasker Preferences.
+:::
+:::
+:::
diff --git a/en/help/ah_scan_card.md b/en/help/ah_scan_card.md
new file mode 100644
index 0000000..20eb343
--- /dev/null
+++ b/en/help/ah_scan_card.md
@@ -0,0 +1,14 @@
+### Scan Media
+
+Force the system to scan the SD card for new/deleted media. This can
+save a lot of time removing and reinserting the physical card.\
+\
+If a file is specified, only that file is scanned.\
+If a directory is specified, all of its contents will be scanned
+recursively.\
+\
+Note: repeatedly scanning the same file will not update the thumbnail in
+Gallery.\
+\
+On Android 4.4+, scanning the whole card or a directory only picks up
+\*new\* files and the task waits till the scan is finished.
diff --git a/en/help/ah_scene_element_add_geomarker.md b/en/help/ah_scene_element_add_geomarker.md
new file mode 100644
index 0000000..164e87f
--- /dev/null
+++ b/en/help/ah_scene_element_add_geomarker.md
@@ -0,0 +1,10 @@
+### Element Add GeoMarker
+
+Add a marker to a scene Map element.\
+\
+Spot Radius specifies the size of circle to place at the base of the
+market.\
+\
+The scene must have been created first.\
+\
+See also: Element Delete GeoMarker.
diff --git a/en/help/ah_scene_element_background_colour.md b/en/help/ah_scene_element_background_colour.md
new file mode 100644
index 0000000..d96c86e
--- /dev/null
+++ b/en/help/ah_scene_element_background_colour.md
@@ -0,0 +1,10 @@
+### Element Back Colour
+
+Set the background colour(s) of a scene element.\
+\
+Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\
+\
+End Colour is only relevant if the element\'s background has a Shader
+specified.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_border.md b/en/help/ah_scene_element_border.md
new file mode 100644
index 0000000..367335b
--- /dev/null
+++ b/en/help/ah_scene_element_border.md
@@ -0,0 +1,7 @@
+### Element Border
+
+Set the width and colour of an element\'s border.\
+\
+Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_create.md b/en/help/ah_scene_element_create.md
new file mode 100644
index 0000000..3b81260
--- /dev/null
+++ b/en/help/ah_scene_element_create.md
@@ -0,0 +1,10 @@
+### Element Create
+
+Create a new scene element dynamically and add it to an existing
+(created) scene.\
+\
+If you wish to animate the appearance of the element, deselect the
+Visible parameter and use the Element Visibility action afterwards.\
+\
+Note: unfortunately it\'s not yet possible to link event tasks to
+dynamically-created elements.
diff --git a/en/help/ah_scene_element_delete_geomarker.md b/en/help/ah_scene_element_delete_geomarker.md
new file mode 100644
index 0000000..5a4c0f8
--- /dev/null
+++ b/en/help/ah_scene_element_delete_geomarker.md
@@ -0,0 +1,7 @@
+### Element Delete GeoMarker
+
+Delete a marker from a scene Map element.\
+\
+The scene must have been created first.\
+\
+See also: Element Add GeoMarker.
diff --git a/en/help/ah_scene_element_depth.md b/en/help/ah_scene_element_depth.md
new file mode 100644
index 0000000..e304f35
--- /dev/null
+++ b/en/help/ah_scene_element_depth.md
@@ -0,0 +1,4 @@
+### Element Depth
+
+Set the depth of the specified element in the scene relative to all the
+other elements.
diff --git a/en/help/ah_scene_element_destroy.md b/en/help/ah_scene_element_destroy.md
new file mode 100644
index 0000000..12b02fd
--- /dev/null
+++ b/en/help/ah_scene_element_destroy.md
@@ -0,0 +1,6 @@
+### Element Destroy
+
+Dynamically destroy and remove an element from an existing (created)
+scene.\
+\
+The element need not necessarily have been dynamically created.
diff --git a/en/help/ah_scene_element_focus.md b/en/help/ah_scene_element_focus.md
new file mode 100644
index 0000000..9bbf6cb
--- /dev/null
+++ b/en/help/ah_scene_element_focus.md
@@ -0,0 +1,3 @@
+### Element Focus
+
+Give input focus to, or remove input focus from, the specified element.
diff --git a/en/help/ah_scene_element_image.md b/en/help/ah_scene_element_image.md
new file mode 100644
index 0000000..29f241b
--- /dev/null
+++ b/en/help/ah_scene_element_image.md
@@ -0,0 +1,6 @@
+### Element Image
+
+Set the image of an Image scene element or the icon of a Button or
+Slider element.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_map_control.md b/en/help/ah_scene_element_map_control.md
new file mode 100644
index 0000000..d3f3636
--- /dev/null
+++ b/en/help/ah_scene_element_map_control.md
@@ -0,0 +1,8 @@
+### Element Map Control
+
+Manipulate a Map scene element e.g. to zoom in or out\
+\
+The scene must have been created first.\
+\
+Note: Enable Compass: the compass is only shown when the map is tilted
+or rotated.
diff --git a/en/help/ah_scene_element_position.md b/en/help/ah_scene_element_position.md
new file mode 100644
index 0000000..ebd47b9
--- /dev/null
+++ b/en/help/ah_scene_element_position.md
@@ -0,0 +1,5 @@
+### Element Position
+
+Move a scene element within it\'s scene.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_size.md b/en/help/ah_scene_element_size.md
new file mode 100644
index 0000000..cef9f33
--- /dev/null
+++ b/en/help/ah_scene_element_size.md
@@ -0,0 +1,5 @@
+### Element Size
+
+Change the size of an element.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_test.md b/en/help/ah_scene_element_test.md
new file mode 100644
index 0000000..eca402e
--- /dev/null
+++ b/en/help/ah_scene_element_test.md
@@ -0,0 +1,9 @@
+### Test Element
+
+Test some property of the specified scene element e.g. it\'s position
+within the scene.\
+\
+The scene must have been created first and in some cases already be
+displayed.\
+\
+Not all tests apply to all elements.
diff --git a/en/help/ah_scene_element_text.md b/en/help/ah_scene_element_text.md
new file mode 100644
index 0000000..8d16e55
--- /dev/null
+++ b/en/help/ah_scene_element_text.md
@@ -0,0 +1,14 @@
+### Element Text
+
+Set the text of a scene element.\
+\
+Applies to Button, Text and TextEdit elements only.\
+\
+The scene must have been created first.\
+\
+For TextEdit elements, the parameter Selection specifies a part of the
+text to select after it has been set.\
+The specification is either a range (e.g. 1:4 for characters 1 to 4
+inclusive, or 3: to select everything from character 3 onwards) or a
+simple match e.g. v\*e to select everything between a v and an e. Use :
+or \* to select the whole text.
diff --git a/en/help/ah_scene_element_text_colour.md b/en/help/ah_scene_element_text_colour.md
new file mode 100644
index 0000000..b3610e2
--- /dev/null
+++ b/en/help/ah_scene_element_text_colour.md
@@ -0,0 +1,7 @@
+### Element Text Colour
+
+Set the text colour of a scene element\
+\
+Applies only to Button, Text and TextEdit elements.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_value.md b/en/help/ah_scene_element_value.md
new file mode 100644
index 0000000..1e1eb0b
--- /dev/null
+++ b/en/help/ah_scene_element_value.md
@@ -0,0 +1,18 @@
+### Element Value
+
+Set the value of a scene element.\
+\
+Applies only to CheckBox, Number Picker, Slider, Spinner and Toggle
+elements.\
+\
+For a CheckBox, value should be 0 (off) or 1 (on).\
+\
+For a Spinner, the value is the index of the item to set.\
+\
+The scene must have been created first.\
+\
+The action can only trigger a possible event associated with the element
+value if the scene is currently showing.\
+\
+To set the value of a Text, EditText or Button element, use the Element
+Text action.
diff --git a/en/help/ah_scene_element_video_control.md b/en/help/ah_scene_element_video_control.md
new file mode 100644
index 0000000..8766e31
--- /dev/null
+++ b/en/help/ah_scene_element_video_control.md
@@ -0,0 +1,11 @@
+### Element Video Control
+
+Manipulate a Video element in a scene.\
+\
+Not all actions are possible at all times. For instance, Play is not
+possible until the video has loaded.\
+\
+Tip: to simplify a manual load-and-start-video, specify in the element a
+variable as the source of the video and check Start Automatically. Then
+instead of using a Video Control action with Load Source, just set the
+variable.
diff --git a/en/help/ah_scene_element_visibility.md b/en/help/ah_scene_element_visibility.md
new file mode 100644
index 0000000..6d43424
--- /dev/null
+++ b/en/help/ah_scene_element_visibility.md
@@ -0,0 +1,5 @@
+### Element Visibility
+
+Hide or show a scene element.\
+\
+The scene must have been created first.
diff --git a/en/help/ah_scene_element_web_control.md b/en/help/ah_scene_element_web_control.md
new file mode 100644
index 0000000..754f909
--- /dev/null
+++ b/en/help/ah_scene_element_web_control.md
@@ -0,0 +1,6 @@
+### Element Web Control
+
+Manipulate a WebView scene element e.g. to page up or down\
+\
+This action will not work until the scene has ben **displayed** at least
+once.
diff --git a/en/help/ah_screen_brightness.md b/en/help/ah_screen_brightness.md
new file mode 100644
index 0000000..d802464
--- /dev/null
+++ b/en/help/ah_screen_brightness.md
@@ -0,0 +1,19 @@
+### Display Brightness
+
+Brightness setting of the screen (0-255).\
+\
+If the safeguard is enabled, levels less than 20 will be set to 20 to
+prevent accidental black screens.\
+\
+Ignore Current Level: if it looks like it\'s already at the required
+level, go ahead and set it again anyway.\
+\
+Immediate Effect: ensure the change takes effect immediately. If not
+selected, it may not take effect till Android registers the new value,
+which may require a display on-off.You may that find Immediate Effect
+disrupts some applications.\
+Immediate Effect is only needed on Android versions up till 4.4.\
+\
+If you have auto-brightness controls on your device, it\'s advisable to
+disable them before attempting to set the brightness manually. See
+system settings or Tasker action Auto-Brightness.
diff --git a/en/help/ah_screen_brightness_auto.md b/en/help/ah_screen_brightness_auto.md
new file mode 100644
index 0000000..8d201b8
--- /dev/null
+++ b/en/help/ah_screen_brightness_auto.md
@@ -0,0 +1,10 @@
+### Auto Brightness
+
+Enable or disable automatic screen brightness adjustment by the system
+(dependent on ambient light).\
+\
+Not available on all devices and OS versions.\
+\
+In some cases, though the setting is restored, the screen will not react
+until the settings screen is visited. It may be therefore useful to put
+Wait 500ms and Screen Brightness XXX actions in your exit task.
diff --git a/en/help/ah_screen_timeout.md b/en/help/ah_screen_timeout.md
new file mode 100644
index 0000000..f37c016
--- /dev/null
+++ b/en/help/ah_screen_timeout.md
@@ -0,0 +1,13 @@
+### Display Timeout
+
+The length of time with no user action before the screen powers off.\
+\
+Setting all sliders to the maximum value means \'Never\'.\
+\
+Note: this setting may be overruled by the Stay On action when the
+device is plugged into a power source.\
+\
+Note: if you go to Android settings after running this action, Android
+will change the value to one it \'knows about\' e.g. if you have set it
+to 9 minutes, Android Settings may change it to 10 minutes.\
+Some have reported the same thing occuring after a reboot.
diff --git a/en/help/ah_search.md b/en/help/ah_search.md
new file mode 100644
index 0000000..aaa178c
--- /dev/null
+++ b/en/help/ah_search.md
@@ -0,0 +1,3 @@
+### Search
+
+Perform a search for the specified text.
diff --git a/en/help/ah_search_replace_variable.md b/en/help/ah_search_replace_variable.md
new file mode 100644
index 0000000..91ec4b4
--- /dev/null
+++ b/en/help/ah_search_replace_variable.md
@@ -0,0 +1,13 @@
+### Variable Search Replace
+
+Find parts of a variable which match a regular expression (regex) and
+optionally replace them with something else.\
+\
+Store Matches In specifies an array variable in which each successive
+part of the Variable contents which matches the **whole** Search
+parameter is stored.\
+\
+Replace With specifies what each matching part of the variable should be
+replaced with.\
+\
+See Pattern Matching in the Userguide for more info.
diff --git a/en/help/ah_section_variable.md b/en/help/ah_section_variable.md
new file mode 100644
index 0000000..155c7df
--- /dev/null
+++ b/en/help/ah_section_variable.md
@@ -0,0 +1,7 @@
+### Variable Section
+
+Select a particular section of a variable and throw away the rest.\
+\
+If Adapt To Fit is checked, the specified Length is changed, if it is
+too long, so that the selected section ends at the end of the original
+variable contents.
diff --git a/en/help/ah_secure_setting.md b/en/help/ah_secure_setting.md
new file mode 100644
index 0000000..f401b7b
--- /dev/null
+++ b/en/help/ah_secure_setting.md
@@ -0,0 +1,27 @@
+### Custom Setting
+
+Allows you to change settings in the three Settings Tables on Android
+(Global, Secure and System)
+
+Settings whose values are 0 and 1 are usually \"on\" and \"off\"
+settings. You can toggle these by setting the **Value** to
+**=:=toggle=:=**
+
+Some values can only be changed with root.
+
+You can leave the **Value** empty and only fill in the **Read Setting
+To** field to get the current value for the setting
+
+[Video Example](https://www.youtube.com/watch?v=NiJrtmHIiiE)
+
+### How To Grant Permission
+
+Please follow the [instructions](ah_secure_setting_grant.html) to learn
+how to grant the permission.
+
+### Example Usage
+
+Change any setting on your device from anywhere (PC, notification,
+watch, etc) with an [AutoApps
+Command](https://joaoapps.com/autoapps-command-system/) - [Full
+Tutorial](http://forum.joaoapps.com/index.php?resources/change-any-android-setting-from-anywhere-with-autoapps.331/)
diff --git a/en/help/ah_secure_setting_grant.md b/en/help/ah_secure_setting_grant.md
new file mode 100644
index 0000000..1533bb9
--- /dev/null
+++ b/en/help/ah_secure_setting_grant.md
@@ -0,0 +1,38 @@
+#### [Write Secure Settings]{.name} Permission
+
+To use this, Tasker needs to be granted permission to [Write Secure
+Settings]{.name} on your device
+
+1. **Enable Developer Mode**: Go to Android Settings -\> About Phone
+ and look for the **Build Number** option. Touch it multiple times
+ until developer mode is enabled.
+2. **Enable USB Debugging**: Go to Android Settings -\> and look for
+ the **Developer Options** option. In there, enable the **USB
+ debugging** option.
+3. **Install ADB on your PC**: Check
+ [here](https://www.xda-developers.com/google-releases-separate-adb-and-fastboot-binary-downloads/)
+ for a quick way to do it.
+4. **Connect device to PC**: Connect your device to a PC and look on
+ your phone. A prompt should show up asking you to allow your phone
+ to be debugged by your PC. Accept this.
+5. Open the command prompt from the file folder that contains the
+ extracted downloads. To do this, press the windows key and type
+ **cmd**. When the prompt opens, type **cd** followed by folder your
+ downloaded ADB to.
+6. **Grant permission**: Open a command line a on your PC and write
+
+ ``` {.small}
+ adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
+ ```
+
+ If you\'re on a mac write
+
+ ``` {.small}
+ ./adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
+ ```
+
+#### Notes:
+
+- On MIUI devices you may have to open developer options and enable
+ the **USB debugging (Security Settings)** setting to be able to run
+ the above command.
diff --git a/en/help/ah_secure_setting_single.md b/en/help/ah_secure_setting_single.md
new file mode 100644
index 0000000..2a2cba3
--- /dev/null
+++ b/en/help/ah_secure_setting_single.md
@@ -0,0 +1,7 @@
+#### Write Secure Settings Permission
+
+To use this setting, Tasker needs to be granted permission to change
+secure settings on your device
+
+Please follow the [instructions](ah_secure_setting_grant.html) to learn
+how to grant the permission.
diff --git a/en/help/ah_send_intent.md b/en/help/ah_send_intent.md
new file mode 100644
index 0000000..cf9abd0
--- /dev/null
+++ b/en/help/ah_send_intent.md
@@ -0,0 +1,7 @@
+### Send Intent
+
+Broadcast an ordered Intent.\
+\
+This action is intended for advanced users.\
+\
+See *Intents* in the Userguide for more info.
diff --git a/en/help/ah_send_sms.md b/en/help/ah_send_sms.md
new file mode 100644
index 0000000..a801002
--- /dev/null
+++ b/en/help/ah_send_sms.md
@@ -0,0 +1,16 @@
+### Send SMS
+
+Send an SMS without user interaction.\
+\
+Multiple numbers can be specified by comma-separating them.\
+\
+Email addresses are not supported.\
+\
+Store in Messaging App: whether a record will be kept of the sent SMS in
+the standard messaging app (only available prior to Android 4.4).\
+\
+Success or failure can be caught by creating an Event context SMS
+Success/Failure.\
+\
+Maximum length of an SMS is 140 characters. In some character encodings
+that translates to 140 characters, in others to only 70 characters.
diff --git a/en/help/ah_set_alarm.md b/en/help/ah_set_alarm.md
new file mode 100644
index 0000000..240ebb2
--- /dev/null
+++ b/en/help/ah_set_alarm.md
@@ -0,0 +1,10 @@
+### Set Alarm
+
+Set a new alarm in the default alarm clock application.\
+\
+If Confirm is not checked no user interaction will be required.\
+\
+Note that on some devices, setting the alarm too close to the current
+time may result in the alarm being set for the next day.\
+\
+Also, some devices require that a Message be stipulated.
diff --git a/en/help/ah_set_app_shortcuts.md b/en/help/ah_set_app_shortcuts.md
new file mode 100644
index 0000000..ba5c826
--- /dev/null
+++ b/en/help/ah_set_app_shortcuts.md
@@ -0,0 +1,11 @@
+### Setup App Shortcuts
+
+Dynamically configure the list of app shortcuts which will show when the
+Tasker icon is long-clicked in the launcher.\
+\
+If no task is specified, that slot will receive the default appearance
+and functionality.\
+\
+This action is mainly of use for child apps created with Tasker.\
+\
+See also: Prefs / Action / App Shortcut Tasks.
diff --git a/en/help/ah_set_clipboard.md b/en/help/ah_set_clipboard.md
new file mode 100644
index 0000000..f3d1940
--- /dev/null
+++ b/en/help/ah_set_clipboard.md
@@ -0,0 +1,10 @@
+### Set Clipboard
+
+Copy the specified text to the system clipboard.\
+\
+If Add is set, the text will be added on the end of the clipboard,
+otherwise it will replace the existing clipboard text.\
+\
+This is probably most useful for storing some data from an event (e.g.
+the text of an arriving SMS). Note that you can also place the clipboard
+contents in an action.
diff --git a/en/help/ah_set_light.md b/en/help/ah_set_light.md
new file mode 100644
index 0000000..6978856
--- /dev/null
+++ b/en/help/ah_set_light.md
@@ -0,0 +1,16 @@
+### Set Light
+
+Change the brightness of a light.\
+\
+Available lights will vary per-device but typically include things like
+keyboard backlights, LEDs, camera flashlights, display and button
+backlights.\
+\
+Despite the maximum being given as 255, many lights will only be on or
+off, in which case 0 specifies off and any other number specifies on.\
+\
+Note that turning a light off is not permanent, Android may turn it on
+at a later time in response to various events on the device.\
+\
+If you accidentally reduce the display backlight to 0, a reboot should
+solve the problem.
diff --git a/en/help/ah_set_passphrase.md b/en/help/ah_set_passphrase.md
new file mode 100644
index 0000000..7cfb2cd
--- /dev/null
+++ b/en/help/ah_set_passphrase.md
@@ -0,0 +1,9 @@
+### Set Key
+
+Preset the passphrase for an encryption key.\
+\
+This allows subsequent en/decryptions to take place automatically
+without user interaction.\
+\
+Important: it is less secure than the Enter Key action; read the
+userguide section on Encryption before use.
diff --git a/en/help/ah_set_quick_setting.md b/en/help/ah_set_quick_setting.md
new file mode 100644
index 0000000..48b499e
--- /dev/null
+++ b/en/help/ah_set_quick_setting.md
@@ -0,0 +1,15 @@
+### Setup Quick Setting
+
+Dynamically change one of Tasker\'s quick settings tiles.\
+\
+If no task name is specified, the tile will receive the default
+appearance and functionality.\
+\
+The status affects the appearance of the tile in a way defined by the
+system. In addition, if it is set to Disabled, the tile will not respond
+to clicks.\
+\
+The effects of this action will only be visible when the tile is
+manually added to the set of used tiles via the Android UI.\
+\
+See Also: Prefs / Action / Quick Settings Tasks.
diff --git a/en/help/ah_set_sms_app.md b/en/help/ah_set_sms_app.md
new file mode 100644
index 0000000..397ddaf
--- /dev/null
+++ b/en/help/ah_set_sms_app.md
@@ -0,0 +1,9 @@
+### Set SMS App
+
+Set the app which is the system-default SMS app.\
+\
+If you grant Tasker permission to [write secure
+settings](ah_secure_setting_grant.html) this will be set without a
+prompt, otherwise a dialog will be shown to confirm the change.\
+\
+Will have no effect unless a valid app is chosen.
diff --git a/en/help/ah_set_tasker_icon.md b/en/help/ah_set_tasker_icon.md
new file mode 100644
index 0000000..c22f3ff
--- /dev/null
+++ b/en/help/ah_set_tasker_icon.md
@@ -0,0 +1,9 @@
+### Set Tasker Icon
+
+Set the icon for Tasker\'s permanent notification in the status bar.\
+\
+Lasts until the monitor service is stopped e.g. due to disabling
+Tasker.\
+\
+To permanently change the icon, see Menu / Prefs / Monitor /
+Notification Icon
diff --git a/en/help/ah_set_tasker_pref.md b/en/help/ah_set_tasker_pref.md
new file mode 100644
index 0000000..d38114d
--- /dev/null
+++ b/en/help/ah_set_tasker_pref.md
@@ -0,0 +1,10 @@
+### Set Tasker Pref
+
+Dynamically set a preference value normally configured via Menu / Prefs
+in the Tasker UI.\
+\
+The changed values will have immediate effect unless the related
+operation is already in progress.\
+\
+The Use Reliable Alarms preference will not cause existing alarms to be
+recreated.
diff --git a/en/help/ah_set_variable.md b/en/help/ah_set_variable.md
new file mode 100644
index 0000000..41a3d7f
--- /dev/null
+++ b/en/help/ah_set_variable.md
@@ -0,0 +1,34 @@
+### Variable Set
+
+Set the variable Name to the value To.\
+\
+Name can be any desired string, however it\'s advisable to make it a
+sequence that does not commonly occur in text otherwise it will match at
+unexpected times.\
+\
+Names all in lower-case are *local* variables which are only visible in
+the current task.\
+\
+If Recurse Variables is checked, all variables mentioned in the To
+parameter will be repeatedly replaced until there are no variable names
+left, otherwise only one round of variable replacement will take place.\
+\
+If Append is checked, To is added to the existing value of the
+variable.\
+\
+If Do Maths is checked then at the time of assignment the value of To
+will be evaluated as a mathematical expression.\
+\
+e.g.\
+\
+Name: %FROG\
+\
+To: %VOLC + 1\
+\
+Assuming %VOLC is 8, if Do Maths is checked, %FROG will get the value
+\'9\', otherwise it will get the value \'8 + 1\'.\
+\
+If To cannot be numerically evaluated (e.g. it is \'cat + 3\') then the
+current task will terminate.\
+\
+See Also: Variables section in the Userguide.
diff --git a/en/help/ah_set_variable_random.md b/en/help/ah_set_variable_random.md
new file mode 100644
index 0000000..122573e
--- /dev/null
+++ b/en/help/ah_set_variable_random.md
@@ -0,0 +1,4 @@
+### Variable Randomize
+
+Set the variable Name to a random integer value between Min and Max
+(inclusive; the number could be Min or Max).
diff --git a/en/help/ah_set_wallpaper.md b/en/help/ah_set_wallpaper.md
new file mode 100644
index 0000000..4709757
--- /dev/null
+++ b/en/help/ah_set_wallpaper.md
@@ -0,0 +1,18 @@
+### Set Wallpaper
+
+Set the system (home screen) wallpaper from an SD card image file.\
+\
+JPG and PNG are supported.\
+\
+If no image is specified, the default system image is set.\
+\
+Scale: if the image is smaller in width or height than the
+launcher-specified values, scale it up to those values while keeping the
+aspect ratio.\
+\
+Crop: if the image dimensions (possibly after scaling) are greater than
+the launcher-specified values crop it down to those dimensions. This can
+be necessary to prevent Android-internal problems.\
+\
+Note that it can take more than 20 seconds for this action to take
+effect.
diff --git a/en/help/ah_share_file.md b/en/help/ah_share_file.md
new file mode 100644
index 0000000..55652db
--- /dev/null
+++ b/en/help/ah_share_file.md
@@ -0,0 +1,13 @@
+### Share File
+
+Share a file with another application or device.\
+\
+If Mime Type is not specified, Tasker will attempt to deduce it.\
+\
+If Show Chooser is specified, Android will display a selection of
+possible ways of sharing the file, in a dialog.\
+\
+If not specified, the chooser may be shown anyway if there is no known
+default way of handling that Mime Type.\
+\
+Some Android versions may ignore Chooser Title.
diff --git a/en/help/ah_show_alarms.md b/en/help/ah_show_alarms.md
new file mode 100644
index 0000000..762ae96
--- /dev/null
+++ b/en/help/ah_show_alarms.md
@@ -0,0 +1,3 @@
+### Show Alarms
+
+Bring up a screen showing the configured system alarms.
diff --git a/en/help/ah_show_scene.md b/en/help/ah_show_scene.md
new file mode 100644
index 0000000..09f90a4
--- /dev/null
+++ b/en/help/ah_show_scene.md
@@ -0,0 +1,24 @@
+### Show Scene
+
+Display a scene, creating it first if necessary.\
+\
+All Overlays are displayed over the current application and persist
+until hidden or destroyed.\
+\
+Blocking overlays only block touches on the part of the screen they
+cover.\
+\
+Non-blocking Overlays are also displayed over the Keyguard.\
+\
+Dialogs are little popup windows which take all user input while they
+are displayed and can be dismissed with the Back key.\
+\
+Activities are standard Android app views.\
+\
+Offsets are percentages of the screen size with in the range 0-200,
+(0=100% left, 100=centre, 200=100% right).\
+\
+Animation is only relevant for non-overlay scenes and when animations
+are enabled in Android settings.\
+\
+See also: Scenes in the Userguide.
diff --git a/en/help/ah_shut_up.md b/en/help/ah_shut_up.md
new file mode 100644
index 0000000..8ec70fc
--- /dev/null
+++ b/en/help/ah_shut_up.md
@@ -0,0 +1,8 @@
+### Shut Up
+
+Stop speech initiated from a previous Say, Say To File or Say WaveNet
+action.\
+\
+Note: you must select Continue Task Immediately in the Say action to be
+able to use Shut Up, otherwise Tasker will not get to the Shut Up action
+until the speech has finished anyway.
diff --git a/en/help/ah_silence_ringer.md b/en/help/ah_silence_ringer.md
new file mode 100644
index 0000000..550dfa9
--- /dev/null
+++ b/en/help/ah_silence_ringer.md
@@ -0,0 +1,7 @@
+### Silence Ringer
+
+During an incoming call, immediately stop the ringsound and/or
+vibration.\
+\
+This is temporary; the ringer will still sound on the next incoming
+call.
diff --git a/en/help/ah_silent_mode.md b/en/help/ah_silent_mode.md
new file mode 100644
index 0000000..cac9429
--- /dev/null
+++ b/en/help/ah_silent_mode.md
@@ -0,0 +1,9 @@
+### Silent Mode
+
+Android 5.0: toggles vibrate mode on or off.\
+\
+Prior Android versions: in silent mode, all sounds except media and
+alarm are surpressed by the system (without having their volume settings
+changed). With Vibrate, the phone will vibrate on an incoming call.\
+\
+This setting overrides the Ringer Vibrate setting.
diff --git a/en/help/ah_sleepbot.md b/en/help/ah_sleepbot.md
new file mode 100644
index 0000000..c05677b
--- /dev/null
+++ b/en/help/ah_sleepbot.md
@@ -0,0 +1,5 @@
+### SleepBot
+
+Info:\
+\
+http://wiki.mysleepbot.com
diff --git a/en/help/ah_sms_compose.md b/en/help/ah_sms_compose.md
new file mode 100644
index 0000000..847ba10
--- /dev/null
+++ b/en/help/ah_sms_compose.md
@@ -0,0 +1,8 @@
+### Compose SMS
+
+Launch an application to compose an SMS from optional predefined
+elements.\
+\
+To send an SMS directly, see Send SMS.\
+\
+On Android 4.4+, only one of Recipient or Message can be specified.
diff --git a/en/help/ah_smsbackup.md b/en/help/ah_smsbackup.md
new file mode 100644
index 0000000..785b47d
--- /dev/null
+++ b/en/help/ah_smsbackup.md
@@ -0,0 +1,5 @@
+### SMS Backup+
+
+Info: https://github.com/jberkel/sms-backup-plus\
+\
+Minimal version 1.3.4.
diff --git a/en/help/ah_sound_effects.md b/en/help/ah_sound_effects.md
new file mode 100644
index 0000000..7be47ff
--- /dev/null
+++ b/en/help/ah_sound_effects.md
@@ -0,0 +1,5 @@
+### Sound Effects
+
+Whether to enable or disable system sounds like clicks on icons.\
+\
+See also: Sound/System Volume setting.
diff --git a/en/help/ah_sound_record.md b/en/help/ah_sound_record.md
new file mode 100644
index 0000000..532cac0
--- /dev/null
+++ b/en/help/ah_sound_record.md
@@ -0,0 +1,21 @@
+### Record Audio
+
+Record from the microphone to an SD card file.\
+\
+File is the path to the file on the SD card. It will have extension .3gp
+added.\
+\
+Source is where to record from. Not all sources are available on all
+hardware, for instance the Call source is not available on the G1.\
+\
+The Max Filesize is the maximum size of the resulting audio file in K.\
+\
+A zero value for Filesize places no limit, in which case the recording
+will not stop until the SD card is full or the Tasker action Record
+Audio Stop is performed.\
+\
+Note: playback of the resulting files can be done with Tasker\'s Play
+Music action, amongst others.\
+\
+Warning: in many countries, recording of individuals\' speech without
+their consent is illegal.
diff --git a/en/help/ah_sound_record_stop.md b/en/help/ah_sound_record_stop.md
new file mode 100644
index 0000000..8a20866
--- /dev/null
+++ b/en/help/ah_sound_record_stop.md
@@ -0,0 +1,3 @@
+### Record Audio Stop
+
+Stop a sound recording previously started with Record Audio.
diff --git a/en/help/ah_speakerphone.md b/en/help/ah_speakerphone.md
new file mode 100644
index 0000000..d34985b
--- /dev/null
+++ b/en/help/ah_speakerphone.md
@@ -0,0 +1,7 @@
+### Speakerphone
+
+Whether the speakerphone is on or off.\
+\
+Note: this will only have any effect when a call has already started,
+but you could use it with e.g. a Phone Offhook event if you want every
+incoming call on speakerphone.
diff --git a/en/help/ah_split_variable.md b/en/help/ah_split_variable.md
new file mode 100644
index 0000000..1b91c76
--- /dev/null
+++ b/en/help/ah_split_variable.md
@@ -0,0 +1,13 @@
+### Variable Split
+
+Split the value of the given variable into several sub-variables.\
+\
+Each time Splitter is encountered in the variable value, a new variable
+is made with name %VARX.\
+\
+If Delete Base is selected, the original variable is removed after the
+split.\
+\
+Example: %VAR contains \"I;like;humus\". After the action
+Split/%VAR/;/Yes %VAR is replaced with 3 variables %VAR1, %VAR2 and
+%VAR3 containtin \"I\", \"like\" and \"humus\".
diff --git a/en/help/ah_sql_query.md b/en/help/ah_sql_query.md
new file mode 100644
index 0000000..8108556
--- /dev/null
+++ b/en/help/ah_sql_query.md
@@ -0,0 +1,31 @@
+### SQL Query
+
+Query an SQL database in a file or URI.\
+\
+In Raw mode, the Query must be entered as a full SQL statement.\
+\
+In Table URI mode the URI refers to a specific table rather than a DB;
+an example is content://com.android.contacts/groups.\
+\
+In both Formatted modes, SQL directives (SELECT, WHERE etc) should be
+ommitted.\
+\
+Selection refers to the WHERE directive (\'column \> 5\', \'column =
+?\')\
+\
+Selection Args specifies content that fills each ? in Selection in the
+order they appear.\
+\
+The result rows of the query are stored in the specified array with a
+row at each index. The columns within each row are separated by the
+Output Column Divider.\
+\
+Null DB values are represented as , BLOBs as , problems with \??\>\
+\
+When making several transactions on a DB on external storage or which
+needs root to access, it will be much more efficient to first move the
+DB file to internal storage (Move File action) and operate on it there.\
+\
+In Raw mode, only the following directives requiring writeable DB access
+are supported: INSERT INTO, UPDATE, CREATE TABLE, DELETE FROM, ALTER
+TABLE.
diff --git a/en/help/ah_start_timer.md b/en/help/ah_start_timer.md
new file mode 100644
index 0000000..5022670
--- /dev/null
+++ b/en/help/ah_start_timer.md
@@ -0,0 +1,10 @@
+### Start System Timer
+
+Start a system or 3rd party countdown timer.\
+\
+When Show UI is selected the UI of the timer app will be displayed,
+otherwise probably only a notification will be shown.\
+\
+Only available from Android 4.3.\
+\
+This action has no relation to Tasker\'s countdown timer widgets.
diff --git a/en/help/ah_status_bar.md b/en/help/ah_status_bar.md
new file mode 100644
index 0000000..179969e
--- /dev/null
+++ b/en/help/ah_status_bar.md
@@ -0,0 +1,6 @@
+### Status Bar
+
+Expand or collapse the system status bar.\
+\
+On some devices Tasker\'s Accessibility Service will need to be enabled
+in Android settings.
diff --git a/en/help/ah_status_bar_icons.md b/en/help/ah_status_bar_icons.md
new file mode 100644
index 0000000..0973032
--- /dev/null
+++ b/en/help/ah_status_bar_icons.md
@@ -0,0 +1,12 @@
+### Status Bar Icons
+
+Hide or show status bar icons.
+
+All of the icons not set in the **Icons To Hide** field will be shown.
+
+**Example values for *Icons To Hide***
+
+- **battery,wifi**: will hide the battery and wifi icons
+- **wifi**: will show the battery icon again and keep the wifi icon
+ hidden
+- *keep empty*: will show all icons
diff --git a/en/help/ah_stay_on.md b/en/help/ah_stay_on.md
new file mode 100644
index 0000000..e91e7a7
--- /dev/null
+++ b/en/help/ah_stay_on.md
@@ -0,0 +1,7 @@
+### Stay On
+
+Whether to prevent the screen going off while a power supply is
+present.\
+\
+The screen will still dim a few seconds before Screen Timeout is
+reached.
diff --git a/en/help/ah_stop.md b/en/help/ah_stop.md
new file mode 100644
index 0000000..68030ad
--- /dev/null
+++ b/en/help/ah_stop.md
@@ -0,0 +1,21 @@
+### Stop
+
+Stop execution of one or more tasks after any currently running action
+has finished.\
+\
+If a task is specified, then **all** tasks with the same name currently
+executing are stopped.\
+\
+If no task is specified, the current task is stopped (but **not** other
+tasks with the same name).\
+\
+If With Error is checked, the task(s) are marked as finished due to an
+error.\
+\
+Note: to stop a different task will often require that it has a lower
+priority than the task with the Stop action, since otherwise the Stop
+action will perhaps never be executed.\
+\
+Currently running actions in a different task will not be interupted by
+a Stop action, with the exception of Play Ringtone and a non-root Run
+Shell.
diff --git a/en/help/ah_stop_fix.md b/en/help/ah_stop_fix.md
new file mode 100644
index 0000000..15159bc
--- /dev/null
+++ b/en/help/ah_stop_fix.md
@@ -0,0 +1,7 @@
+### Stop Location
+
+Stop tracking a location source which was previously initiated by Get
+Location.\
+\
+This is only necessary if the Keep Tracking parameter is checked in Get
+Location.
diff --git a/en/help/ah_system_lock.md b/en/help/ah_system_lock.md
new file mode 100644
index 0000000..9fbb1da
--- /dev/null
+++ b/en/help/ah_system_lock.md
@@ -0,0 +1,3 @@
+### System Lock
+
+Turn off the display and engage the keyguard.
diff --git a/en/help/ah_system_notification_vibrate.md b/en/help/ah_system_notification_vibrate.md
new file mode 100644
index 0000000..dbfaf14
--- /dev/null
+++ b/en/help/ah_system_notification_vibrate.md
@@ -0,0 +1,8 @@
+### Vibrate On Notify
+
+Whether to vibrate with a system notification.\
+\
+Note: if you are going to use Tasker for this, it\'s probably best not
+to mix it with other methods of controlling the setting.\
+\
+See also: Notification Volume.
diff --git a/en/help/ah_system_volume.md b/en/help/ah_system_volume.md
new file mode 100644
index 0000000..4ca3fa6
--- /dev/null
+++ b/en/help/ah_system_volume.md
@@ -0,0 +1,11 @@
+### System Volume
+
+Volume level of system sounds.\
+\
+Setting to 0 will mute system sounds.\
+\
+When Display is enabled, a popup will show the new level.\
+\
+When Sound is enabled, a tone will sound at the new volume level.\
+\
+Note: System Sounds must also be enabled if required.
diff --git a/en/help/ah_take_call.md b/en/help/ah_take_call.md
new file mode 100644
index 0000000..ac92422
--- /dev/null
+++ b/en/help/ah_take_call.md
@@ -0,0 +1,3 @@
+### Take Call
+
+Silence the ringer and pick up the phone, if it\'s ringing.
diff --git a/en/help/ah_take_photo.md b/en/help/ah_take_photo.md
new file mode 100644
index 0000000..2a92d8d
--- /dev/null
+++ b/en/help/ah_take_photo.md
@@ -0,0 +1,23 @@
+### Take Photo
+
+Take a photo. The current activity will be interrupted for a couple of
+seconds.\
+\
+If Discreet is checked, there will be no visible or audible sign of the
+picture being taken, and the device will not turn on if it is already
+off (except on Eclair devices).\
+\
+Without Discreet, a small delay allows time for aiming.\
+\
+Insert in Gallery: immediately insert a thumbnail in the Gallery
+application, otherwise it will not appear until the next time the SD
+card is scanned.\
+\
+Naming Sequence: Series: photo names have an index number attached which
+increases with each one taken. Chronological: the date and time is
+attached to the filename.\
+\
+Photos are in JPG format and stored in /sdcard/dcim/Tasker/. You should
+not attach the .jpg affix when specifying the filename prefix.\
+\
+See also: Menu / Prefs / Action / Camera Delay.
diff --git a/en/help/ah_take_screenshot.md b/en/help/ah_take_screenshot.md
new file mode 100644
index 0000000..5bd6f36
--- /dev/null
+++ b/en/help/ah_take_screenshot.md
@@ -0,0 +1,5 @@
+### Take Screenshot
+
+Take a screenshot of the phones current display.\
+\
+Writing to external storage is not supported.
diff --git a/en/help/ah_teslaled.md b/en/help/ah_teslaled.md
new file mode 100644
index 0000000..6fd2876
--- /dev/null
+++ b/en/help/ah_teslaled.md
@@ -0,0 +1,11 @@
+### TeslaLED
+
+Use the camera flash as a torch.\
+\
+More info:\
+\
+http://teslacoilsw.com/teslaled\
+\
+Please reward the developer by choosing the Donate version!\
+\
+See Also: Alert / Torch.
diff --git a/en/help/ah_test.md b/en/help/ah_test.md
new file mode 100644
index 0000000..6e4dcde
--- /dev/null
+++ b/en/help/ah_test.md
@@ -0,0 +1,18 @@
+### Test
+
+Test the value of a particular thing and put it in a variable.\
+\
+Failed tests will result in the specified result variable being
+cleared.\
+\
+File tests: directories always have 0 size and their modification time
+is the time a file was last added or deleted from them. File type is
+either **file** or **dir**.\
+\
+Contact lookups are based on the phone number of the contact.\
+\
+Calendar values require the time in seconds since the epoch as data
+(e.g. use %TIMES, or use the Variable Convert action to convert a
+date/time into seconds first) and are entered in an array (%var1, %var2
+etc), not a plain value, because there may be multiple events at the
+time specified.
diff --git a/en/help/ah_test_app.md b/en/help/ah_test_app.md
new file mode 100644
index 0000000..2500e8c
--- /dev/null
+++ b/en/help/ah_test_app.md
@@ -0,0 +1,12 @@
+### Test App
+
+Test some aspect of an application.\
+\
+A failed test will result in the specified result variable being
+cleared.\
+\
+Calendar tests: require the time in seconds since the epoch as Data
+(e.g. use %TIMES, or use the Variable Convert action to convert a
+date/time into seconds first) and are entered in an array (%var1, %var2
+etc), not a plain value, because there may be multiple events at the
+time specified.
diff --git a/en/help/ah_test_display.md b/en/help/ah_test_display.md
new file mode 100644
index 0000000..78a4bb2
--- /dev/null
+++ b/en/help/ah_test_display.md
@@ -0,0 +1,9 @@
+### Test Display
+
+Test an attribute of the display.\
+\
+AutoRotate: on or off\
+\
+Orientation: portrait or landscape.\
+\
+Resolution/DPI: depends on current orientation of display.
diff --git a/en/help/ah_test_file.md b/en/help/ah_test_file.md
new file mode 100644
index 0000000..137f47a
--- /dev/null
+++ b/en/help/ah_test_file.md
@@ -0,0 +1,13 @@
+### Test File
+
+Test an attribute of a file and put the result in a variable.\
+\
+A failed test will result in the specified result variable being
+cleared.\
+\
+Parent Dir: the parent directory of the given file, note that it may not
+actually exist.\
+Size: file size in bytes, or for directories number of children.\
+Modification time: the modification time of a directory is the time a
+file was last added or deleted from them.\
+Type: either **file** or **dir**.
diff --git a/en/help/ah_test_media.md b/en/help/ah_test_media.md
new file mode 100644
index 0000000..21612fd
--- /dev/null
+++ b/en/help/ah_test_media.md
@@ -0,0 +1,9 @@
+### Test Media
+
+Test some aspect of a media carrier or player.\
+\
+Music Playing Position: applies only to tracks started by Tasker via the
+Music Play action.\
+\
+Note: a failed test will result in the specified result variable being
+cleared.
diff --git a/en/help/ah_test_net.md b/en/help/ah_test_net.md
new file mode 100644
index 0000000..a72e7b2
--- /dev/null
+++ b/en/help/ah_test_net.md
@@ -0,0 +1,15 @@
+### Test Net
+
+Test a network attribute.\
+\
+Possible Connection Types are **none, mobile, wifi, mms, supl, dun,
+hipri, wimax, bluetooth, dummy, ethernet**, and **vpn**.\
+Mobile Data and Wifi Hidden are **yes** or **no**.\
+\
+BT Paired Addresses is a comma-separated list of the bluetooth devices
+this device is paired with. The other BT tests need a name or address to
+test.\
+\
+BT Device Connected may require Tasker to be enabled when the device
+connects (for some device types).\
+Bluetooth must be enabled for all BT tests.
diff --git a/en/help/ah_test_phone.md b/en/help/ah_test_phone.md
new file mode 100644
index 0000000..5a8a2f9
--- /dev/null
+++ b/en/help/ah_test_phone.md
@@ -0,0 +1,10 @@
+### Test Phone
+
+Test something phone related.\
+\
+\
+\
+A failed test will result in the specified result variable being
+cleared.\
+\
+All tests require the phone number of the contact as Data.
diff --git a/en/help/ah_test_scene.md b/en/help/ah_test_scene.md
new file mode 100644
index 0000000..4a23096
--- /dev/null
+++ b/en/help/ah_test_scene.md
@@ -0,0 +1,13 @@
+### Test Scene
+
+Test an attribute of the specified scene and store the result in the
+specified variable.\
+\
+Possible status values are\
+\
+uncreated, hidden, visible, background (shown but currently not on
+screen)\
+\
+Offsets are percentages from -100 to 100, with 0 being display centre.\
+\
+If the scene does not exist the specified variable will be cleared.
diff --git a/en/help/ah_test_system.md b/en/help/ah_test_system.md
new file mode 100644
index 0000000..51629ab
--- /dev/null
+++ b/en/help/ah_test_system.md
@@ -0,0 +1,9 @@
+### Test System
+
+Test an attribute of the operating system.\
+\
+Android ID: 64 bit hex value which should be constant for the life of
+the device.\
+\
+UserID: the user ID of the current active (foreground) user, only
+available on Android 4.2+.
diff --git a/en/help/ah_test_tasker.md b/en/help/ah_test_tasker.md
new file mode 100644
index 0000000..ab94c3f
--- /dev/null
+++ b/en/help/ah_test_tasker.md
@@ -0,0 +1,10 @@
+### Test Tasker
+
+Test some aspect of Tasker\'s configuration.\
+\
+The Global Var, Local Var, Profile, Scene and Task test types store
+their results as an array (%var1, %var2 etc).\
+\
+The Global Var type doesn\'t include built-in variables.\
+\
+The Profile and Task test types only list **named** profiles or tasks.
diff --git a/en/help/ah_test_variable.md b/en/help/ah_test_variable.md
new file mode 100644
index 0000000..8af2443
--- /dev/null
+++ b/en/help/ah_test_variable.md
@@ -0,0 +1,3 @@
+### Test Variable
+
+Test a variable attribute.
diff --git a/en/help/ah_tether_usb.md b/en/help/ah_tether_usb.md
new file mode 100644
index 0000000..a9de6f0
--- /dev/null
+++ b/en/help/ah_tether_usb.md
@@ -0,0 +1,6 @@
+### USB Tether
+
+Turn on sharing of the device\'ss Internet connection via USB cable.\
+\
+On some devices, you may need to enable the USB tether once in Android
+settings before Tasker will be able to do it.
diff --git a/en/help/ah_tether_wifi.md b/en/help/ah_tether_wifi.md
new file mode 100644
index 0000000..6532b4c
--- /dev/null
+++ b/en/help/ah_tether_wifi.md
@@ -0,0 +1,17 @@
+### WiFi Tether
+
+Turn on sharing of the device\'s Internet connection via wifi.\
+\
+If Wifi was on, it will be turned off, you will need to enable it
+manually after the tether.
+
+If the action fails for you, saying that you need to the
+android.permission.TETHER\_PRIVILEGED permission you can still make it
+work **if you have a rooted device**:
+
+- Make a a backup of your Tasker setup
+- Copy \"/data/app/net.dinglisch.android.taskerm\" folder to
+ \"/system/priv-app\"
+- Uninstall Tasker and reboot
+- After the reboot Tasker should be installed as a System app.
+- Restore Tasker data
diff --git a/en/help/ah_timer_widget_control.md b/en/help/ah_timer_widget_control.md
new file mode 100644
index 0000000..f1350b6
--- /dev/null
+++ b/en/help/ah_timer_widget_control.md
@@ -0,0 +1,13 @@
+### Timer Widget Control
+
+Control the operation of a previously-created Task Timer widget.\
+\
+End: cause the timer to finish. The associated task will execute if the
+timer was previously running.\
+\
+Resume: resume (or start, if not paused)) the countdown.\
+\
+Reset: stop the countdown and set it to it\'s initial value.\
+\
+Update: refresh the display of the remaining time, not usually
+necessary.
diff --git a/en/help/ah_timer_widget_set.md b/en/help/ah_timer_widget_set.md
new file mode 100644
index 0000000..7adbc71
--- /dev/null
+++ b/en/help/ah_timer_widget_set.md
@@ -0,0 +1,7 @@
+### Timer Widget Set
+
+Set the period of a previously-created Task Timer widget.\
+\
+The elapsed time is set to 0.\
+\
+If the timer was already running, it will continue to do so.
diff --git a/en/help/ah_toggle_app_dock.md b/en/help/ah_toggle_app_dock.md
new file mode 100644
index 0000000..fd10080
--- /dev/null
+++ b/en/help/ah_toggle_app_dock.md
@@ -0,0 +1,3 @@
+### Toggle Split Screen
+
+Toggle whether the current app is in split screen mode or not.
diff --git a/en/help/ah_toggle_profile.md b/en/help/ah_toggle_profile.md
new file mode 100644
index 0000000..7d8d493
--- /dev/null
+++ b/en/help/ah_toggle_profile.md
@@ -0,0 +1,5 @@
+### Profile Status
+
+Enable or disable the named profile.\
+\
+If the state is already the desired one, there will be no effect.
diff --git a/en/help/ah_torch.md b/en/help/ah_torch.md
new file mode 100644
index 0000000..abe96ff
--- /dev/null
+++ b/en/help/ah_torch.md
@@ -0,0 +1,9 @@
+### Torch
+
+Hold the camera flashlight on.\
+\
+May not work on all devices.\
+\
+If it gets stuck on, just turn the device off.\
+\
+See Also: 3rd Party / TeslaLED.
diff --git a/en/help/ah_turn_off_display.md b/en/help/ah_turn_off_display.md
new file mode 100644
index 0000000..2bbdc9d
--- /dev/null
+++ b/en/help/ah_turn_off_display.md
@@ -0,0 +1,39 @@
+### Turn Off
+
+If the display is on, it will be turned off.
+
+On some devices it takes about 3 seconds for it to really turn off, on
+others it might take around 10 seconds. Either way, a fully black screen
+will be shown while the screen doesn\'t really turn off.
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Dim
+:::
+
+::: {.text}
+Set the brightness to 0 prior to showing the black screen. Useful for
+non OLED displays.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Lock
+:::
+
+::: {.text}
+If set, will use the Accessibility Service to lock the screen, but
+you\'ll still be able to unlock it with Smart Unlock or by using your
+fingerprint, unlike with the **System Lock** action where you\'ll have
+to unlock your screen with a password.
+:::
+
+::: {.text}
+If Tasker has the [Write Secure Settings](ah_secure_setting_grant.html)
+permissions, you don\'t need to turn your accessibility service for this
+to work.
+:::
+:::
+:::
diff --git a/en/help/ah_type.md b/en/help/ah_type.md
new file mode 100644
index 0000000..08e4bae
--- /dev/null
+++ b/en/help/ah_type.md
@@ -0,0 +1,10 @@
+### Type
+
+Simulate typing of text.\
+\
+Only available on a rooted device.\
+\
+Accented characters currently do not work.\
+\
+USB Debugging probably needs to be enabled in Android\'s Developer
+Settings.
diff --git a/en/help/ah_unzip_file.md b/en/help/ah_unzip_file.md
new file mode 100644
index 0000000..ea5562b
--- /dev/null
+++ b/en/help/ah_unzip_file.md
@@ -0,0 +1,7 @@
+### UnZip
+
+Decompress the specified zip archive file on the SD card.\
+\
+You do not need to add .zip on the end of the filename.\
+\
+Specify Delete Zip to delete the zip file if the compression succeeds.
diff --git a/en/help/ah_vibrate.md b/en/help/ah_vibrate.md
new file mode 100644
index 0000000..0452a3d
--- /dev/null
+++ b/en/help/ah_vibrate.md
@@ -0,0 +1,6 @@
+### Vibrate
+
+Activate the device\'s vibrator.\
+\
+The specified time is in milliseconds i.e. to vibrate for one second
+enter 1000, to vibrate for half a second enter 500.
diff --git a/en/help/ah_vibrate_pattern.md b/en/help/ah_vibrate_pattern.md
new file mode 100644
index 0000000..68df3c4
--- /dev/null
+++ b/en/help/ah_vibrate_pattern.md
@@ -0,0 +1,12 @@
+### Vibrate Pattern
+
+Activate the device\'s vibrator in a pattern.\
+\
+Enter a comma-separated list of numbers. The 1st one is how long to be
+silent for, the 2nd one is how long to vibrate for and then
+alternating.\
+\
+Times are in milliseconds i.e. to vibrate for one second enter 1000, to
+vibrate for half a second enter 500.\
+\
+0 values are disallowed, excepting for the first value.
diff --git a/en/help/ah_view_file.md b/en/help/ah_view_file.md
new file mode 100644
index 0000000..f29c0b2
--- /dev/null
+++ b/en/help/ah_view_file.md
@@ -0,0 +1,9 @@
+### Open File
+
+Open the specified file on the SD card.\
+\
+The file type is determined by the extension, unless a specific Mime
+Type is specified.\
+\
+The viewer/listener used depends on that registered by the system for
+the file type.
diff --git a/en/help/ah_view_url.md b/en/help/ah_view_url.md
new file mode 100644
index 0000000..b25b13a
--- /dev/null
+++ b/en/help/ah_view_url.md
@@ -0,0 +1,3 @@
+### Browse URL
+
+Open the specified URL in the default browser.
diff --git a/en/help/ah_voice_command.md b/en/help/ah_voice_command.md
new file mode 100644
index 0000000..34a0029
--- /dev/null
+++ b/en/help/ah_voice_command.md
@@ -0,0 +1,6 @@
+### Voice Command
+
+Run the system-default application for processing voice commands.\
+\
+Note: unlike the Get Voice action, the calling task will not wait for
+the voice command to be processed.
diff --git a/en/help/ah_volume_long_press_grant.md b/en/help/ah_volume_long_press_grant.md
new file mode 100644
index 0000000..e4e16ee
--- /dev/null
+++ b/en/help/ah_volume_long_press_grant.md
@@ -0,0 +1,38 @@
+#### [Volume Key Long Press Handling]{.name} Permission
+
+To use this, Tasker needs to be granted permission to [handle volume key
+long press interception]{.name} on your device
+
+1. **Enable Developer Mode**: Go to Android Settings -\> About Phone
+ and look for the **Build Number** option. Touch it multiple times
+ until developer mode is enabled.
+2. **Enable USB Debugging**: Go to Android Settings -\> and look for
+ the **Developer Options** option. In there, enable the **USB
+ debugging** option.
+3. **Install ADB on your PC**: Check
+ [here](https://www.xda-developers.com/google-releases-separate-adb-and-fastboot-binary-downloads/)
+ for a quick way to do it.
+4. **Connect device to PC**: Connect your device to a PC and look on
+ your phone. A prompt should show up asking you to allow your phone
+ to be debugged by your PC. Accept this.
+5. Open the command prompt from the file folder that contains the
+ extracted downloads. To do this, press the windows key and type
+ **cmd**. When the prompt opens, type **cd** followed by folder your
+ downloaded ADB to.
+6. **Grant permission**: Open a command line a on your PC and write
+
+ ``` {.small}
+ adb shell pm grant net.dinglisch.android.taskerm android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER
+ ```
+
+ If you\'re on a mac write
+
+ ``` {.small}
+ ./adb shell pm grant net.dinglisch.android.taskerm android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER
+ ```
+
+#### Notes:
+
+- On MIUI devices you may have to open developer options and enable
+ the **USB debugging (Security Settings)** setting to be able to run
+ the above command.
diff --git a/en/help/ah_wait.md b/en/help/ah_wait.md
new file mode 100644
index 0000000..6047373
--- /dev/null
+++ b/en/help/ah_wait.md
@@ -0,0 +1,7 @@
+### Wait
+
+Stop executing the current Task for the specified amount of time.\
+\
+If another task becomes queued during the wait, the wait could end up
+being much longer than expected, depending on the other task\'s priority
+and actions.
diff --git a/en/help/ah_wait_until.md b/en/help/ah_wait_until.md
new file mode 100644
index 0000000..c2767b3
--- /dev/null
+++ b/en/help/ah_wait_until.md
@@ -0,0 +1,9 @@
+### Wait Until
+
+Stop executing the current Task until the condition is met. Wait
+\*maximally\* the specified time between checks. The actual time between
+checks will vary because Tasker will opportunistically retest the
+condition at times when battery life will be unaffected.\
+\
+Note: a very small wait period might have battery life implications, in
+general it should be as large as is acceptable.
diff --git a/en/help/ah_widgetlocker.md b/en/help/ah_widgetlocker.md
new file mode 100644
index 0000000..4756675
--- /dev/null
+++ b/en/help/ah_widgetlocker.md
@@ -0,0 +1,8 @@
+### WidgetLocker
+
+Info:\
+\
+http://teslacoilsw.com/widgetlocker\
+\
+Suspend: Keep WidgetLocker enabled/running, but prevent it from
+activating on screen off.
diff --git a/en/help/ah_wifi_control.md b/en/help/ah_wifi_control.md
new file mode 100644
index 0000000..abf2586
--- /dev/null
+++ b/en/help/ah_wifi_control.md
@@ -0,0 +1,13 @@
+### WiFi Net
+
+Change the wifi network connection status.\
+\
+Reassociate: reconnect even if already connected.\
+\
+Force: try to carry out the action even if the network status that
+Android reports is incompatible e.g. disconnect even if Android reports
+already disconnected.\
+\
+Report Failure: flash a short error message if the action fails. Note
+that Android might not e.g. report a disconnect failure if there is
+currently no connection.
diff --git a/en/help/ah_wifi_sleep_policy.md b/en/help/ah_wifi_sleep_policy.md
new file mode 100644
index 0000000..7615ac2
--- /dev/null
+++ b/en/help/ah_wifi_sleep_policy.md
@@ -0,0 +1,9 @@
+### WiFi Sleep
+
+The policy for deciding when Wifi should go to sleep. When Wifi goes to
+sleep, the device will switch to using the mobile data connection.\
+\
+\\*Default*: depends on the Android version. Will be something like
+\'When the screen goes off\' or \'After 15 Minutes\'.\
+\
+*Never While Plugged*: When Screen Off if on battery power.
diff --git a/en/help/ah_wifi_status.md b/en/help/ah_wifi_status.md
new file mode 100644
index 0000000..a640af6
--- /dev/null
+++ b/en/help/ah_wifi_status.md
@@ -0,0 +1,11 @@
+### WiFi
+
+Whether the WiFi radio is enabled or disabled.\
+\
+This action is ignored when Airplane Mode is on prior to Android 2.0. It
+also has no effect when a Wifi Tether (Hotspot) is enabled.\
+\
+Note: it\'s not usually advisable to use the Toggle setting when also
+using a Wifi Near state with Enable Wifi checked, since the action will
+then have different effects dependent on whether wifi has already been
+auto-enabled for a wifi scan or not.
diff --git a/en/help/ah_wimax_status.md b/en/help/ah_wimax_status.md
new file mode 100644
index 0000000..10c5749
--- /dev/null
+++ b/en/help/ah_wimax_status.md
@@ -0,0 +1,3 @@
+### WiMax
+
+Whether the Wimax radio is enabled or disabled.
diff --git a/en/help/ah_write_binary.md b/en/help/ah_write_binary.md
new file mode 100644
index 0000000..ce21f57
--- /dev/null
+++ b/en/help/ah_write_binary.md
@@ -0,0 +1,5 @@
+### Write Binary
+
+Write base 64 data from a variable to binary format in a file.\
+\
+See Also: actions Read Binary, Variable Convert
diff --git a/en/help/ah_write_file.md b/en/help/ah_write_file.md
new file mode 100644
index 0000000..df4637f
--- /dev/null
+++ b/en/help/ah_write_file.md
@@ -0,0 +1,8 @@
+### Write File
+
+Write the specified text to the specified SD card file.\
+\
+If Append is checked, the text is added to the end of the file without
+changing the existing contents.\
+\
+A newline character is appended to the text if that option is selected.
diff --git a/en/help/ah_zip_file.md b/en/help/ah_zip_file.md
new file mode 100644
index 0000000..ed6daeb
--- /dev/null
+++ b/en/help/ah_zip_file.md
@@ -0,0 +1,15 @@
+### Zip
+
+Compress the specified file(s) (or directory(ies), recursively) on the
+SD card to a zip archive,\
+\
+Multiple Files can be specified by separating them with a newline.\
+\
+If only a single file is specified and no Output Path is give, the
+Output Path will be the same file with a .zip extension.\
+\
+Level is the compression level to use. Higher values will take longer to
+compress but use less space.\
+\
+Specify Delete Orig to delete the original file if the compression
+succeeds.
diff --git a/en/help/ah_zoom_element_alpha.md b/en/help/ah_zoom_element_alpha.md
new file mode 100644
index 0000000..ba34a56
--- /dev/null
+++ b/en/help/ah_zoom_element_alpha.md
@@ -0,0 +1,5 @@
+### Zoom Alpha
+
+Set the alpha level of the specified Zoom image element.\
+\
+0 is invisible, 255 is fully visible.
diff --git a/en/help/ah_zoom_element_colour.md b/en/help/ah_zoom_element_colour.md
new file mode 100644
index 0000000..d8e003b
--- /dev/null
+++ b/en/help/ah_zoom_element_colour.md
@@ -0,0 +1,7 @@
+### Zoom Colour
+
+Set the Colour and End Colour of the specified Zoom oval or rectangle
+element.\
+\
+End Colour is only used if a shading has been specified for the element
+in Zoom.
diff --git a/en/help/ah_zoom_element_image.md b/en/help/ah_zoom_element_image.md
new file mode 100644
index 0000000..ce25d5b
--- /dev/null
+++ b/en/help/ah_zoom_element_image.md
@@ -0,0 +1,3 @@
+### Zoom Image
+
+Set the image source of the specified Zoom image element.
diff --git a/en/help/ah_zoom_element_position.md b/en/help/ah_zoom_element_position.md
new file mode 100644
index 0000000..59065f5
--- /dev/null
+++ b/en/help/ah_zoom_element_position.md
@@ -0,0 +1,4 @@
+### Zoom Position
+
+Set the X and Y coordinates of the specified Zoom element, relative to
+the top-left corner of its widget.
diff --git a/en/help/ah_zoom_element_size.md b/en/help/ah_zoom_element_size.md
new file mode 100644
index 0000000..746ac2c
--- /dev/null
+++ b/en/help/ah_zoom_element_size.md
@@ -0,0 +1,3 @@
+### Zoom Size
+
+Set the width and height of the specified Zoom element.
diff --git a/en/help/ah_zoom_element_state.md b/en/help/ah_zoom_element_state.md
new file mode 100644
index 0000000..30bd476
--- /dev/null
+++ b/en/help/ah_zoom_element_state.md
@@ -0,0 +1,4 @@
+### Zoom State
+
+Set the state of the specified Zoom element, which must be a Switcher or
+(more unusually) an AutoSwitcher.
diff --git a/en/help/ah_zoom_element_text.md b/en/help/ah_zoom_element_text.md
new file mode 100644
index 0000000..6fbe1e2
--- /dev/null
+++ b/en/help/ah_zoom_element_text.md
@@ -0,0 +1,3 @@
+### Zoom Text
+
+Set the text or label of the specified Zoom text or button element.
diff --git a/en/help/ah_zoom_element_text_colour.md b/en/help/ah_zoom_element_text_colour.md
new file mode 100644
index 0000000..bd6c237
--- /dev/null
+++ b/en/help/ah_zoom_element_text_colour.md
@@ -0,0 +1,4 @@
+### Zoom Text Colour
+
+Set the text or label colour of the specified Zoom text or button
+element.
diff --git a/en/help/ah_zoom_element_text_size.md b/en/help/ah_zoom_element_text_size.md
new file mode 100644
index 0000000..09fd544
--- /dev/null
+++ b/en/help/ah_zoom_element_text_size.md
@@ -0,0 +1,3 @@
+### Zoom Text Size
+
+Set the text or label size of the specified Zoom text or button element.
diff --git a/en/help/ah_zoom_element_visibility.md b/en/help/ah_zoom_element_visibility.md
new file mode 100644
index 0000000..0f89cde
--- /dev/null
+++ b/en/help/ah_zoom_element_visibility.md
@@ -0,0 +1,3 @@
+### Zoom Visibility
+
+Show or hide the specified Zoom element.
diff --git a/en/help/eh_accelerometer_gesture.md b/en/help/eh_accelerometer_gesture.md
new file mode 100644
index 0000000..45176fb
--- /dev/null
+++ b/en/help/eh_accelerometer_gesture.md
@@ -0,0 +1,10 @@
+### Gesture
+
+The phone has just been waved around in a particular way.\
+\
+Name is a label to be used for the gesture. To record a pattern, press
+the Camera, Call, Menu, Search or Volume buttons.\
+To record the final point, press-and-hold one of those buttons.\
+\
+Be sure to read the Userguide section on Accelerometer Gestures before
+trying to use this feature.
diff --git a/en/help/eh_alarm.md b/en/help/eh_alarm.md
new file mode 100644
index 0000000..603620f
--- /dev/null
+++ b/en/help/eh_alarm.md
@@ -0,0 +1,10 @@
+### Alarm Clock
+
+The Android alarm clock with the specified label is about to go off.\
+\
+Stop will prevent the system responding to the alarm in any way. It\'s
+unknown if this causes future problems.\
+\
+If you have a 3rd Party alarm, it may have its own event in the 3rd
+Party event category. Not all alarm packages pass along the label of the
+alarm.
diff --git a/en/help/eh_alarm_done.md b/en/help/eh_alarm_done.md
new file mode 100644
index 0000000..a828d28
--- /dev/null
+++ b/en/help/eh_alarm_done.md
@@ -0,0 +1,6 @@
+### Alarm Done
+
+An Android alarm clock alarm has just been dismissed or snoozed.\
+\
+If you have a 3rd Party alarm, it may have its own event in the 3rd
+Party event category.
diff --git a/en/help/eh_assist.md b/en/help/eh_assist.md
new file mode 100644
index 0000000..1586602
--- /dev/null
+++ b/en/help/eh_assist.md
@@ -0,0 +1,8 @@
+### Assistance Request
+
+The user has just requested assistance within the specified app.\
+\
+On standard Android devices, this occurs when the user strokes up
+through the bottom middle of the display.\
+\
+Some ROMs do not support specification of an App.
diff --git a/en/help/eh_battery_changed.md b/en/help/eh_battery_changed.md
new file mode 100644
index 0000000..94b18ae
--- /dev/null
+++ b/en/help/eh_battery_changed.md
@@ -0,0 +1,5 @@
+### Battery Changed
+
+The battery level has changed.\
+\
+Note that this will occur quite often.
diff --git a/en/help/eh_boot_completed.md b/en/help/eh_boot_completed.md
new file mode 100644
index 0000000..00a38b2
--- /dev/null
+++ b/en/help/eh_boot_completed.md
@@ -0,0 +1,10 @@
+### Device Boot
+
+The phone has just finished turning on (after being shut down, not just
+the screen blanking).\
+\
+It\'s advisable that any tasks linked to this event start with a Wait
+action of e.g. 5 seconds, because Android is extremely busy immediately
+after a boot. Note also that the SD card may not be yet mounted when
+this event is received, which is another reason for delaying the task if
+it relies on the SD card being present.
diff --git a/en/help/eh_button_search_long.md b/en/help/eh_button_search_long.md
new file mode 100644
index 0000000..07e4e8c
--- /dev/null
+++ b/en/help/eh_button_search_long.md
@@ -0,0 +1,7 @@
+### Button: Long Search
+
+The search button has been long-pressed.\
+\
+In order for this event to work, Tasker\'s Search Helper should be
+selected as the activity to handle the press when Android shows the
+relevant dialog.
diff --git a/en/help/eh_button_view_clicked.md b/en/help/eh_button_view_clicked.md
new file mode 100644
index 0000000..6ff9676
--- /dev/null
+++ b/en/help/eh_button_view_clicked.md
@@ -0,0 +1,11 @@
+### Button Widget Clicked
+
+A Button (Normal, Checkbox, Toggle etc) has been clicked.\
+\
+If Label is specified, the button must have a label which matches it.
+Note that e.g. Image buttons don\'t have labels.\
+\
+Click Length: long clicks will only be registered if the application
+containing the button allows long clicks of it.\
+\
+New Button State is only applicable for Toggle and Checkbox buttons.
diff --git a/en/help/eh_camera_button.md b/en/help/eh_camera_button.md
new file mode 100644
index 0000000..1c97602
--- /dev/null
+++ b/en/help/eh_camera_button.md
@@ -0,0 +1,7 @@
+### Button: Camera
+
+The camera hardware button has been pressed and held.\
+\
+Often, if you respond to this event, you will want to set the Priority
+high and also set the Abort flag so that the camera application is not
+launched.
diff --git a/en/help/eh_custom_setting.md b/en/help/eh_custom_setting.md
new file mode 100644
index 0000000..9e86e18
--- /dev/null
+++ b/en/help/eh_custom_setting.md
@@ -0,0 +1,15 @@
+### Custom Setting
+
+Listen for changes in settings in the three Settings Tables on Android
+(Global, Secure and System)
+
+If you don\'t set the **Value** the event will trigger on any value.
+
+In the task, the new value for the configured Custom Setting will be
+available in the **%evtprm3** variable
+
+You can get all the info about the change in the task by accessing the
+**%evtprm()** array
+
+Example: [How to enable Android P's Dark Theme when Night Light is
+on](https://www.xda-developers.com/enable-android-p-dark-theme-night-light/)
diff --git a/en/help/eh_date_set.md b/en/help/eh_date_set.md
new file mode 100644
index 0000000..af8ca32
--- /dev/null
+++ b/en/help/eh_date_set.md
@@ -0,0 +1,6 @@
+### Date Set
+
+The date or time has been changed.\
+\
+(it\'s a mystery to the author why Android reports the time has been set
+when the date is changed)
diff --git a/en/help/eh_file.md b/en/help/eh_file.md
new file mode 100644
index 0000000..fbc352a
--- /dev/null
+++ b/en/help/eh_file.md
@@ -0,0 +1,18 @@
+### File Events
+
+The named operation was just carried out on the specified SD card file.\
+\
+There will always be an OPEN event before MODIFY (if the file is
+written) then CLOSE events.\
+\
+The file must exist when Tasker\'s UI is exited or the SD card is
+inserted for this event to be active.\
+\
+Be very careful if you act on a file event by doing an action with the
+file. For instance, if you respond to an open event by copying the file
+make sure you have Abort New Task set in task properties, since the act
+of copying the file will trigger another open event and an endless loop
+will occur otherwise.\
+\
+Limitation: if a file is deleted and recreated, subsequent file events
+will not be reported.
diff --git a/en/help/eh_gentle_alarm.md b/en/help/eh_gentle_alarm.md
new file mode 100644
index 0000000..0d23a2e
--- /dev/null
+++ b/en/help/eh_gentle_alarm.md
@@ -0,0 +1,7 @@
+### Gentle Alarm
+
+Info:\
+\
+\\thttp://m.mobitobi.com/en/android/gentlealarm.php\
+\
+Requires version 3.1.0+
diff --git a/en/help/eh_index.md b/en/help/eh_index.md
new file mode 100644
index 0000000..bd42457
--- /dev/null
+++ b/en/help/eh_index.md
@@ -0,0 +1,461 @@
+---
+title: 'Tasker: Event A-Z'
+---
+
+### Tasker: Event A-Z
+
+#### Alarm Clock
+
+The Android alarm clock with the specified label is about to go off.\
+\
+Stop will prevent the system responding to the alarm in any way. It\'s
+unknown if this causes future problems.\
+\
+If you have a 3rd Party alarm, it may have its own event in the 3rd
+Party event category. Not all alarm packages pass along the label of the
+alarm.
+
+#### Alarm Done
+
+An Android alarm clock alarm has just been dismissed or snoozed.\
+\
+If you have a 3rd Party alarm, it may have its own event in the 3rd
+Party event category.
+
+#### Assistance Request
+
+The user has just requested assistance within the specified app.\
+\
+On standard Android devices, this occurs when the user strokes up
+through the bottom middle of the display.\
+\
+Some ROMs do not support specification of an App.
+
+#### Battery Changed
+
+The battery level has changed.\
+\
+Note that this will occur quite often.
+
+#### Button Widget Clicked
+
+A Button (Normal, Checkbox, Toggle etc) has been clicked.\
+\
+If Label is specified, the button must have a label which matches it.
+Note that e.g. Image buttons don\'t have labels.\
+\
+Click Length: long clicks will only be registered if the application
+containing the button allows long clicks of it.\
+\
+New Button State is only applicable for Toggle and Checkbox buttons.
+
+#### Button: Camera
+
+The camera hardware button has been pressed and held.\
+\
+Often, if you respond to this event, you will want to set the Priority
+high and also set the Abort flag so that the camera application is not
+launched.
+
+#### Button: Long Search
+
+The search button has been long-pressed.\
+\
+In order for this event to work, Tasker\'s Search Helper should be
+selected as the activity to handle the press when Android shows the
+relevant dialog.
+
+#### Card Mounted
+
+An inserted card has been registered by the system and is ready for
+use.\
+\
+If you specify a title, only the card with a title containing the
+specified characters will match this event context, thus allowing you to
+do different things depending on which card is inserted.\
+\
+You can set the title of a card by creating a file in its base (root)
+directory called xxxxx.ttl (replace xxxxx with the desired title).\
+\
+If you specify a Frequency and it\'s greater than 1, the event will only
+match if the card has been mounted a multiple of Frequency times since
+the last reboot. For example, a Frequency of 3 will match when the card
+has been mounted 3, 6, 9\... times.
+
+#### Card Removed
+
+A card has been physically removed from the device.
+
+#### Card Unmounted
+
+A card has been unregistered by the system in preparation for removal,
+or has been physically removed from the device.
+
+#### Date Set
+
+The date or time has been changed.\
+\
+(it\'s a mystery to the author why Android reports the time has been set
+when the date is changed)
+
+#### Device Boot
+
+The phone has just finished turning on (after being shut down, not just
+the screen blanking).\
+\
+It\'s advisable that any tasks linked to this event start with a Wait
+action of e.g. 5 seconds, because Android is extremely busy immediately
+after a boot. Note also that the SD card may not be yet mounted when
+this event is received, which is another reason for delaying the task if
+it relies on the SD card being present.
+
+#### Device Shutdown
+
+The phone is about to shutdown (completely turned off, not standby).\
+\
+Note: this is right before shutdown. You might backup a file or similar,
+but UI interactions such as dialogs and anything that takes a
+significant amount of time will not work.
+
+#### Display On
+
+The display has just come on.\
+\
+Note that this can occur automatically on many occasions such as when an
+alarm goes off. Most likely you will be better off using the Display
+Unlocked event.
+
+#### Display Unlocked
+
+The display has just been unlocked (with or without an unlock pattern).
+
+#### File Events
+
+The named operation was just carried out on the specified SD card file.\
+\
+There will always be an OPEN event before MODIFY (if the file is
+written) then CLOSE events.\
+\
+The file must exist when Tasker\'s UI is exited or the SD card is
+inserted for this event to be active.\
+\
+Be very careful if you act on a file event by doing an action with the
+file. For instance, if you respond to an open event by copying the file
+make sure you have Abort New Task set in task properties, since the act
+of copying the file will trigger another open event and an endless loop
+will occur otherwise.\
+\
+Limitation: if a file is deleted and recreated, subsequent file events
+will not be reported.
+
+#### Gentle Alarm
+
+Info:\
+\
+\\thttp://m.mobitobi.com/en/android/gentlealarm.php\
+\
+Requires version 3.1.0+
+
+#### Gesture
+
+The phone has just been waved around in a particular way.\
+\
+Name is a label to be used for the gesture. To record a pattern, press
+the Camera, Call, Menu, Search or Volume buttons.\
+To record the final point, press-and-hold one of those buttons.\
+\
+Be sure to read the Userguide section on Accelerometer Gestures before
+trying to use this feature.
+
+#### Intent Received
+
+A broadcast intent with the specified parameters has been received.\
+\
+This event is intended for advanced users.\
+\
+See *Intents* in the Userguide for more info.
+
+#### K9 Email Received
+
+An email has been received by the K9 mail agent.\
+\
+Note: the minimum version of K9 supported is 2.3.
+
+#### Kaloer Clock
+
+Info:\
+\
+http://www.kaloer.com/kaloer-clock
+
+#### Missed Call
+
+A call has been missed.\
+\
+This event activates every time there is a new missed call. If you want
+something to happen until a call has been notified, it\'s better to use
+the state Missed Call.
+
+#### Monitor Start
+
+Tasker\'s Monitor Service has just started.\
+\
+Tasks triggered from this action are guaranteed to be submitted for
+execution before any other and are therefore a good place to perform
+preparatory actions like setting the initial values for variables.\
+\
+If it\'s necessary to ensure that resulting tasks finish before any
+other task starts, set the Task Priority in the profile properties to
+the highest level.
+
+#### New Package
+
+A new package has just been added to the system.\
+\
+Name is the name of the new package e.g. \'Analog Compass\'\
+\
+Package is the package name e.g. com.example.packagename.\
+\
+This event does not occur when a new version of a package is replacing
+an older one.
+
+#### New Window
+
+A new window has appeared e.g. activity, popup.\
+\
+If Label is specified the label of the new window must match it.\
+\
+For some windows, the label might be that of the first item in the
+window e.g. a menu entry or even a button.\
+\
+To show all window titles, leave all parameters empty and in the
+resulting task add a Flash action of %WIN.
+
+#### Notification
+
+A notification has been sent to the status bar.\
+\
+If an Owner Application is specified, the notification must have been
+sent by the corresponding package.\
+\
+If the notification is a duplicate of one already in the status bar, it
+will still trigger the event (unless New Only is checked, on Android
+6+)\
+\
+Other Text (Android 6+) is a collection of any other texts found in the
+notification.\
+\
+This event is not triggered by Tasker-generated notifications.
+
+#### Notification Click
+
+A notification in the status bar pulldown has been clicked.\
+\
+If an Owner Application is specified, it must match that of the
+notification. Note that some apps are not reliable in this regard.\
+\
+If a Title is specified, the title of the notification must match it.\
+\
+If Tasker\'s Accessibility Service is not enabled, only notifications
+created by Tasker\'s Notify actions can be detected.
+
+#### Notification Removed
+
+A notification has been removed from the status bar.\
+\
+If an Owner Application is specified, the notification must have been
+sent by the corresponding package.\
+\
+Other Text (Android 6+) is a collection of any other texts found in the
+notification.\
+\
+This event is not triggered by Tasker-generated notifications.
+
+#### Notify My Android
+
+Info:\
+\
+http://notifymyandroid.com
+
+#### OpenWatch
+
+Info:\
+\
+http://www.smartmadsoft.com/
+
+#### Package Removed
+
+A package has just been removed from the system.\
+\
+Package is the package name e.g. com.example.packagename
+
+#### Package Updated
+
+An existing package has just been updated.\
+\
+Name is the name of the updated package e.g. \'Analog Compass\'\
+\
+Package is the package name e.g. com.example.packagename
+
+#### Phone Idle
+
+The phone is not doing anything (likely a call is just finished).
+
+#### Phone Offhook
+
+The phone has just gone off the hook (at least one call exists that is
+dialling, active or on hold).
+
+#### Phone Ringing
+
+There is an incoming phone call.\
+\
+If specified, Caller must match the incoming call (see *Pattern
+Matching* in the Userguide).\
+\
+The caller number will be 0 and the caller name ? if the number is
+hidden or unknown.
+
+#### Pomodroido
+
+Info:\
+\
+\\twww.pomodroido.com
+
+#### Quick Setting Clicked
+
+A custom tile previously added to the system Quick Settings panel has
+been clicked.\
+\
+Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support.
+
+#### Radardroid
+
+Info:\
+\
+\\twww.radardroid.com
+
+#### Received Data SMS
+
+A data SMS has been received.\
+\
+Data SMSs are sent to particular ports. This event will trigger on an
+SMS to any port, unless a particular one is specified.\
+\
+Data is the Base64-encoded binary data which was received, accessible
+via %evtprm3 in the resulting task.\
+It can be e.g. written to a file with Write Binary or converted decoded
+to a string (assuming the binary data represents a string) with the
+Variable Convert action.
+
+#### Received Text
+
+A text message has been received.\
+\
+If the Sender parameter is filled in, only texts from senders that match
+the Sender parameter will match.\
+\
+You can long-click multiple times to match multiple senders.\
+\
+Content is the Body of an SMS, or the Subject or an MMS.
+
+#### Reddit Notify
+
+The Number parameter refers to the number of unread emails or the new
+Karma total.\
+\
+The Message parameter matches against all of the new messages joined
+together.
+
+#### SMS Failure
+
+The SMS sent to the (optional) specified phone number failed.\
+\
+Only works for an SMS sent by Tasker\'s Send SMS action.
+
+#### SMS Success
+
+The SMS sent to the (optional) specified phone number succeeded.\
+\
+Only works for an SMS sent by Tasker\'s Send SMS action.
+
+#### Screebl
+
+Info:\
+\
+http://keyeslabs.com/joomla/screebl\
+\
+Warning: this event may fire very rapidly on the edge of the orientation
+range. It\'s therefore a very good idea to configure a cooldown time in
+the Profile Properties of this profile.
+
+#### Shake
+
+The device is being physically shaken.\
+\
+Note: on some devices the Axis may be incorrect e.g. Left-Right may be
+triggered by Up-Down shaking.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring /
+Accelerometer
+
+#### Steps Taken
+
+The specified number of steps have been taken.\
+\
+The total number of steps taken since the last reset is available in the
+triggered task in %evtprm1.\
+\
+A restart of the device, disabling the profile, disabling or
+reinstalling Tasker causes the count to **reset**.\
+\
+When other contexts in the same profile are not active, the count is
+**paused**.\
+\
+Requires Android version 4.4+ and that a hardware pedometer be present
+on the device.\
+\
+When the device is sleeping, the step count will continue (without
+significant power usage) and the event will be triggered on wakeup an
+amount of times appropriate to how many steps were taken while
+sleeping.\
+\
+Note: in order to improve accuracy, the response time can be on the
+order of a few seconds.\
+\
+See Also: Prefs / Monitor / Display Off / Step Sensor.
+
+#### Timer Change
+
+The status of the Task Timer widget with the specified task name has
+changed.
+
+#### Variable Cleared
+
+The user variable (not built-in) with the specified name (or any name if
+blank) has just been cleared (via action Variable Clear).\
+\
+Note: if multiple variables are cleared at once, (by giving Variable
+Clear an empty argument) this event will only match once, and only if no
+Variable name is specified for the event.
+
+#### Variable Set
+
+The user variable with the specified name (or any name if blank) has
+just had its value set (via one of Variable Set/Inc/Dec/Randomize).\
+\
+This event can also trigger on some \'dynamic\' built-in variables: see
+the *Variables* section of the Userguide for details.
+
+#### Widget Locker
+
+Info:\
+\
+http://teslacoilsw.com/widgetlocker
+
+#### Zoom Click
+
+A Zoom element from the specified Widget and/or with the specified name
+has been clicked.\
+\
+Zoom is a unique widget designer allowing you to create widgets that
+look and behave however you like.
diff --git a/en/help/eh_intent_received.md b/en/help/eh_intent_received.md
new file mode 100644
index 0000000..c6403c9
--- /dev/null
+++ b/en/help/eh_intent_received.md
@@ -0,0 +1,7 @@
+### Intent Received
+
+A broadcast intent with the specified parameters has been received.\
+\
+This event is intended for advanced users.\
+\
+See *Intents* in the Userguide for more info.
diff --git a/en/help/eh_kaloer_clock.md b/en/help/eh_kaloer_clock.md
new file mode 100644
index 0000000..9767ce1
--- /dev/null
+++ b/en/help/eh_kaloer_clock.md
@@ -0,0 +1,5 @@
+### Kaloer Clock
+
+Info:\
+\
+http://www.kaloer.com/kaloer-clock
diff --git a/en/help/eh_media_mounted.md b/en/help/eh_media_mounted.md
new file mode 100644
index 0000000..a93bd4d
--- /dev/null
+++ b/en/help/eh_media_mounted.md
@@ -0,0 +1,16 @@
+### Card Mounted
+
+An inserted card has been registered by the system and is ready for
+use.\
+\
+If you specify a title, only the card with a title containing the
+specified characters will match this event context, thus allowing you to
+do different things depending on which card is inserted.\
+\
+You can set the title of a card by creating a file in its base (root)
+directory called xxxxx.ttl (replace xxxxx with the desired title).\
+\
+If you specify a Frequency and it\'s greater than 1, the event will only
+match if the card has been mounted a multiple of Frequency times since
+the last reboot. For example, a Frequency of 3 will match when the card
+has been mounted 3, 6, 9\... times.
diff --git a/en/help/eh_media_removed.md b/en/help/eh_media_removed.md
new file mode 100644
index 0000000..e818cb8
--- /dev/null
+++ b/en/help/eh_media_removed.md
@@ -0,0 +1,3 @@
+### Card Removed
+
+A card has been physically removed from the device.
diff --git a/en/help/eh_media_unmounted.md b/en/help/eh_media_unmounted.md
new file mode 100644
index 0000000..936ee9c
--- /dev/null
+++ b/en/help/eh_media_unmounted.md
@@ -0,0 +1,4 @@
+### Card Unmounted
+
+A card has been unregistered by the system in preparation for removal,
+or has been physically removed from the device.
diff --git a/en/help/eh_missed_call.md b/en/help/eh_missed_call.md
new file mode 100644
index 0000000..3b1112b
--- /dev/null
+++ b/en/help/eh_missed_call.md
@@ -0,0 +1,7 @@
+### Missed Call
+
+A call has been missed.\
+\
+This event activates every time there is a new missed call. If you want
+something to happen until a call has been notified, it\'s better to use
+the state Missed Call.
diff --git a/en/help/eh_monitor_start.md b/en/help/eh_monitor_start.md
new file mode 100644
index 0000000..9349bcc
--- /dev/null
+++ b/en/help/eh_monitor_start.md
@@ -0,0 +1,11 @@
+### Monitor Start
+
+Tasker\'s Monitor Service has just started.\
+\
+Tasks triggered from this action are guaranteed to be submitted for
+execution before any other and are therefore a good place to perform
+preparatory actions like setting the initial values for variables.\
+\
+If it\'s necessary to ensure that resulting tasks finish before any
+other task starts, set the Task Priority in the profile properties to
+the highest level.
diff --git a/en/help/eh_new_notification.md b/en/help/eh_new_notification.md
new file mode 100644
index 0000000..c99ec79
--- /dev/null
+++ b/en/help/eh_new_notification.md
@@ -0,0 +1,15 @@
+### Notification
+
+A notification has been sent to the status bar.\
+\
+If an Owner Application is specified, the notification must have been
+sent by the corresponding package.\
+\
+If the notification is a duplicate of one already in the status bar, it
+will still trigger the event (unless New Only is checked, on Android
+6+)\
+\
+Other Text (Android 6+) is a collection of any other texts found in the
+notification.\
+\
+This event is not triggered by Tasker-generated notifications.
diff --git a/en/help/eh_new_package.md b/en/help/eh_new_package.md
new file mode 100644
index 0000000..29a356b
--- /dev/null
+++ b/en/help/eh_new_package.md
@@ -0,0 +1,10 @@
+### New Package
+
+A new package has just been added to the system.\
+\
+Name is the name of the new package e.g. \'Analog Compass\'\
+\
+Package is the package name e.g. com.example.packagename.\
+\
+This event does not occur when a new version of a package is replacing
+an older one.
diff --git a/en/help/eh_new_window.md b/en/help/eh_new_window.md
new file mode 100644
index 0000000..0587e1f
--- /dev/null
+++ b/en/help/eh_new_window.md
@@ -0,0 +1,11 @@
+### New Window
+
+A new window has appeared e.g. activity, popup.\
+\
+If Label is specified the label of the new window must match it.\
+\
+For some windows, the label might be that of the first item in the
+window e.g. a menu entry or even a button.\
+\
+To show all window titles, leave all parameters empty and in the
+resulting task add a Flash action of %WIN.
diff --git a/en/help/eh_nfc_tag.md b/en/help/eh_nfc_tag.md
new file mode 100644
index 0000000..5c89795
--- /dev/null
+++ b/en/help/eh_nfc_tag.md
@@ -0,0 +1,12 @@
+#### NFC Tag
+
+Allows you to react to a scanned NFC tag.
+
+You can react by ID, Content or both. This allows you to react to NFC
+Tags that you don\'t write yourself. For example, if you have an old key
+card lying around that has an NFC chip in it, you can react to it by ID
+and do your automations that way.
+
+Check out [this video
+example](https://www.youtube.com/watch?v=t3cbS3aez6M) to see this in
+action.
diff --git a/en/help/eh_notification_clicked.md b/en/help/eh_notification_clicked.md
new file mode 100644
index 0000000..a8d12b5
--- /dev/null
+++ b/en/help/eh_notification_clicked.md
@@ -0,0 +1,11 @@
+### Notification Click
+
+A notification in the status bar pulldown has been clicked.\
+\
+If an Owner Application is specified, it must match that of the
+notification. Note that some apps are not reliable in this regard.\
+\
+If a Title is specified, the title of the notification must match it.\
+\
+If Tasker\'s Accessibility Service is not enabled, only notifications
+created by Tasker\'s Notify actions can be detected.
diff --git a/en/help/eh_notification_removed.md b/en/help/eh_notification_removed.md
new file mode 100644
index 0000000..6572310
--- /dev/null
+++ b/en/help/eh_notification_removed.md
@@ -0,0 +1,11 @@
+### Notification Removed
+
+A notification has been removed from the status bar.\
+\
+If an Owner Application is specified, the notification must have been
+sent by the corresponding package.\
+\
+Other Text (Android 6+) is a collection of any other texts found in the
+notification.\
+\
+This event is not triggered by Tasker-generated notifications.
diff --git a/en/help/eh_notifymyandroid.md b/en/help/eh_notifymyandroid.md
new file mode 100644
index 0000000..d7ddb2d
--- /dev/null
+++ b/en/help/eh_notifymyandroid.md
@@ -0,0 +1,5 @@
+### Notify My Android
+
+Info:\
+\
+http://notifymyandroid.com
diff --git a/en/help/eh_openwatch.md b/en/help/eh_openwatch.md
new file mode 100644
index 0000000..a362fa2
--- /dev/null
+++ b/en/help/eh_openwatch.md
@@ -0,0 +1,5 @@
+### OpenWatch
+
+Info:\
+\
+http://www.smartmadsoft.com/
diff --git a/en/help/eh_package_removed.md b/en/help/eh_package_removed.md
new file mode 100644
index 0000000..a24a942
--- /dev/null
+++ b/en/help/eh_package_removed.md
@@ -0,0 +1,5 @@
+### Package Removed
+
+A package has just been removed from the system.\
+\
+Package is the package name e.g. com.example.packagename
diff --git a/en/help/eh_package_updated.md b/en/help/eh_package_updated.md
new file mode 100644
index 0000000..95d7a55
--- /dev/null
+++ b/en/help/eh_package_updated.md
@@ -0,0 +1,7 @@
+### Package Updated
+
+An existing package has just been updated.\
+\
+Name is the name of the updated package e.g. \'Analog Compass\'\
+\
+Package is the package name e.g. com.example.packagename
diff --git a/en/help/eh_phone_idle.md b/en/help/eh_phone_idle.md
new file mode 100644
index 0000000..69dd62a
--- /dev/null
+++ b/en/help/eh_phone_idle.md
@@ -0,0 +1,3 @@
+### Phone Idle
+
+The phone is not doing anything (likely a call is just finished).
diff --git a/en/help/eh_phone_offhook.md b/en/help/eh_phone_offhook.md
new file mode 100644
index 0000000..90d07a1
--- /dev/null
+++ b/en/help/eh_phone_offhook.md
@@ -0,0 +1,4 @@
+### Phone Offhook
+
+The phone has just gone off the hook (at least one call exists that is
+dialling, active or on hold).
diff --git a/en/help/eh_phone_ringing.md b/en/help/eh_phone_ringing.md
new file mode 100644
index 0000000..cef71c1
--- /dev/null
+++ b/en/help/eh_phone_ringing.md
@@ -0,0 +1,9 @@
+### Phone Ringing
+
+There is an incoming phone call.\
+\
+If specified, Caller must match the incoming call (see *Pattern
+Matching* in the Userguide).\
+\
+The caller number will be 0 and the caller name ? if the number is
+hidden or unknown.
diff --git a/en/help/eh_plugin.md b/en/help/eh_plugin.md
new file mode 100644
index 0000000..e491af7
--- /dev/null
+++ b/en/help/eh_plugin.md
@@ -0,0 +1,7 @@
+### Plugin
+
+Listens for events of the specified plugin being triggered.\
+\
+WARNING: data you enter in the plugin configuration screen is collected
+by the \*plugin\*, not by Tasker. If the plugin has Internet permissions
+it could e.g. transmit your data to third-parties.
diff --git a/en/help/eh_pomodroido.md b/en/help/eh_pomodroido.md
new file mode 100644
index 0000000..1c31096
--- /dev/null
+++ b/en/help/eh_pomodroido.md
@@ -0,0 +1,5 @@
+### Pomodroido
+
+Info:\
+\
+\\twww.pomodroido.com
diff --git a/en/help/eh_quick_setting_clicked.md b/en/help/eh_quick_setting_clicked.md
new file mode 100644
index 0000000..0c0194d
--- /dev/null
+++ b/en/help/eh_quick_setting_clicked.md
@@ -0,0 +1,6 @@
+### Quick Setting Clicked
+
+A custom tile previously added to the system Quick Settings panel has
+been clicked.\
+\
+Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support.
diff --git a/en/help/eh_radardroid.md b/en/help/eh_radardroid.md
new file mode 100644
index 0000000..4f6adbd
--- /dev/null
+++ b/en/help/eh_radardroid.md
@@ -0,0 +1,5 @@
+### Radardroid
+
+Info:\
+\
+\\twww.radardroid.com
diff --git a/en/help/eh_received_data_sms.md b/en/help/eh_received_data_sms.md
new file mode 100644
index 0000000..2113edf
--- /dev/null
+++ b/en/help/eh_received_data_sms.md
@@ -0,0 +1,12 @@
+### Received Data SMS
+
+A data SMS has been received.\
+\
+Data SMSs are sent to particular ports. This event will trigger on an
+SMS to any port, unless a particular one is specified.\
+\
+Data is the Base64-encoded binary data which was received, accessible
+via %evtprm3 in the resulting task.\
+It can be e.g. written to a file with Write Binary or converted decoded
+to a string (assuming the binary data represents a string) with the
+Variable Convert action.
diff --git a/en/help/eh_received_email.md b/en/help/eh_received_email.md
new file mode 100644
index 0000000..f1e0844
--- /dev/null
+++ b/en/help/eh_received_email.md
@@ -0,0 +1,5 @@
+### K9 Email Received
+
+An email has been received by the K9 mail agent.\
+\
+Note: the minimum version of K9 supported is 2.3.
diff --git a/en/help/eh_received_sms.md b/en/help/eh_received_sms.md
new file mode 100644
index 0000000..268ce1b
--- /dev/null
+++ b/en/help/eh_received_sms.md
@@ -0,0 +1,10 @@
+### Received Text
+
+A text message has been received.\
+\
+If the Sender parameter is filled in, only texts from senders that match
+the Sender parameter will match.\
+\
+You can long-click multiple times to match multiple senders.\
+\
+Content is the Body of an SMS, or the Subject or an MMS.
diff --git a/en/help/eh_redditnotify.md b/en/help/eh_redditnotify.md
new file mode 100644
index 0000000..559fec8
--- /dev/null
+++ b/en/help/eh_redditnotify.md
@@ -0,0 +1,7 @@
+### Reddit Notify
+
+The Number parameter refers to the number of unread emails or the new
+Karma total.\
+\
+The Message parameter matches against all of the new messages joined
+together.
diff --git a/en/help/eh_screebl.md b/en/help/eh_screebl.md
new file mode 100644
index 0000000..be9a83f
--- /dev/null
+++ b/en/help/eh_screebl.md
@@ -0,0 +1,9 @@
+### Screebl
+
+Info:\
+\
+http://keyeslabs.com/joomla/screebl\
+\
+Warning: this event may fire very rapidly on the edge of the orientation
+range. It\'s therefore a very good idea to configure a cooldown time in
+the Profile Properties of this profile.
diff --git a/en/help/eh_screen_on.md b/en/help/eh_screen_on.md
new file mode 100644
index 0000000..c49233c
--- /dev/null
+++ b/en/help/eh_screen_on.md
@@ -0,0 +1,7 @@
+### Display On
+
+The display has just come on.\
+\
+Note that this can occur automatically on many occasions such as when an
+alarm goes off. Most likely you will be better off using the Display
+Unlocked event.
diff --git a/en/help/eh_secondary_app_opened.md b/en/help/eh_secondary_app_opened.md
new file mode 100644
index 0000000..bf42852
--- /dev/null
+++ b/en/help/eh_secondary_app_opened.md
@@ -0,0 +1,10 @@
+#### Secondary App Opened
+
+Allows you to react to the opening of the **Tasker Secondary** app.
+
+This can be used, for example, to launch a task with the double-tap of
+the power button, instead of opening the camera, or to map the Bixby
+button to a task on a Samsung device.
+
+To check out an example of how this can be used check out [this
+video](https://www.youtube.com/watch?v=WLsw2D2NJVU).
diff --git a/en/help/eh_shake.md b/en/help/eh_shake.md
new file mode 100644
index 0000000..18e17bf
--- /dev/null
+++ b/en/help/eh_shake.md
@@ -0,0 +1,9 @@
+### Shake
+
+The device is being physically shaken.\
+\
+Note: on some devices the Axis may be incorrect e.g. Left-Right may be
+triggered by Up-Down shaking.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring /
+Accelerometer
diff --git a/en/help/eh_shutdown.md b/en/help/eh_shutdown.md
new file mode 100644
index 0000000..872a1d1
--- /dev/null
+++ b/en/help/eh_shutdown.md
@@ -0,0 +1,7 @@
+### Device Shutdown
+
+The phone is about to shutdown (completely turned off, not standby).\
+\
+Note: this is right before shutdown. You might backup a file or similar,
+but UI interactions such as dialogs and anything that takes a
+significant amount of time will not work.
diff --git a/en/help/eh_sms_failure.md b/en/help/eh_sms_failure.md
new file mode 100644
index 0000000..40f8ccd
--- /dev/null
+++ b/en/help/eh_sms_failure.md
@@ -0,0 +1,5 @@
+### SMS Failure
+
+The SMS sent to the (optional) specified phone number failed.\
+\
+Only works for an SMS sent by Tasker\'s Send SMS action.
diff --git a/en/help/eh_sms_success.md b/en/help/eh_sms_success.md
new file mode 100644
index 0000000..dc9ee8d
--- /dev/null
+++ b/en/help/eh_sms_success.md
@@ -0,0 +1,5 @@
+### SMS Success
+
+The SMS sent to the (optional) specified phone number succeeded.\
+\
+Only works for an SMS sent by Tasker\'s Send SMS action.
diff --git a/en/help/eh_steps.md b/en/help/eh_steps.md
new file mode 100644
index 0000000..2aebdb2
--- /dev/null
+++ b/en/help/eh_steps.md
@@ -0,0 +1,25 @@
+### Steps Taken
+
+The specified number of steps have been taken.\
+\
+The total number of steps taken since the last reset is available in the
+triggered task in %evtprm1.\
+\
+A restart of the device, disabling the profile, disabling or
+reinstalling Tasker causes the count to **reset**.\
+\
+When other contexts in the same profile are not active, the count is
+**paused**.\
+\
+Requires Android version 4.4+ and that a hardware pedometer be present
+on the device.\
+\
+When the device is sleeping, the step count will continue (without
+significant power usage) and the event will be triggered on wakeup an
+amount of times appropriate to how many steps were taken while
+sleeping.\
+\
+Note: in order to improve accuracy, the response time can be on the
+order of a few seconds.\
+\
+See Also: Prefs / Monitor / Display Off / Step Sensor.
diff --git a/en/help/eh_timer_change.md b/en/help/eh_timer_change.md
new file mode 100644
index 0000000..a09bacc
--- /dev/null
+++ b/en/help/eh_timer_change.md
@@ -0,0 +1,4 @@
+### Timer Change
+
+The status of the Task Timer widget with the specified task name has
+changed.
diff --git a/en/help/eh_user_present.md b/en/help/eh_user_present.md
new file mode 100644
index 0000000..2aba0a1
--- /dev/null
+++ b/en/help/eh_user_present.md
@@ -0,0 +1,3 @@
+### Display Unlocked
+
+The display has just been unlocked (with or without an unlock pattern).
diff --git a/en/help/eh_variable_cleared.md b/en/help/eh_variable_cleared.md
new file mode 100644
index 0000000..34772cc
--- /dev/null
+++ b/en/help/eh_variable_cleared.md
@@ -0,0 +1,8 @@
+### Variable Cleared
+
+The user variable (not built-in) with the specified name (or any name if
+blank) has just been cleared (via action Variable Clear).\
+\
+Note: if multiple variables are cleared at once, (by giving Variable
+Clear an empty argument) this event will only match once, and only if no
+Variable name is specified for the event.
diff --git a/en/help/eh_variable_set.md b/en/help/eh_variable_set.md
new file mode 100644
index 0000000..75786d3
--- /dev/null
+++ b/en/help/eh_variable_set.md
@@ -0,0 +1,7 @@
+### Variable Set
+
+The user variable with the specified name (or any name if blank) has
+just had its value set (via one of Variable Set/Inc/Dec/Randomize).\
+\
+This event can also trigger on some \'dynamic\' built-in variables: see
+the *Variables* section of the Userguide for details.
diff --git a/en/help/eh_volume_long_press.md b/en/help/eh_volume_long_press.md
new file mode 100644
index 0000000..f850793
--- /dev/null
+++ b/en/help/eh_volume_long_press.md
@@ -0,0 +1,82 @@
+#### Volume Long Press
+
+Allows you to react to long pressing the physical volume buttons on your
+device.
+
+To use this event you need to grant the special
+**SET\_VOLUME\_KEY\_LONG\_PRESS\_LISTENER** permission. Check out how to
+do so [here](ah_volume_long_press_grant.html).
+
+**Important Note:** This doesn\'t seem to work reliably with the screen
+off in all situations. It seems to work very reliably if music is
+playing and less reliably otherwise. This is due to system limitations
+on those devices and it\'s not something Tasker can control.
+
+**Important Note 2:** If you\'re using Lineage OS or similar make sure
+to disable its own handling of long pressing the volume keys when the
+screen is off or it won\'t work at all with Tasker.
+
+To check out an example of how this can be used check out [this
+video](https://www.youtube.com/watch?v=x-z-RvREF5E).
+
+::: {.inputs}
+::: {.input}
+::: {.title}
+Type
+:::
+
+::: {.text}
+The button you want to react to. Unfortunately it\'s not possible to
+react to both being pressed at the same time. Android doesn\'t send that
+event to Tasker.
+:::
+:::
+
+::: {.input}
+::: {.title}
+Additional Time
+:::
+
+::: {.text}
+**Important Note:** Only works with the screen on.
+:::
+
+::: {.text}
+Use the magnifying glass to help you setup this field.
+:::
+
+::: {.text}
+Check how much additional time you held the button down in the task by
+checking **%evtprm(2)**.
+:::
+
+::: {.text}
+If not set, Tasker will simply trigger the event once, when it detects
+the long press on the selected volume button.
+:::
+
+::: {.text}
+If set, will make Tasker only react only in certain conditions:
+:::
+
+::: {.text}
+- **Number**: Only trigger after the button has been pressed for those
+ many seconds after the long press is detected. For example, setting
+ it to **3** will make the event only trigger if you press the volume
+ button for a bit more than 3 seconds
+- **Continuous Mode**: Only trigger after the button has been pressed
+ for x many seconds after the long press is detected and then trigger
+ again for each additional second that the button is held. For
+ example, setting it to **continuous(0)** will make the event trigger
+ right after the long press is detected and then trigger again each
+ second until you release the button. Another example: setting it to
+ **continuous(3)** will wait 3 seconds before it starts triggering
+ continuously.
+:::
+
+::: {.text}
+Check out a video example of using the **Additional Time** feature
+[here](https://www.youtube.com/watch?v=E9yvAykDg0U).
+:::
+:::
+:::
diff --git a/en/help/eh_widgetlocker.md b/en/help/eh_widgetlocker.md
new file mode 100644
index 0000000..c512032
--- /dev/null
+++ b/en/help/eh_widgetlocker.md
@@ -0,0 +1,5 @@
+### Widget Locker
+
+Info:\
+\
+http://teslacoilsw.com/widgetlocker
diff --git a/en/help/eh_zoom_click.md b/en/help/eh_zoom_click.md
new file mode 100644
index 0000000..634962e
--- /dev/null
+++ b/en/help/eh_zoom_click.md
@@ -0,0 +1,7 @@
+### Zoom Click
+
+A Zoom element from the specified Widget and/or with the specified name
+has been clicked.\
+\
+Zoom is a unique widget designer allowing you to create widgets that
+look and behave however you like.
diff --git a/en/help/sh_active_user.md b/en/help/sh_active_user.md
new file mode 100644
index 0000000..076970d
--- /dev/null
+++ b/en/help/sh_active_user.md
@@ -0,0 +1,20 @@
+### Active User
+
+Whether the user with the specified ID is active or not.\
+\
+When a different user is selected, this state will become inactive.\
+\
+When returning to the specified user, the state will become active
+again.\
+\
+Note that each user account has it\'s own set of apps, so to detecting
+each user becoming active would require Tasker to be installed under
+each account.\
+\
+In other words, it only makes sense to specify the user ID of the user
+under which the current Tasker install is running.\
+\
+The administrator (first user) ID is usually 0, the action Test System
+can be used to determine other user IDs.\
+\
+This state requires Android 4.2+.
diff --git a/en/help/sh_airplane_mode.md b/en/help/sh_airplane_mode.md
new file mode 100644
index 0000000..6c3e321
--- /dev/null
+++ b/en/help/sh_airplane_mode.md
@@ -0,0 +1,3 @@
+### Airplane Mode
+
+Airplane Mode is enabled.
diff --git a/en/help/sh_battery_level.md b/en/help/sh_battery_level.md
new file mode 100644
index 0000000..dc3144d
--- /dev/null
+++ b/en/help/sh_battery_level.md
@@ -0,0 +1,5 @@
+### Battery Level
+
+The device\'s battery level is within the specified range.\
+\
+The values are inclusive i.e. 37-38 specifies a range with 2 values.
diff --git a/en/help/sh_battery_temperature.md b/en/help/sh_battery_temperature.md
new file mode 100644
index 0000000..53db970
--- /dev/null
+++ b/en/help/sh_battery_temperature.md
@@ -0,0 +1,6 @@
+### Battery Temperature
+
+The device\'s battery temperature is within the specified range of
+degrees celsius.\
+\
+The values are inclusive i.e. 37-38 specifies a range with 2 values.
diff --git a/en/help/sh_bt_connect.md b/en/help/sh_bt_connect.md
new file mode 100644
index 0000000..0d4d021
--- /dev/null
+++ b/en/help/sh_bt_connect.md
@@ -0,0 +1,12 @@
+### BT Connected
+
+The device is connected to another device via Bluetooth. If either of
+Name or Address are specified, they must match a connected device.\
+\
+Connections to non-paired devices (e.g. while pairing is taking place)
+are ignored.\
+\
+Warning: Tasker can\'t directly detect when a BT device is connected,
+only when a connection or disconnection is made.\
+\
+Only usable with Android 2.0+.
diff --git a/en/help/sh_bt_near.md b/en/help/sh_bt_near.md
new file mode 100644
index 0000000..e3edbfa
--- /dev/null
+++ b/en/help/sh_bt_near.md
@@ -0,0 +1,22 @@
+### BT Near
+
+A matching bluetooth device is nearby.\
+\
+If any of the parameters are specified the device must match that
+parameter, otherwise any device will match.\
+\
+Standard/Low-Energy Devices: if you\'re only interested in a particular
+type of device, select only one of these to reduce power usage.\
+\
+Non-Paired Devices: selecting this will use much more power and take
+longer to scan.\
+\
+Toggle BT: if BT on the device is disabled, enable it for the period of
+the scan, probably around 5-15 seconds.\
+\
+A seen device which is no longer visible for approximately two times the
+scan period is forgetten. This is to help prevent the profile bouncing
+on and off at the edge of the signal reception area.\
+\
+The period for BT scanning is specified in Menu / Preferences / Monitor
+/ BT Scan Time.
diff --git a/en/help/sh_bt_status.md b/en/help/sh_bt_status.md
new file mode 100644
index 0000000..f64772a
--- /dev/null
+++ b/en/help/sh_bt_status.md
@@ -0,0 +1,3 @@
+### BT Status
+
+Whether the Bluetooth adapter is enabled or not.
diff --git a/en/help/sh_calendar_entry.md b/en/help/sh_calendar_entry.md
new file mode 100644
index 0000000..18a9687
--- /dev/null
+++ b/en/help/sh_calendar_entry.md
@@ -0,0 +1,13 @@
+### Calendar Entry
+
+An Android Calendar entry with the specified parameters is currently
+active.\
+\
+Any unspecified parameters are ignored i.e. any calendar entry will be
+matched.\
+\
+The *Calendar* field is a pattern match, but the name of the calendar
+provider befoe the : (probably Google) is **not** e.g.
+Google:\*\@test.com is valid, G\*gle:one\@test.com is not.\
+\
+See Also: action Misc / Test, variables %CALTITLE, %CALDESCR, %CALLOC
diff --git a/en/help/sh_call.md b/en/help/sh_call.md
new file mode 100644
index 0000000..3a51567
--- /dev/null
+++ b/en/help/sh_call.md
@@ -0,0 +1,4 @@
+### Call
+
+There is a call in progress, optionally from or to the specified Number
+(see *Pattern Matching* in the Userguide).
diff --git a/en/help/sh_cells_near.md b/en/help/sh_cells_near.md
new file mode 100644
index 0000000..9fa7858
--- /dev/null
+++ b/en/help/sh_cells_near.md
@@ -0,0 +1,29 @@
+### Cell Near
+
+One of the specified cell towers is visible to the phone.\
+\
+Press **Scan** to start collecting cell (tower) information. Leave Scan
+on for at least 10 minutes and move around the location because many
+places are covered by several cells and the phone will often swap
+between them even if you\'re standing still.\
+\
+Tasker will keep the device on while scanning because cell detection is
+more reliable then. If you turn the device off manually or change to a
+different activity, scanning will stop.\
+\
+The first part of each line in the text box indicates the cell tower ID.
+The number afterwards is the \*last seen\* signal strength to that cell.
+The currently connected cell is marked with a less-than sign.\
+\
+This state is a very inaccurate way of determining if you are in a
+particular location, but uses very little power.\
+\
+If active when there is no signal (e.g. during Airplane Mode) this
+context will \*stay active\*.\
+\
+Cells specified in *Ignore Cells* can never cause the context state to
+change, which can be useful if e.g. a particular cell is present in more
+than one desired area.\
+\
+See Also: Prefs / Monitor / Use New Cell API, Prefs / Monitor / Net/Cell
+Wake Screen
diff --git a/en/help/sh_custom_setting.md b/en/help/sh_custom_setting.md
new file mode 100644
index 0000000..c1ff679
--- /dev/null
+++ b/en/help/sh_custom_setting.md
@@ -0,0 +1,10 @@
+### Custom Setting
+
+Monitor settings in the three Settings Tables on Android (Global, Secure
+and System)
+
+Use this to make a profile active or inactive based on any system
+setting\'s value
+
+Example: [How to enable Android P's Dark Theme when Night Light is
+on](https://www.xda-developers.com/enable-android-p-dark-theme-night-light/)
diff --git a/en/help/sh_device_idle.md b/en/help/sh_device_idle.md
new file mode 100644
index 0000000..b35cf27
--- /dev/null
+++ b/en/help/sh_device_idle.md
@@ -0,0 +1,10 @@
+### Device Idle
+
+The device has been sitting unused and unmoving for a sufficiently long
+period of time that it has decided to go into a lower power-use state.\
+\
+May not function for manufacturer-specific power-saving systems. The
+device\'s battery temperature is within the specified range of degrees
+celsius.\
+\
+The values are inclusive i.e. 37-38 specifies a range with 2 values.
diff --git a/en/help/sh_display_orientation.md b/en/help/sh_display_orientation.md
new file mode 100644
index 0000000..1cfa39f
--- /dev/null
+++ b/en/help/sh_display_orientation.md
@@ -0,0 +1,3 @@
+### Display Orientation
+
+Whether the screen is in portrait or landscape mode.
diff --git a/en/help/sh_display_state.md b/en/help/sh_display_state.md
new file mode 100644
index 0000000..a827203
--- /dev/null
+++ b/en/help/sh_display_state.md
@@ -0,0 +1,3 @@
+### Display State
+
+Whether the device display is currently off or on.
diff --git a/en/help/sh_docked.md b/en/help/sh_docked.md
new file mode 100644
index 0000000..b1ace50
--- /dev/null
+++ b/en/help/sh_docked.md
@@ -0,0 +1,10 @@
+### Docked
+
+A car or desk docking station is connected.\
+\
+If you wish to launch an alternative docking application, clear your
+default app for docking and select Tasker when you are presented with
+the choice which app to launch next time you dock.\
+\
+You can then launch an app via a Load App action in Tasker (or not, if
+no docking app is desired).
diff --git a/en/help/sh_dreaming.md b/en/help/sh_dreaming.md
new file mode 100644
index 0000000..8a41c17
--- /dev/null
+++ b/en/help/sh_dreaming.md
@@ -0,0 +1,3 @@
+### Dreaming
+
+This state is active when the display is in Android Daydream mode.
diff --git a/en/help/sh_ethernet_connect.md b/en/help/sh_ethernet_connect.md
new file mode 100644
index 0000000..2ba9404
--- /dev/null
+++ b/en/help/sh_ethernet_connect.md
@@ -0,0 +1,7 @@
+### Ethernet Connect
+
+The device is connected to a network via an ethernet interface (probably
+through a USB adapter).\
+\
+The Active parameter specifies whether or not the ethernet network must
+be the network currently in use in order to match.
diff --git a/en/help/sh_headset.md b/en/help/sh_headset.md
new file mode 100644
index 0000000..326024d
--- /dev/null
+++ b/en/help/sh_headset.md
@@ -0,0 +1,3 @@
+### Headset Plugged
+
+A headset is plugged in.
diff --git a/en/help/sh_heart_rate.md b/en/help/sh_heart_rate.md
new file mode 100644
index 0000000..2cbadf3
--- /dev/null
+++ b/en/help/sh_heart_rate.md
@@ -0,0 +1,6 @@
+### Heart Rate
+
+Whether the current measured heart rate is in the specified range of
+beats per minute (BPM).\
+\
+See also: variable %HEART.
diff --git a/en/help/sh_humidity.md b/en/help/sh_humidity.md
new file mode 100644
index 0000000..1f0e195
--- /dev/null
+++ b/en/help/sh_humidity.md
@@ -0,0 +1,5 @@
+### Humidity
+
+The relative ambient air humidity in percent.\
+\
+See also: variable %TEMP.
diff --git a/en/help/sh_index.md b/en/help/sh_index.md
new file mode 100644
index 0000000..d4f8b21
--- /dev/null
+++ b/en/help/sh_index.md
@@ -0,0 +1,473 @@
+---
+title: 'Tasker: State A-Z'
+---
+
+### Tasker: State A-Z
+
+#### Active User
+
+Whether the user with the specified ID is active or not.\
+\
+When a different user is selected, this state will become inactive.\
+\
+When returning to the specified user, the state will become active
+again.\
+\
+Note that each user account has it\'s own set of apps, so to detecting
+each user becoming active would require Tasker to be installed under
+each account.\
+\
+In other words, it only makes sense to specify the user ID of the user
+under which the current Tasker install is running.\
+\
+The administrator (first user) ID is usually 0, the action Test System
+can be used to determine other user IDs.\
+\
+This state requires Android 4.2+.
+
+#### Airplane Mode
+
+Airplane Mode is enabled.
+
+#### BT Connected
+
+The device is connected to another device via Bluetooth. If either of
+Name or Address are specified, they must match a connected device.\
+\
+Connections to non-paired devices (e.g. while pairing is taking place)
+are ignored.\
+\
+Warning: Tasker can\'t directly detect when a BT device is connected,
+only when a connection or disconnection is made.\
+\
+Only usable with Android 2.0+.
+
+#### BT Near
+
+A matching bluetooth device is nearby.\
+\
+If any of the parameters are specified the device must match that
+parameter, otherwise any device will match.\
+\
+Standard/Low-Energy Devices: if you\'re only interested in a particular
+type of device, select only one of these to reduce power usage.\
+\
+Non-Paired Devices: selecting this will use much more power and take
+longer to scan.\
+\
+Toggle BT: if BT on the device is disabled, enable it for the period of
+the scan, probably around 5-15 seconds.\
+\
+A seen device which is no longer visible for approximately two times the
+scan period is forgetten. This is to help prevent the profile bouncing
+on and off at the edge of the signal reception area.\
+\
+The period for BT scanning is specified in Menu / Preferences / Monitor
+/ BT Scan Time.
+
+#### BT Status
+
+Whether the Bluetooth adapter is enabled or not.
+
+#### Battery Level
+
+The device\'s battery level is within the specified range.\
+\
+The values are inclusive i.e. 37-38 specifies a range with 2 values.
+
+#### Calendar Entry
+
+An Android Calendar entry with the specified parameters is currently
+active.\
+\
+Any unspecified parameters are ignored i.e. any calendar entry will be
+matched.\
+\
+The *Calendar* field is a pattern match, but the name of the calendar
+provider befoe the : (probably Google) is **not** e.g.
+Google:\*\@test.com is valid, G\*gle:one\@test.com is not.\
+\
+See Also: action Misc / Test, variables %CALTITLE, %CALDESCR, %CALLOC
+
+#### Call
+
+There is a call in progress, optionally from or to the specified Number
+(see *Pattern Matching* in the Userguide).
+
+#### Cell Near
+
+One of the specified cell towers is visible to the phone.\
+\
+Press **Scan** to start collecting cell (tower) information. Leave Scan
+on for at least 10 minutes and move around the location because many
+places are covered by several cells and the phone will often swap
+between them even if you\'re standing still.\
+\
+Tasker will keep the device on while scanning because cell detection is
+more reliable then. If you turn the device off manually or change to a
+different activity, scanning will stop.\
+\
+The first part of each line in the text box indicates the cell tower ID.
+The number afterwards is the \*last seen\* signal strength to that cell.
+The currently connected cell is marked with a less-than sign.\
+\
+This state is a very inaccurate way of determining if you are in a
+particular location, but uses very little power.\
+\
+If active when there is no signal (e.g. during Airplane Mode) this
+context will \*stay active\*.\
+\
+Cells specified in *Ignore Cells* can never cause the context state to
+change, which can be useful if e.g. a particular cell is present in more
+than one desired area.\
+\
+See Also: Prefs / Monitor / Use New Cell API, Prefs / Monitor / Net/Cell
+Wake Screen
+
+#### Device Idle
+
+The device has been sitting unused and unmoving for a sufficiently long
+period of time that it has decided to go into a lower power-use state.\
+\
+May not function for manufacturer-specific power-saving systems. The
+device\'s battery temperature is within the specified range of degrees
+celsius.\
+\
+The values are inclusive i.e. 37-38 specifies a range with 2 values.
+
+#### Display Orientation
+
+Whether the screen is in portrait or landscape mode.
+
+#### Display State
+
+Whether the device display is currently off or on.
+
+#### Docked
+
+A car or desk docking station is connected.\
+\
+If you wish to launch an alternative docking application, clear your
+default app for docking and select Tasker when you are presented with
+the choice which app to launch next time you dock.\
+\
+You can then launch an app via a Load App action in Tasker (or not, if
+no docking app is desired).
+
+#### Dreaming
+
+This state is active when the display is in Android Daydream mode.
+
+#### Ethernet Connect
+
+The device is connected to a network via an ethernet interface (probably
+through a USB adapter).\
+\
+The Active parameter specifies whether or not the ethernet network must
+be the network currently in use in order to match.
+
+#### Headset Plugged
+
+A headset is plugged in.
+
+#### Heart Rate
+
+Whether the current measured heart rate is in the specified range of
+beats per minute (BPM).\
+\
+See also: variable %HEART.
+
+#### Humidity
+
+The relative ambient air humidity in percent.\
+\
+See also: variable %TEMP.
+
+#### Keyboard Out
+
+The physical keyboard is showing.
+
+#### Light Level
+
+The current light level as a (massaged) percentage of the minumum and
+maximum light levels ever seen.\
+\
+After setting this state up, you should calibrate it by covering up the
+device for a few seconds and exposing it to bright light.\
+\
+Warning: on at least some devices, 0% is the level of a dimly lit room,
+rather than that of total darkness.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring / Light Sensor
+
+#### Magnetic Field
+
+The absolute magnetic field strength at the current location in
+micro-Tesla.\
+\
+Magnetic fields will be detected better on some axis than on others e.g.
+the base of the device may be more sensitive than the edge.\
+\
+See Also: variable %MFIELD.
+
+#### Media Button
+
+One of the media buttons is pressed.\
+\
+Not all devices have all represented buttons.\
+\
+If *Held* is checked, the key must have been held down for minimally the
+normal key repeat time for this context to become active. Held will not
+function on most devices with Google Voice Search.\
+\
+If *Stop Event* is checked, Tasker will try to prevent the event being
+passed on to other apps when it\'s received. This does not have effect
+use on Android 2.2+ devices because usually one or more apps will try to
+Grab (see below) the event and no others will see it. The changes in
+Android 2.2 have made media button handling very complicated\...\
+\
+*Grab*\
+\
+*Grab* is only relevant for Android 2.2+ devices, which changed the way
+in which the media button is handled. It indicates that Tasker should
+become the sole receiver of media button events. If you don\'t do this,
+Tasker may not receive the events e.g. because a media player has
+requested the events.\
+\
+Note 1: if you **do** enable *Grab*, you probably want to add another
+context to this profile e.g. an application context, so that Tasker
+doesn\'t interfere with media control the whole time.\
+\
+Note 2: Tasker grabs the event control as soon as it\'s necessary and
+releases it as soon as possible. Another app may grab control at a later
+time and so block events to Tasker.\
+\
+Note 3: if you enable *Grab* for any media button, it blocks **all**
+media button events to other apps.\
+\
+Note 4: you can regrab the focus with action Media / Media Button Events
+
+#### Missed Call
+
+The Android call log has one or missed calls.\
+\
+If a Caller is specified, only missed calls from that number are
+relevant (see Pattern Matching in the Userguide).\
+\
+If you want something to happen every time there is a \*new\* missed
+call, use the event Missed Call instead.
+
+#### Mobile Network
+
+The device has mobile data connectivity of one of the checked types.\
+\
+The Active parameter specifies whether or not the mobile network must be
+the network currently in use in order to match.
+
+#### NFC Status
+
+Whether the default NFC adapter on the device is enabled or not.\
+\
+Requires Android 4.3.3+.
+
+#### Orientation
+
+The device is in the specified orientation.\
+\
+Note that on some devices the actual orientation may be the reverse of
+those shown.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring /
+Accelerometer
+
+#### Pen Menu
+
+The menu associated with the hardware pen is showing.\
+\
+Currently only Samsung SPen is supported.
+
+#### Pen Out
+
+The hardware pen is not in its port.\
+\
+Currently only Samsung SPen is supported.
+
+#### Plugin
+
+Listens for the conditions of the specified Locale-compatible
+\'condition\' plugin being satisfied.\
+\
+Locale does not need to be installed on the device.\
+\
+WARNING: data you enter in the plugin configuration screen is collected
+by the \*plugin\*, not by Tasker. If the plugin has Internet permissions
+it could e.g. transmit your data to third-parties.
+
+#### Power
+
+The device is connected to a power source.
+
+#### Power Save Mode
+
+Whether Power Save Mode (also known as Battery Saver) is enabled or
+not.\
+\
+Requires Android 5.0+.
+
+#### Pressure
+
+The (probably atmospheric) pressure at the current location in
+millibars.\
+\
+At 30,000km altitude it will be virtually 0mb. At sea-level it will be
+approximately 1013mb.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring / Pressure
+Sensor
+
+#### Profile Active
+
+A Tasker profile with the specified name is running.\
+\
+Name is a simple match, see Pattern Matching in the Userguide.
+
+#### Proximity Sensor
+
+Active when the proximity sensor of the device reports than an object is
+nearby.\
+\
+After setting this state up, you should calibrate it by covering and
+then uncovering proximity sensor a couple of times.\
+\
+This state may be unreliable in a profile mixed with other contexts. If
+the purpose is to save power, some people have had more luck toggling
+the Monitor preference instead.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring / Proximity
+
+#### Signal Strength
+
+The phone radio\'s reported signal level is within the specified range.\
+\
+If the phone has no service or the signal strength is unknown this state
+will never be active.\
+\
+See also: variable %CELLSIG.
+
+#### Task Running
+
+A Tasker task with the specified name is running.\
+\
+Name is a simple match, see Pattern Matching in the Userguide.\
+\
+*Running* means that the task is in the queue for it\'s actions to be
+executed but it\'s not necessarily the case that one of its actions is
+currently being carried out.
+
+#### Temperature
+
+Whether the current ambient temperature is in the specified range of
+degrees (Celsius).\
+\
+See also: variable %TEMP.
+
+#### USB Connected
+
+Whether a device of the specified class is currently connected.\
+\
+Due to limitations of the Android USB interface, successful detection of
+USB connections is extremely dependent on the hardware of both the host
+and USB device.\
+\
+Note: The *Any* class does **not** include USB Hubs.
+
+#### Unread Text
+
+There is an SMS or MMS which has not been read and matches the specified
+parameters.\
+\
+Content is the Body of an SMS, or the Subject or an MMS.\
+\
+Occasionally this state will be active when there are no apparent unread
+texts because sometimes texts get stuck in an unexpected state in the
+messaging app. The app \'Reset Unread SMS\' can fix this problem.
+
+#### VPN Connected
+
+A VPN network is connected.\
+\
+The Active parameter specifies whether or not the VPN must be the
+network currently being used in order to match.
+
+#### Variable Value
+
+The named user-defined variable matches the specified operator and
+value.\
+\
+See the userguide document on Flow Control for details of how the
+operator/value comparison functions.\
+\
+This state can also trigger on some \'dynamic\' built-in variables: see
+the *Variables* section of the Userguide for details.\
+\
+Warning: if you want to trigger on a variable and then take some action
+which sets the thing the variable represents you should use the Variable
+Set event instead. A Variable Value state will cause complications when
+the state exits and tries to restore the value again.
+
+#### Wifi Connected
+
+The device is connected to a Wifi Access Point (AP).\
+\
+If any of the parameters are specified, the AP must match that
+parameter, otherwise any AP will match.\
+\
+SSID: the SSID of the AP e.g. SKY34312\
+\
+MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\
+\
+IP: the IP address of the AP e.g. 192.156.98.4\
+\
+You can use the variable Wifi Info to see information about the current
+AP (when connected).\
+\
+The Active parameter specifies whether or not the wifi network must be
+the network currently in use in order to match.
+
+#### Wifi Near
+
+The device is near a Wifi Access Point (AP).\
+\
+If any of the parameters are specified, the AP must match that
+parameter, otherwise any AP will match.\
+\
+SSID: the SSID of the AP e.g. SKY34312\
+\
+MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\
+\
+Capabilities: e.g. \[WPA-PSK-TKIP\]\
+\
+Min Activate Signal Level: the minimum signal strength to activate the
+context. It\'s ignored once the context is active.\
+\
+Channel: the frequency channel.\
+\
+Toggle Wifi: if Wifi on the device is disabled, enable it for the period
+of the scan, probably around 15 seconds. Toggling cannot take place when
+the Wifi Tether (Hotspot) is enabled on the device. On Android 4.3+
+devices, consider enabling *Scanning Always Available* in Android
+advanced wifi settings, instead of toggling.\
+\
+A seen AP which is no longer visible for approximately two times the
+scan period is forgetten. This is to help prevent the profile bouncing
+on and off at the edge of the signal reception area.\
+\
+The period for Wifi scanning is specified in
+Menu-\>Preferences-\>Monitor-\>Wifi Scan Time.\
+\
+You can use the variable Wifi Info to see information about nearby APs
+(when not connected).\
+\
+When any profile has a Wifi Near state context, it will do regular scans
+for nearby APs (see Menu-\>Preferences-\>Monitor-\>Wifi Scan Period.
+This requires the device\'s Wifi radio to be enabled.
diff --git a/en/help/sh_keyboard_out.md b/en/help/sh_keyboard_out.md
new file mode 100644
index 0000000..866b127
--- /dev/null
+++ b/en/help/sh_keyboard_out.md
@@ -0,0 +1,3 @@
+### Keyboard Out
+
+The physical keyboard is showing.
diff --git a/en/help/sh_light_level.md b/en/help/sh_light_level.md
new file mode 100644
index 0000000..95bb1da
--- /dev/null
+++ b/en/help/sh_light_level.md
@@ -0,0 +1,12 @@
+### Light Level
+
+The current light level as a (massaged) percentage of the minumum and
+maximum light levels ever seen.\
+\
+After setting this state up, you should calibrate it by covering up the
+device for a few seconds and exposing it to bright light.\
+\
+Warning: on at least some devices, 0% is the level of a dimly lit room,
+rather than that of total darkness.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring / Light Sensor
diff --git a/en/help/sh_magnetic_field.md b/en/help/sh_magnetic_field.md
new file mode 100644
index 0000000..295bd4e
--- /dev/null
+++ b/en/help/sh_magnetic_field.md
@@ -0,0 +1,9 @@
+### Magnetic Field
+
+The absolute magnetic field strength at the current location in
+micro-Tesla.\
+\
+Magnetic fields will be detected better on some axis than on others e.g.
+the base of the device may be more sensitive than the edge.\
+\
+See Also: variable %MFIELD.
diff --git a/en/help/sh_media_button.md b/en/help/sh_media_button.md
new file mode 100644
index 0000000..cbb6154
--- /dev/null
+++ b/en/help/sh_media_button.md
@@ -0,0 +1,36 @@
+### Media Button
+
+One of the media buttons is pressed.\
+\
+Not all devices have all represented buttons.\
+\
+If *Held* is checked, the key must have been held down for minimally the
+normal key repeat time for this context to become active. Held will not
+function on most devices with Google Voice Search.\
+\
+If *Stop Event* is checked, Tasker will try to prevent the event being
+passed on to other apps when it\'s received. This does not have effect
+use on Android 2.2+ devices because usually one or more apps will try to
+Grab (see below) the event and no others will see it. The changes in
+Android 2.2 have made media button handling very complicated\...\
+\
+*Grab*\
+\
+*Grab* is only relevant for Android 2.2+ devices, which changed the way
+in which the media button is handled. It indicates that Tasker should
+become the sole receiver of media button events. If you don\'t do this,
+Tasker may not receive the events e.g. because a media player has
+requested the events.\
+\
+Note 1: if you **do** enable *Grab*, you probably want to add another
+context to this profile e.g. an application context, so that Tasker
+doesn\'t interfere with media control the whole time.\
+\
+Note 2: Tasker grabs the event control as soon as it\'s necessary and
+releases it as soon as possible. Another app may grab control at a later
+time and so block events to Tasker.\
+\
+Note 3: if you enable *Grab* for any media button, it blocks **all**
+media button events to other apps.\
+\
+Note 4: you can regrab the focus with action Media / Media Button Events
diff --git a/en/help/sh_missed_call.md b/en/help/sh_missed_call.md
new file mode 100644
index 0000000..ca1842a
--- /dev/null
+++ b/en/help/sh_missed_call.md
@@ -0,0 +1,9 @@
+### Missed Call
+
+The Android call log has one or missed calls.\
+\
+If a Caller is specified, only missed calls from that number are
+relevant (see Pattern Matching in the Userguide).\
+\
+If you want something to happen every time there is a \*new\* missed
+call, use the event Missed Call instead.
diff --git a/en/help/sh_mobile_connect.md b/en/help/sh_mobile_connect.md
new file mode 100644
index 0000000..8463e2a
--- /dev/null
+++ b/en/help/sh_mobile_connect.md
@@ -0,0 +1,6 @@
+### Mobile Network
+
+The device has mobile data connectivity of one of the checked types.\
+\
+The Active parameter specifies whether or not the mobile network must be
+the network currently in use in order to match.
diff --git a/en/help/sh_nfc_status.md b/en/help/sh_nfc_status.md
new file mode 100644
index 0000000..a9cfef5
--- /dev/null
+++ b/en/help/sh_nfc_status.md
@@ -0,0 +1,5 @@
+### NFC Status
+
+Whether the default NFC adapter on the device is enabled or not.\
+\
+Requires Android 4.3.3+.
diff --git a/en/help/sh_orientation.md b/en/help/sh_orientation.md
new file mode 100644
index 0000000..06657fd
--- /dev/null
+++ b/en/help/sh_orientation.md
@@ -0,0 +1,9 @@
+### Orientation
+
+The device is in the specified orientation.\
+\
+Note that on some devices the actual orientation may be the reverse of
+those shown.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring /
+Accelerometer
diff --git a/en/help/sh_pen_menu.md b/en/help/sh_pen_menu.md
new file mode 100644
index 0000000..0f95dd2
--- /dev/null
+++ b/en/help/sh_pen_menu.md
@@ -0,0 +1,5 @@
+### Pen Menu
+
+The menu associated with the hardware pen is showing.\
+\
+Currently only Samsung SPen is supported.
diff --git a/en/help/sh_pen_out.md b/en/help/sh_pen_out.md
new file mode 100644
index 0000000..dc7b3d3
--- /dev/null
+++ b/en/help/sh_pen_out.md
@@ -0,0 +1,5 @@
+### Pen Out
+
+The hardware pen is not in its port.\
+\
+Currently only Samsung SPen is supported.
diff --git a/en/help/sh_plugin.md b/en/help/sh_plugin.md
new file mode 100644
index 0000000..f24d175
--- /dev/null
+++ b/en/help/sh_plugin.md
@@ -0,0 +1,10 @@
+### Plugin
+
+Listens for the conditions of the specified Locale-compatible
+\'condition\' plugin being satisfied.\
+\
+Locale does not need to be installed on the device.\
+\
+WARNING: data you enter in the plugin configuration screen is collected
+by the \*plugin\*, not by Tasker. If the plugin has Internet permissions
+it could e.g. transmit your data to third-parties.
diff --git a/en/help/sh_power.md b/en/help/sh_power.md
new file mode 100644
index 0000000..ec922ba
--- /dev/null
+++ b/en/help/sh_power.md
@@ -0,0 +1,3 @@
+### Power
+
+The device is connected to a power source.
diff --git a/en/help/sh_power_save_mode.md b/en/help/sh_power_save_mode.md
new file mode 100644
index 0000000..a8abc32
--- /dev/null
+++ b/en/help/sh_power_save_mode.md
@@ -0,0 +1,6 @@
+### Power Save Mode
+
+Whether Power Save Mode (also known as Battery Saver) is enabled or
+not.\
+\
+Requires Android 5.0+.
diff --git a/en/help/sh_pressure.md b/en/help/sh_pressure.md
new file mode 100644
index 0000000..dd12009
--- /dev/null
+++ b/en/help/sh_pressure.md
@@ -0,0 +1,10 @@
+### Pressure
+
+The (probably atmospheric) pressure at the current location in
+millibars.\
+\
+At 30,000km altitude it will be virtually 0mb. At sea-level it will be
+approximately 1013mb.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring / Pressure
+Sensor
diff --git a/en/help/sh_profile_active.md b/en/help/sh_profile_active.md
new file mode 100644
index 0000000..b9f8bc4
--- /dev/null
+++ b/en/help/sh_profile_active.md
@@ -0,0 +1,8 @@
+### Profile Active
+
+A Tasker profile with the specified name is active. Unnamed profiles\'
+descriptions aren\'t checked.\
+\
+Name is a simple match, see [Pattern
+Matching](https://tasker.joaoapps.com/userguide/en/matching.html) in the
+Userguide.
diff --git a/en/help/sh_proximity.md b/en/help/sh_proximity.md
new file mode 100644
index 0000000..928e5f3
--- /dev/null
+++ b/en/help/sh_proximity.md
@@ -0,0 +1,13 @@
+### Proximity Sensor
+
+Active when the proximity sensor of the device reports than an object is
+nearby.\
+\
+After setting this state up, you should calibrate it by covering and
+then uncovering proximity sensor a couple of times.\
+\
+This state may be unreliable in a profile mixed with other contexts. If
+the purpose is to save power, some people have had more luck toggling
+the Monitor preference instead.\
+\
+See Also: Menu / Prefs / Monitor / Display Off Monitoring / Proximity
diff --git a/en/help/sh_signal_strength.md b/en/help/sh_signal_strength.md
new file mode 100644
index 0000000..d04c8b4
--- /dev/null
+++ b/en/help/sh_signal_strength.md
@@ -0,0 +1,8 @@
+### Signal Strength
+
+The phone radio\'s reported signal level is within the specified range.\
+\
+If the phone has no service or the signal strength is unknown this state
+will never be active.\
+\
+See also: variable %CELLSIG.
diff --git a/en/help/sh_task_running.md b/en/help/sh_task_running.md
new file mode 100644
index 0000000..5d6db30
--- /dev/null
+++ b/en/help/sh_task_running.md
@@ -0,0 +1,9 @@
+### Task Running
+
+A Tasker task with the specified name is running.\
+\
+Name is a simple match, see Pattern Matching in the Userguide.\
+\
+*Running* means that the task is in the queue for it\'s actions to be
+executed but it\'s not necessarily the case that one of its actions is
+currently being carried out.
diff --git a/en/help/sh_temperature.md b/en/help/sh_temperature.md
new file mode 100644
index 0000000..c588a32
--- /dev/null
+++ b/en/help/sh_temperature.md
@@ -0,0 +1,6 @@
+### Temperature
+
+Whether the current ambient temperature is in the specified range of
+degrees (Celsius).\
+\
+See also: variable %TEMP.
diff --git a/en/help/sh_unread_ms.md b/en/help/sh_unread_ms.md
new file mode 100644
index 0000000..5fcc642
--- /dev/null
+++ b/en/help/sh_unread_ms.md
@@ -0,0 +1,10 @@
+### Unread Text
+
+There is an SMS or MMS which has not been read and matches the specified
+parameters.\
+\
+Content is the Body of an SMS, or the Subject or an MMS.\
+\
+Occasionally this state will be active when there are no apparent unread
+texts because sometimes texts get stuck in an unexpected state in the
+messaging app. The app \'Reset Unread SMS\' can fix this problem.
diff --git a/en/help/sh_usb_connect.md b/en/help/sh_usb_connect.md
new file mode 100644
index 0000000..8eae585
--- /dev/null
+++ b/en/help/sh_usb_connect.md
@@ -0,0 +1,9 @@
+### USB Connected
+
+Whether a device of the specified class is currently connected.\
+\
+Due to limitations of the Android USB interface, successful detection of
+USB connections is extremely dependent on the hardware of both the host
+and USB device.\
+\
+Note: The *Any* class does **not** include USB Hubs.
diff --git a/en/help/sh_user_active.md b/en/help/sh_user_active.md
new file mode 100644
index 0000000..405633d
--- /dev/null
+++ b/en/help/sh_user_active.md
@@ -0,0 +1,20 @@
+### User Active
+
+Whether the user with the specified ID is active or not.\
+\
+When a different user is selected, this state will become inactive.\
+\
+When returning to the specified user, the state will become active
+again.\
+\
+Note that each user account has it\'s own set of apps, so to detecting
+each user becoming active would require Tasker to be installed under
+each account.\
+\
+In other words, it only makes sense to specify the user ID of the user
+under which the current Tasker install is running.\
+\
+The administrator (first user) ID is usually 0, the action Test System
+can be used to determine other user IDs.\
+\
+This state requires Android 4.2+.
diff --git a/en/help/sh_variable_value.md b/en/help/sh_variable_value.md
new file mode 100644
index 0000000..fa2228d
--- /dev/null
+++ b/en/help/sh_variable_value.md
@@ -0,0 +1,15 @@
+### Variable Value
+
+The named user-defined variable matches the specified operator and
+value.\
+\
+See the userguide document on Flow Control for details of how the
+operator/value comparison functions.\
+\
+This state can also trigger on some \'dynamic\' built-in variables: see
+the *Variables* section of the Userguide for details.\
+\
+Warning: if you want to trigger on a variable and then take some action
+which sets the thing the variable represents you should use the Variable
+Set event instead. A Variable Value state will cause complications when
+the state exits and tries to restore the value again.
diff --git a/en/help/sh_vpn_connect.md b/en/help/sh_vpn_connect.md
new file mode 100644
index 0000000..b0af466
--- /dev/null
+++ b/en/help/sh_vpn_connect.md
@@ -0,0 +1,6 @@
+### VPN Connected
+
+A VPN network is connected.\
+\
+The Active parameter specifies whether or not the VPN must be the
+network currently being used in order to match.
diff --git a/en/help/sh_wifi_connect.md b/en/help/sh_wifi_connect.md
new file mode 100644
index 0000000..3948754
--- /dev/null
+++ b/en/help/sh_wifi_connect.md
@@ -0,0 +1,23 @@
+### Wifi Connected
+
+The device is connected to a Wifi Access Point (AP).\
+\
+If any of the parameters are specified, the AP must match that
+parameter, otherwise any AP will match.\
+\
+SSID: the SSID of the AP e.g. SKY34312\
+\
+MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\
+\
+IP: the IP address of the AP e.g. 192.156.98.4\
+\
+You can use the variable Wifi Info to see information about the current
+AP (when connected).\
+\
+The Active parameter specifies whether or not the wifi network must be
+the network currently in use in order to match. Setting it to **Yes**
+means the WiFi must be the default route to the internet. If **Yes** and
+you enable VPN, the WiFi state rightfully becomes inactive, as that WiFi
+connection is only used to route traffic to the VPN. The VPN has default
+route to internet. Any means it doesn\'t matter if WiFi is route to
+internet or not, as long as you are connected to a WiFi.
diff --git a/en/help/sh_wifi_near.md b/en/help/sh_wifi_near.md
new file mode 100644
index 0000000..cbde259
--- /dev/null
+++ b/en/help/sh_wifi_near.md
@@ -0,0 +1,42 @@
+### Wifi Near
+
+The device is near a Wifi Access Point (AP).\
+\
+On recent Android versions wifi scanning is only available for apps with
+the location permission, so that\'s why Tasker asks for it.\
+\
+If any of the parameters are specified, the AP must match that
+parameter, otherwise any AP will match.\
+\
+SSID: the SSID of the AP e.g. SKY34312\
+\
+MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\
+\
+Capabilities: e.g. \[WPA-PSK-TKIP\]\
+\
+Min Activate Signal Level: the minimum signal strength to activate the
+context. It\'s ignored once the context is active.\
+\
+Channel: the frequency channel.\
+\
+Toggle Wifi: if Wifi on the device is disabled, enable it for the period
+of the scan, probably around 15 seconds. On Android 6+ this is rarely
+needed, unless you disabled the *Scanning Always Available* option in
+Android settings. Toggling cannot take place when the Wifi Tether
+(Hotspot) is enabled on the device. On Android 4.3+ devices, consider
+enabling *Scanning Always Available* in Android advanced wifi settings,
+instead of toggling.\
+\
+A seen AP which is no longer visible for approximately two times the
+scan period is forgetten. This is to help prevent the profile bouncing
+on and off at the edge of the signal reception area.\
+\
+The period for Wifi scanning is specified in
+Menu-\>Preferences-\>Monitor-\>Wifi Scan Time.\
+\
+You can use the variable Wifi Info to see information about nearby APs
+(when not connected).\
+\
+When any profile has a Wifi Near state context, it will do regular scans
+for nearby APs (see Menu-\>Preferences-\>Monitor-\>Wifi Scan Period.
+This requires the device\'s Wifi radio to be enabled.
diff --git a/en/icons.md b/en/icons.md
new file mode 100644
index 0000000..06d9430
--- /dev/null
+++ b/en/icons.md
@@ -0,0 +1,56 @@
+---
+title: 'Tasker: Icons'
+---
+
+Icons 
+--------------------------
+
+Tasker can use four categories of icons: [Application](#app),
+[Built-In](#builtin), [Ipack](#ipack), [User-Installed](#user).
+
+In some places it\'s also possible to use any image stored on local
+media as an icon.
+
+[]{#app}
+
+#### Application Icons
+
+These are taken from applications installed on the device.
+
+Minor note: if the icon of the application changes, an update of
+previously created widgets/shortcuts can be forced by creating a single
+widget with the new icon and then rebooting.
+
+[]{#builtin}
+
+#### Built-In Icons
+
+These come with Tasker and are kept in the device\'s memory. []{#ipack}
+
+#### Ipack Icon Sets
+
+[Ipack](http://ipack.dinglisch.net) is a free, open format for sharing
+of icon sets between Android applications. Ipack icon sets can be either
+installed from [Play Store](http://market.android.com/search?q=ipack) or
+from the [Ipack website](http://ipack.dinglisch.net/download.html).
+
+When setting an icon, you will notice an item labelled *Download More
+Icons*. Clicking on it will use the appropriate source depending on
+which version of Tasker you have.
+
+[]{#user}
+
+#### User-Installed Icons
+
+You can also install your own icons directly into Tasker\'s icon
+directory `/sdcard/Tasker/.icn/`. Make sure the icons are in a
+subdirectory. The subdirectory should also only be one level deep (no
+subsubdirectories).
+
+Icons must be in PNG format.
+
+Example: a two-icon set called *Christmas* would have the two files in
+these locations:
+
+> `/sdcard/Tasker/.icn/Christmas/santa.png`\
+> `/sdcard/Tasker/.icn/Christmas/snowman.png`
diff --git a/en/index.md b/en/index.md
new file mode 100644
index 0000000..418403a
--- /dev/null
+++ b/en/index.md
@@ -0,0 +1,95 @@
+---
+title: 'Tasker: Userguide'
+---
+
+Tasker Userguide 
+-------------------------------------
+
+Profiles
+
+- [Main Screen](activity_main.html)
+
+
+
+- Contexts
+ - [Application](appcontext.html)
+ - [Time](timecontext.html)
+ - [Day](daycontext.html)
+ - [Location](loccontext.html)
+ - [Location Edit](activity_locselect.html)
+ - [State](activity_stateedit.html)
+ - [A-Z](help/sh_index.html)
+ - [Event](eventcontext.html)
+ - [Event Edit](activity_eventedit.html)
+ - [A-Z](help/eh_index.html)
+
+Tasks
+
+- [General](tasks.html)
+- [Task Edit](activity_taskedit.html)
+- [Flow Control](flowcontrol.html)
+- [Task Widgets / Shortcuts](app_widgets.html)
+ - [Configuration](activity_widget_configure.html)
+- Actions\
+ - [Action Edit](activity_actionedit.html)
+ - [Settings](settings.html)
+ - [A-Z](help/ah_index.html)
+
+Scenes
+
+[General](scenes.html)
+
+[Scene Edit](activity_sceneedit.html)
+
+[Scene Properties](activity_scenepropertiesedit.html)
+
+Scene Elements\
+
+- [Button](element_button.html) [CheckBox](element_checkbox.html)
+ [Doodle](element_doodle.html) [EditText](element_textedit.html)
+ [Image](element_image.html) [Map](element_map.html)
+ [Menu](element_menu.html) [Number Picker](element_picker.html)
+ [Oval](element_shape.html) [Rectangle](element_shape.html)
+ [Slider](element_slider.html) [Spinner](element_spinner.html)
+ [Text](element_text.html) [Toggle](element_toggle.html)
+ [Video](element_video.html) [Web](element_web.html)
+- [Element Edit](activity_elementedit.html)
+
+Variables
+
+- [General](variables.html)
+
+Miscellaneous
+
+- [Android System Power Management](androidpowermanagement.html)
+- [App Creation](appcreation.html)
+- [CPU Control](cpu.html)
+- [Encryption](encryption.html)
+- [Gestures](gestures.html)
+- [Icons](icons.html)
+- [Intents](intents.html)
+- [Java](java.html)
+- [JavaScript](javascript.html)
+- [Location Without Tears](loctears.html)
+- [Maths](maths.html)
+- [MIDI](midi.html)
+- [Pattern Matching](matching.html)
+- [Power Usage](power.html)
+- [Run Log](activity_runlog.html)
+
+FAQs
+
+- [How Do I\... / Can I\... ?](faqs/faq-how.html)
+- [Usage Problems](faqs/faq-problem.html)
+- [Why\... ?](faqs/faq-why.html)
+- [App Creation](faqs/faq-appcreation.html)
+- [Other](faqs/faq-other.html)
+
+Web Links
+
+- [Wiki (Step-throughs, Recipes)](http://tasker.wikidot.com)
+- [Tour](http://tasker.dinglisch.net/tour.html)
+- [Bugs / Limitations](http://tasker.dinglisch.net/bugs.html)
+- [Plans](http://tasker.dinglisch.net/todo.html)
+- [Developers](http://tasker.dinglisch.net/developers.html)
+- [Release Notes](http://tasker.dinglisch.net/changes.html)
diff --git a/en/intents.md b/en/intents.md
new file mode 100644
index 0000000..64b449c
--- /dev/null
+++ b/en/intents.md
@@ -0,0 +1,202 @@
+---
+title: 'Tasker: Intents'
+---
+
+Intents 
+----------------------------
+
+Intents are Android\'s main method for allowing apps to communicate with
+each other and share data. Intents are for advanced users. This document
+is not intended to explain how intents work, but how to use Tasker\'s
+intent facilities.
+
+### Sending Intents
+
+You can find information about intents and details of several built-in
+Android intents on the Android SDK [Reference
+Site](%20https://developer.android.com/reference/android/content/Intent.html).
+
+Tasker allows you to send arbitraty intents using the *Send Intent*
+action in the *Misc* category. This allows you to provoke behaviour in
+other apps, when you know the particular form of intent they are
+designed to respond to.
+
+[]{#sendparameters}
+
+#### Send Intent Parameters
+
+Note that any parameter specified except Extras will reduce the set of
+possible receivers of the intent.
+
+##### Action
+
+What the sender would like the receiver to do with the data.
+
+Example: `android.intent.action.VIEW`
+
+##### Cat
+
+Gives additional information about the action.
+
+##### Mime-Type
+
+From the developer reference: \"This is used to create intents that only
+specify a type and not data, for example to indicate the type of data to
+return.\"
+
+Can\'t be used together with a Data specification.
+
+##### Data
+
+The main data specification in the form of a URI.
+
+Can\'t be used together with a Mime-Type specification.
+
+##### Extras
+
+Any additional data to send with the intent.
+
+The extras must be in the form of a single **colon-separated** key and
+value.
+
+If the value can be parsed as an integer, long (integer ending in L),
+floating point number, double (float ending in D) or boolean
+(true/false) it will be treated as one.
+
+The value can also be forced to a simple type (long etc) or `Uri` via
+casting.
+
+The name of a Java object created via the Java Function action which is
+of type `Parcelable` can also be used (e.g. a `Bundle`)
+
+If none of the above apply, the value will be treated as a `String`.
+
+Examples:
+
+- have\_flowers:true\
+ (`boolean`)
+- this.is.an.integer.example:34\
+ (`int`)
+- this.is.a.double.example:34D\
+ (`int`)
+- address: (Uri) http://a.b\
+ (`Uri`)
+- bunchofvalues:mybundle (where mybundle is the name of a Java object
+ of type Bundle)\
+ (`Parcelable`)
+- simple.string.example:hello there!\
+ (`String`)
+
+##### Package, Class
+
+Allow specification of a particular package and/or class within the
+package to restrict the broadcast to.
+
+##### Target
+
+The type of Android component which should receive the intent.
+
+#### Finding App Intents
+
+Many intents that an app listens for are declared in its package
+manifest (called AndroidManifest.xml). You can view details of those
+intents using the *aapt* tool that comes with the Android SDK like this:
+
+> ` aapt dump xmltree example.apk AndroidManifest.xml`
+
+Look for Intent Filter elements.
+
+It\'s not (easily) possible to determine which intents an app listens
+for dynamically (i.e. while the app is running).
+
+### Receiving Intents
+
+Tasker allows you to receive a large range of intents, sent by apps or
+the system, using the *Intent Received* event in the *System* category.
+
+For each event you create, Tasker sets up a corresponding [Intent
+Filter](https://developer.android.com/reference/android/content/IntentFilter.html)
+object.
+
+#### Limitations
+
+- Tasker can only receive intents which are sent to **broadcast
+ receiver** components, not to activities or services.
+- some intent senders require that a corresponding intent filter is
+ specified statically (i.e. in an Android Manifest). Those intents
+ cannot be received.
+- intents which are broadcast with a specification of a particular
+ package component to receive it cannot be received.
+
+[]{#receivedparameters}
+
+#### Intent Received Parameters
+
+##### Action
+
+If specified, the received intent must have also that action specified.
+
+##### Cat
+
+Any categories specified in the received intent must also be specified
+in the Tasker event. Note that this is logically different to the
+situation for the Action parameter.
+
+##### Scheme
+
+If any schemes are included in the filter, then an Intent\'s data must
+be either one of these schemes or a matching data type. If no schemes
+are included, then an Intent will match only if it includes no data.
+
+##### Mime Type
+
+If a type is specified, then an Intent\'s data must be the same, or
+match the Scheme parameter. If no Mime Type is specified, then an Intent
+will only match if it specifies no Data.
+
+##### Priority
+
+If the intent is part of an *ordered broadcast*, then the priority
+specified here will affect whether this event will receive the intent
+before or after other listeners.
+
+##### Stop Event
+
+If the intent is part of an *ordered broadcast*, then specifying Stop
+Event will prevent it being passed to other listeners after this one.
+
+#### Accessing Intent Data
+
+When an intent triggers an Intent Received event, the resulting task(s)
+which are executed have access to many details of the intent via local
+variables (where relevant and present):
+
+- *%intent\_data*: the data
+- *%evtprm1*: the action
+- *%evtprm2*: the first category
+- *%evtprm3*: the second category
+- *%evtprm4*: the URI scheme
+- *%evtprm5*: the MIME type
+
+In addition, any *extras* attached to the intent can be accessed under
+their name, with the following modifications to make them valid variable
+names:
+
+- all letters will be converted to lower-case, then
+- names of length less than 3 will have **var\_** prefixed
+- non-letter-or-digit characters will be converted to \_, then
+- names not starting with a letter will have **a** prefixed, then
+- names not ending with a letter or digit will have **a** affixed
+- if the result is the name of another extra, **\_dup** will be
+ affixed until that is no longer the case
+
+For example, an extra with key **%SOUND\_ON** will be available as
+**%sound\_on**, and an extra with key **package.SOUND\_ON!**, will be
+available via the local variable **%package\_sound\_on\_a**
+
+The following extra types are presented in Tasker as local arrays:
+`String [], Integer [], ArrayList, ArrayList`.
+
+Example: a string array extra \`named \'fruits\' with values \'pear\'
+and \'apple\' will result in the local variables %fruits1 (=pear) and
+%fruits2 (=apple).
diff --git a/en/java.md b/en/java.md
new file mode 100644
index 0000000..4c50e5e
--- /dev/null
+++ b/en/java.md
@@ -0,0 +1,345 @@
+---
+title: 'Tasker: Java Support'
+---
+
+Java Support 
+---------------------------------
+
+- [Introduction](#intro)
+- [The `Java Function` Action](#javafunction)
+ - Using The Action
+ - Parameters
+ - Return Values
+- [Objects](#objects)
+ - Creating An Object
+ - Object Naming, Local And Global
+ - Built-in Objects
+ - Assigning Values
+ - Other Actions Supporting Objects
+- [Other Topics](#other)
+ - Casting
+ - Constants
+ - Generic Classes
+ - Permissions
+ - Service Thread
+ - Static Fields
+
+[]{#intro}
+
+### Introduction
+
+Android has hundreds of thousands of functions which apps can use. It\'s
+not possible for Tasker to present all of those to the user, so Tasker
+allows the advanced user to directly call those Java functions and work
+with Java objects themselves.
+
+It does **not** allow you to \'write Java code\'\... but the combination
+of Tasker\'s logic and flow control with direct access to the Android
+API is sufficient for most automation purposes.
+
+This page assumes you have a basic familiarity with the Java concepts of
+*objects* and *classes*.
+
+Developer information on the Android API is available from
+[Google](http://developer.google.com/develop).
+
+#### Example
+
+1. `Variable Set`, %service, wifi
+2. `Java Function`, wiman = CONTEXT.getSystemService( %service )
+3. `Java Function`, %enabled = wiman.isWifiEnabled()
+4. `Java Function`, wiman.setEnabled( true ), If %enabled eq false
+
+This example task turns wifi on if it is not already enabled.
+
+Action 2 demonstrates that Tasker variables can be used in Java function
+calls. *wiman* is a Java object resulting from the function call which
+is stored by Tasker for use in subsequent actions. *CONTEXT* is also
+such a variable but is built-in and always accessible to
+`Java Function`.
+
+Action 3 demonstrates that results of `Java Function` can also be
+assigned to Tasker variables. Since all Tasker variables are strings,
+some conversion needs to take place depending on what type of object the
+Java function returns. In this case it\'s a boolean, and so %enabled
+will be **true** or **false**.
+
+Action 4 demonstrates taking a decision based on the result of previous
+Java function call.
+
+[]{#javafunction}
+
+### The `Java Function` Action
+
+#### Using The Action
+
+1. enter an object or class (to access static functions) into the first
+ parameter.
+
+ The magnifying glass icon will show a class selector for classes
+ known in the latest Android API. Some may be coloured red, as not
+ all classes are available on all devices.
+
+ The coffee-cup icon allows quick selection of known Java objects
+
+ The question mark icon will attempt to link to the relevant Android
+ reference page for the object or class.
+
+2. click the magnifying class next to the `Function` parameter to
+ select a function to execute appropriate to the object or class from
+ step 1.
+
+ In most cases, Tasker will be able to guess which class an object
+ is, and hence which functions are available, if not, see
+ [casting](#casting) below.
+
+ Functions listed in red are private, meaning they can be used, but
+ the author didn\'t intend them to be.
+
+3. if the function returns a value, you can enter a Java [object
+ name](names) to assign it to, or a Tasker variable, see
+ [below](#return).
+4. enter any parameters required for the function, see
+ [below](#params). The type of object the function expects for the
+ parameter is displayed above the text entry field. The magnifying
+ glass will list any fields associated with the current entry in the
+ text box, where possible.
+
+[]{#params}
+
+#### Parameters
+
+If you don\'t enter a value for a parameter, `null` will be used for
+that parameter when the function is called.
+
+If you enter the name of a variable array, Tasker will attempt to
+convert the array values into the type of object (an array or
+collection) which the function expects.
+
+Other Tasker variables will be replaced in the usual way.
+
+Here can also be entered Java objects, or their fields, either built-in
+or created by previous calls to `Java Function` (e.g. `wiman` or
+`arr[0].length`)
+
+[]{#return}
+
+#### Return Values
+
+When a Java function returns a value, it can be placed in either a
+Tasker variable or a Java object (or ignored).
+
+If it\'s placed into a Tasker variable, it\'s converted to a piece of
+text and the object itself is lost and can no longer be accessed. Note
+that if the Java object is an array or list, it will be assigned to
+multiple Tasker variables in the usual way e.g. %val1, %val2\...
+
+When the returned value is placed into a Java object, you can access the
+object at a later time in another `Java Function` and some other (see
+later) actions.
+
+Note that return value classes are inferred from the function, so object
+names can refer to different classes at different times. It\'s not
+recommended to reuse names in this way however!
+
+[]{#objects}
+
+### Objects
+
+#### Creating An Object
+
+New objects of most types can be created by filling in the class name,
+hitting the function selector and selecting a function called `new`.
+
+It\'s worth noting that many classes in the Android API have special
+static functions for getting a new object of that class called e.g.
+`getInstance` or similar.
+
+Arrays (also multidimensional) can be created by adding `[]` to the
+class name (or e.g. `[][]`).
+
+Here\'s an example of creating a 3x5 string array:
+
+1. `Java Function`, arr = new String\[\]\[\]( 3 )
+2. `For`, %rowno, 0:2
+3. `Java Function`, arr\[%rowno\] = new String\[\]( 5 )
+
+Creating an array is also possible natively via the `newInstance`
+function in the the class `Array`.
+
+Array components can be accessed as in normal Java (`arr[0][1]`)
+wherever Java objects are [supported](#support).
+
+[]{#names}
+
+#### Object Naming, Local and Global
+
+Object names can consist of any any combination of upper or lower case
+letters and underscore and, unlike Tasker variable names, may start with
+underscore. The first letter may not be upper-case, as this is a
+convention used to distinguish objects from classes.
+
+Analogous to Tasker variables, Java objects are either local to the
+current task if their name is all lower case, or global (available to
+any other task) if there are any upper-case characters in the name.
+All-upper-case names represent final (fixed) global objects which cannot
+be modified.
+
+There are three important things to remember about global Java objects:
+
+- it\'s important to delete them once they are no longer needed,
+ because they can take up a lot of memory.
+- unlike global Tasker variables, they are lost when Tasker is killed
+ e.g. because the device was restarted
+- their names can only contain upper- or lower-case letters or
+ underscore.
+
+#### Built-in Objects
+
+- **Android Context** (class `Context`)\
+ *CONTEXT*\
+ Many funtions in Android require a context object. In tasks running
+ **directly** as a result of a scene element event, this is the
+ Activity object which is displaying the scene, otherwise it\'s
+ Tasker\'s Application context.
+- **Image Buffer** (class `Bitmap`)\
+ *IBUFFER* The object manipulated by functions in Tasker\'s *Image*
+ action category.\
+
+#### Assigning Values
+
+When writing Java code, to make a name refer to the same object as
+another name, you would use something like:
+
+ String a = "hello";
+ String b = a;
+
+Now both a and b refer to the same object.
+
+To achieve that in Tasker, you use the special `assignTo` function after
+selecting the object to assign.
+
+ Java Function, a, "hello", assign (or a = "hello".assign())
+ Java Function, b, a, assign (or b = a.assign())
+
+[]{#support}
+
+#### Other Actions Supporting Objects
+
+##### If
+
+A Java object can be directly referenced in a condition. Null-value
+objects are replaced with text representation `null`.
+
+Examples:
+
+ If, arr[0][0] eq 45
+ If, arr[0].length > 3
+ If, lightlevel Equals null
+
+You cannot make function calls e.g. str.charAt( 5 )
+
+##### For
+
+The *Value* parameter in the For action can include Java object
+references as for *If*.
+
+ For, %value, arr
+
+Will repeat once for each value in the array *arr*. This will also work
+for string lists and simple objects (boolean etc)
+
+[]{#other}
+
+### Other Topics
+
+[]{#casting}
+
+#### Casting
+
+*Casting* in Tasker is used only to tell Tasker the type of a particular
+object. That can be useful so that e.g. Tasker can show functions which
+are appropriate to it.
+
+In the example at the top of the page, the `getSystemService` function
+returns an Object:
+
+ Java Function, wiman = CONTEXT.getSystemService( %service )
+
+Since the object could be one of many kinds of managers, Tasker is not
+able to list the WifiManager functions for easy selection when creating
+the next `Java Function` action in the task.
+
+You can tell Tasker the actual type by adding a cast in brackets before
+the name:
+
+ Java Function, (WifiManager) wiman = CONTEXT.getSystemService( %service )
+
+#### Constants
+
+Tasker support the usual naming conventions for Java constants.
+
+- **L** a long integer e.g. `300L`
+- **F** a floating-point number e.g. `45.6D`
+- **D** a double-length float e.g. `45.6D`
+- **double quotes** indicate a string e.g. `"hello"`, though in many
+ cases Tasker will infer that a string was intended anyway
+- **single quotes** indicate a character e.g. `'x'`
+
+Tasker will attempt to convert numbers without affixes to a Java type in
+the following order: `int, long, float, double`.
+
+#### Generic Classes
+
+Tasker only supports fully the following generic classes: ``
+
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+
+Create them by selecting their class in the class selector, clicking the
+function selector and clicking *new*.
+
+Generic classes mixed with arrays cannot be handled by Tasker, though
+you can pass such objects around from function to function.
+
+#### Permissions
+
+For some function calls, Android requires that the calling app have
+declared a permission otherwise the call will fail. This means that a
+Java Function call will fail if the permission is not one of the ones
+pre-declared by Tasker.
+
+Unfortunately, Android does not allow permissions to be added
+dynamically, so if you wish to use a function requiring a permission
+that Tasker does not already have, the only option is to generate a
+child app to run the function (see [App Creation](appcreation.html)). In
+the child configuration screen you can add any permissions which your
+Java Function call needs to the child app.
+
+#### Service Thread
+
+Java code is executed with a non-UI thread by a service.
+
+Some implications are:
+
+- things which require an activity will not work e.g. showing a dialog
+- sending intents will in some cases require the flag
+ `Intent.FLAG_FROM_BACKGROUND` and possibly also
+ `Intent.FLAG_ACTIVITY_NEW_TASK`
+
+#### Static Fields
+
+Static fields (e.g. `ContentResolver.EXTRA_SIZE`) are not currently
+supported by Tasker.
+
+A workaround is to use reflection to get (or set) the value:
+
+ res = CONTEXT.getContentResolver();
+ cls = res.getClass();
+ fld = cls.getField( EXTRA_SIZE );
+ %val = fld.get( null );
diff --git a/en/javascript.md b/en/javascript.md
new file mode 100644
index 0000000..1dc2f2c
--- /dev/null
+++ b/en/javascript.md
@@ -0,0 +1,1597 @@
+---
+title: 'Tasker: JavaScript Support'
+---
+
+JavaScript Support 
+---------------------------------------
+
+- [Introduction](#intro)
+- [Local Variables](#localvars)
+- [Global Variables](#globalvars)
+- [Arrays](#array)
+- [Settings](#settings)
+- [Execution](#exe)
+- [Working Off-Device](#offdevice)
+- [Builtin Functions](#builtin)\
+ [alarmVol](#alarmVol) [audioRecord](#audioRecord)
+ [audioRecordStop](#audioRecordStop)\
+ [btVoiceVol](#btVoiceVol) [browseURL](#browseURL) [button](#button)\
+ [call](#call) [callBlock](#callBlock) [callDivert](#callDivert)
+ [callRevert](#callRevert) [callVol](#callVol) [carMode](#carMode)
+ [clearKey](#clearKey) [composeEmail](#composeEmail)
+ [composeMMS](#composeMMS) [composeSMS](#composeSMS)
+ [convert](#convert) [createDir](#createDir)
+ [createScene](#createScene) [cropImage](#cropImage)\
+ [decryptDir](#decryptDir) [decryptFile](#decryptFile)
+ [deleteDir](#deleteDir) [deleteFile](#deleteFile)
+ [destroyScene](#destroyScene)
+ [displayAutoBright](#displayAutoBright)
+ [displayAutoRotate](#displayAutoRotate)
+ [displayTimeout](#displayTimeout) [dpad](#dpad) [dtmfVol](#dtmfVol)\
+ [elemBackColour](#elemBackColour) [elemBorder](#elemBorder)
+ [elemPosition](#elemPosition) [elemText](#elemText)
+ [elemTextColour](#elemTextColour) [elemTextSize](#elemTextSize)
+ [elemVisibility](#elemVisibility) [enableProfile](#enableProfile)
+ [encryptDir](#encryptDir) [encryptFile](#encryptFile)
+ [endCall](#endCall) [enterKey](#enterKey) [exit](#exit)\
+ [filterImage](#filterImage) [flash](#flash) [flashLong](#flashLong)
+ [flipImage](#flipImage)\
+ [getLocation](#getLocation) [getVoice](#getVoice) [global](#global)
+ [goHome](#goHome)\
+ [haptics](#haptics) [hideScene](#hideScene)\
+ [listFiles](#listFiles) [loadApp](#loadApp) [loadImage](#loadImage)
+ [local](#local) [lock](#lock)\
+ [mediaControl](#mediaControl) [mediaVol](#mediaVol)
+ [micMute](#micMute) [mobileData](#mobileData)
+ [musicBack](#musicBack) [musicPlay](#musicPlay)
+ [musicSkip](#musicSkip) [musicStop](#musicStop)\
+ [nightMode](#nightMode) [notificationVol](#notificationVol)\
+ [performTask](#performTask) [popup](#popup)
+ [profileActive](#profileActive) [pulse](#pulse)\
+ [readFile](#readFile) [reboot](#reboot) [resizeImage](#resizeImage)
+ [ringerVol](#ringerVol) [rotateImage](#rotateImage)\
+ [saveImage](#saveImage) [say](#say) [scanCard](#scanCard)
+ [sendIntent](#sendIntent) [sendSMS](#sendSMS)
+ [setAirplaneMode](#setAirplaneMode)
+ [setAirplaneRadios](#setAirplaneRadios) [setAlarm](#setAlarm)
+ [setAutoSync](#setAutoSync) [setBT](#setBT) [setBTID](#setBTID)
+ [setClip](#setClip) [setGlobal](#setGlobal) [setKey](#setKey)
+ [setLocal](#setLocal) [settings](#settings)
+ [setWallpaper](#setWallpaper) [setWifi](#setWifi) [shell](#shell)
+ [showScene](#showScene) [shutdown](#shutdown)
+ [silentMode](#silentMode) [sl4a](#sl4a)
+ [soundEffects](#soundEffects) [speakerphone](#speakerphone)
+ [statusBar](#statusBar) [stayOn](#stayOn)
+ [stopLocation](#stopLocation) [systemLock](#systemLock)
+ [systemVol](#systemVol)\
+ [takeCall](#takeCall) [takePhoto](#takePhoto)
+ [taskRunning](#taskRunning) [type](#type)\
+ [usbTether](#usbTether) [unzip](#unzip)\
+ [vibrate](#vibrate) [vibratePattern](#vibratePattern)\
+ [wait](#wait) [wifiTether](#wifiTether) [writeFile](#writeFile)\
+ [zip](#zip)
+- [Function Notes](#notes)
+
+[]{#intro}
+
+### Introduction
+
+Tasker supports running JavaScript code in tasks or
+[WebView](element_web.html) scene elements. Most Tasker actions can be
+accessed direct from the JavaScript. JSON and XMLHTTPRequest are also
+directly available from the JavaScript code.
+
+#### JavaScript in Tasks
+
+JavaScript can be embedded inline in tasks via the *JavaScriptlet*
+(direct specification of JavaScript to run) or *JavaScript* (load script
+from file) actions.
+
+In both cases, the JavaScript executes in sequence with the other
+actions in the task and variables are transparently converted so pieces
+of JavaScript can be interwoven throughout the task.
+
+#### Embedded in HTML
+
+WebView elements allow specification of mixed HTML and JS for the
+element content.
+
+> ` ClickMeToTurnOffWifi
`
+
+This allows a single WebView to present a complete user-interface.
+
+[]{#localvars}
+
+### Local Variables
+
+In `JavaScript(let)` actions, local variables (all lower case, e.g.
+**%myvar**) are directly accessible in the JavaScript without the % sign
+(e.g. **myvar**). If the script changes the value, the new value is
+transparently used by subsequent actions in the task.
+
+The values of new (all lower case) variables declared in JavaScript
+(with the `var` keyword) are also available to subsequent actions, with
+the exception of those which are chain-declared e.g.
+`var one = 'aval', two = 'bval';`
+
+In JavaScript embedded in HTML, the functions [local](#local) and
+[setLocal](#setLocal) must be used to access variables local to the
+scene hosting the WebView.
+
+[]{#globalvars}
+
+### Global Variables
+
+Tasker global variables need to be accessed via [global()](#global) and
+set via [setGlobal()](#setGlobal). Global arrays are not supported due
+to an Android limitation. []{#array}
+
+### Arrays
+
+Local Tasker arrays are transparently available in *Javascript(let)*s
+and vice-versa. They are not available in WebViews.
+
+Arrays which are not existing Tasker arrays must be declared in the JS
+as such i.e. in this case *arr* will not be visible to the remainder of
+the task:
+
+ var arr = getSomeArray();
+
+Whereas in this case it will:
+
+ var arr = [];
+ arr = getSomeArray();
+
+Note that:
+
+- JavaScript array indices start at 0, whereas Tasker array indices
+ start at 1
+- JavaScript uses `[]` while Tasker uses `()`
+
+So, for example, `%arr(1)` (Tasker) is equivalent to `arr[0]`
+(JavaScript).
+
+[]{#settings}
+
+### Settings
+
+Unlike normal Tasker actions, settings which are changed in JavaScript
+as part of a profile\'s enter task are **not** restored when the profile
+exits. []{#exe}
+
+### Execution
+
+#### Execution Instances
+
+Only one script can execute at one time. Once a piece of JavaScript is
+executing, it cannot be interrupted by another piece. []{#offdevice}
+
+#### Working Off-Device
+
+You might wish to develop long and/or complicated tasks off-device e.g.
+on a PC. There are two strategies for that:
+
+#### 1. `JavaScript` action
+
+For off-device testing, use
+`Menu / More / Developer / Save JS Library Template` to get dummy
+definitions for the built in functions. Include that file when
+developing on your PC.
+
+To test in your JavaScript code whether you\'re on-device or not, use
+
+> ` var onAndroid = ( global( 'sdk' ) > 0 );`
+
+By using the `JavaScript` action rather than `JavaScriptlet` you can
+easily access a file synced from PC to a file on the Android device.
+
+#### 2. Using WebView
+
+If you specify a website URL as the content for your WebView, then
+testing the code on the target device is a simple matter of pushing the
+new version to your webserver and reloading the WebView on the device
+(see action [Element Web
+Control](help/ah_scene_element_web_control.html))
+
+#### Builtin Function Execution
+
+Calls to most Tasker builtin functions (see below) are executed as
+normal single-action tasks and thus may be blocked by other executing
+tasks.
+
+They execute at the priority of the task that executed the JavaScript
+**plus two**.
+
+#### JavaScript(let): Alert,Confirm,Prompt
+
+Scripts using these functions require a \'user-interface\' and may cause
+interference with the currently running app (though in most cases they
+will not).
+
+#### JavaScript(let): Auto Exit
+
+By default, the `JavaScript(let)` action will end when the main
+execution sequence is finished.
+
+If you are using asynchronous code e.g. via *setTimeout()* or other
+callbacks, you should deselect *Auto Exit*. You are then responsible
+yourself for telling Tasker to continue the task by calling *exit()*.
+
+In any case, execution will stop when the timeout configured for the
+action is reached.
+
+#### JavaScript(let): Libraries
+
+You can specify as many libraries as you want in the *Libraries*
+parameter, separated by newlines.
+
+Several popular libraries are pre-selectable.
+
+You may wish to download them manually to your local storage and change
+the *http* URL to a *file* URL so that Internet is not required to run
+your script.
+
+Warning: library code will have access to local files, data providers
+etc. on the device
+
+Important: if you are using your own libraries developed on Windows, you
+may need to convert CRLF style line endings to Unix style LF.
+
+[]{#builtin}
+
+### Builtin Functions
+
+Tasker makes most of it\'s actions available via functions which can be
+called directly via name in `JavaScript(let)` actions and WebView
+elements.
+
+Exceptions:
+
+- in WebView content where mode is set to **URL**, the functions must
+ be prefixed by **tk** e.g. `tk.flash('Woo!')`
+- when executing code via *eval* the functions must be prefixed by
+ **tk.**
+
+[]{#alarmVol} []{#btVoiceVol} []{#callVol} []{#dtmfVol} []{#mediaVol}
+[]{#notificationVol} []{#systemVol} []{#ringerVol}
+
+##### alarmVol / btVoiceVol / callVol / dtmfVol / mediaVol / notificationVol / systemVol / ringerVol
+
+`var ok = alarmVol( int level, bool display, bool sound )`
+
+Set the relevant system volume to *level*.
+
+If *display* is true, the new level will be flashed up on-screen.
+
+If *sound* is true, a tone will sound at the new level.
+
+[]{#audioRecord}
+
+##### audioRecord
+
+`var ok = audioRecord( str destPath, str source, str codec, str format )`
+
+- *destPath*: where to put the recording. Note that a file extension
+ is not necessary, it will correspond to the selected *format*.
+- *source*: **def, mic, call, callout** or **callin**
+- *codec*: **amrn, amrw** or **aac**
+- *format*: **mp4, 3gpp, amrn** or **amrw**
+
+The JavaScript does **not** wait for the audio recording to complete.
+
+See also: [audioRecordStop()](#audioRecordStop).
+
+[]{#audioRecordStop}
+
+##### audioRecordStop
+
+`var ok = audioRecordStop()`
+
+Stop recording previously initiated by [audioRecord()](#audioRecord).
+
+[]{#browseURL}
+
+##### browseURL
+
+`var ok = browseURL( str URL )`
+
+Open the default browser at the specifed URL.
+
+[]{#button}
+
+##### button
+
+`var ok = button( str name )`
+
+Simulate a press of the named button.
+
+*name* must be one of **back, call, camera, endcall, menu, volup,
+voldown** or **search**.
+
+This function requires a rooted device.
+
+[]{#call}
+
+##### call
+
+`var ok = call( str num, bool autoDial )`
+
+Make a phone call.
+
+If *autoDial* is **false**, the phone app will be brought up with the
+number pre-inserted, if **true** the number will also be dialed.
+
+[]{#callBlock}
+
+##### callBlock
+
+`var ok = callBlock( str numMatch, bool showInfo )`
+
+Block **outgoing** calls [matching](matching.html) *numMatch*.
+
+If *showInfo* is set, Tasker will flash a message when a call is
+blocked.
+
+[]{#callDivert}
+
+##### callDivert
+
+`var ok = callDivert( str fromMatch, str to, bool showInfo )`
+
+Divert **outgoing** calls [matching](matching.html) *fromMatch* to the
+number *to*.
+
+If *showInfo* is set, Tasker will flash a message when a call is
+diverted.
+
+[]{#callRevert}
+
+##### callRevert
+
+`var ok = callRevert( str numMatch )`
+
+Stop blocking or diverting outgoing calls previously specified with
+[callBlock](#callBlock) or [callDivert](#callDivert).
+
+[]{#carMode}
+
+##### carMode
+
+`var ok = carMode( bool onFlag )`
+
+Turn on or off Android Car Mode.
+
+[]{#clearKey}
+
+##### clearKey
+
+`var ok = clearKey( str keyName )`
+
+Clear the passphrase for the specified *keyName*.
+
+See Also: [Encryption](encryption.html) in the Userguide.
+
+[]{#composeEmail}
+
+##### composeEmail
+
+`var ok = composeEmail( str to, str subject, str message )`
+
+Show an email composition dialog with any specified fields pre-filled.
+
+The JavaScript does **not** wait for the email to be sent before
+continuing.
+
+[]{#composeMMS}
+
+##### composeMMS
+
+`var ok = composeMMS( str to, str subject, str message, str attachmentPath )`
+
+Show an MMS composition dialog with any specified fields pre-filled.
+
+The JavaScript does **not** wait for the MMS to be sent before
+continuing.
+
+[]{#composeSMS}
+
+##### composeSMS
+
+`var ok = composeSMS( str to, str message )`
+
+Show an SMS composition dialog with any specified fields pre-filled.
+
+The JavaScript does **not** wait for the SMS to be sent before
+continuing.
+
+[]{#convert}
+
+##### convert
+
+`var result = convert( str val, str conversionType )`
+
+Convert from one type of value to another.
+
+*conversionType* must be one of the string constants: **byteToKbyte,
+byteToMbyte, byteToGbyte, datetimeToSec, secToDatetime, secToDatetimeM,
+secToDatetimeL, htmlToText, celsToFahr, fahrToCels, inchToCent,
+metreToFeet, feetToMetre, kgToPound, poundToKg, kmToMile, mileToKm,
+urlDecode, urlEncode, binToDec, decToBin, hexToDec, decToHex,
+base64encode base64decode, toMd5, toSha1, toLowerCase, toUpperCase,
+toUpperCaseFirst**.
+
+See also: action [Variable Convert](help/ah_convert_variable.html).
+
+[]{#createDir}
+
+##### createDir
+
+`var ok = createDir( str dirPath, bool createParent, bool useRoot )`
+
+Create the named *dirPath*. If *createParent* is specified and any
+parent directory does not exist, it will also be created.
+
+If *useRoot* is specified, the operation will be performed as the root
+user (where available).
+
+[]{#createScene}
+
+##### createScene
+
+`var ok = createScene( str sceneName )`
+
+Create the named [scene](scenes.html) without displaying it.
+
+[]{#cropImage}
+
+##### cropImage
+
+`var ok = cropImage( int fromLeftPercent, int fromRightPercent, int fromTopPercent, int fromBottomPercent )`
+
+Crop an image in Tasker\'s image buffer previously loaded via
+[loadImage](#loadImage).
+
+[]{#decryptDir}
+
+##### decryptDir
+
+`var ok = decryptDir( str path, str key, bool removeKey )`
+
+As [decryptFile()](#decryptFile), but decrypts each file in the
+specified directory in turn.
+
+[]{#decryptFile}
+
+##### decryptFile
+
+`var ok = decryptFile( str path, str key, bool removeKey )`
+
+Decrypt the specified file using the encryption parameters specified in
+`Menu / Prefs / Action`.
+
+If *removeKey* is not set, the entered passphrase will be reapplied
+automatically to the next encryption/decryption operation with the
+specified *keyName*.
+
+See Also: [Encryption](encryption.html) in the Userguide, [Decrypt
+File](help/ah_decrypt_file.html) action.
+
+[]{#deleteDir}
+
+##### deleteDir
+
+`var ok = deleteDir( str dirPath, bool recurse, bool useRoot )`
+
+Delete the named *dirPath*. *recurse* must be specified if the directory
+is not empty.
+
+If *useRoot* is specified, the operation will be performed as the root
+user (where available).
+
+[]{#deleteFile}
+
+##### deleteFile
+
+`var ok = deleteFile( str filePath, int shredTimes, bool useRoot )`
+
+Delete the named *filePath*.
+
+*shredTimes* has range 0-10.
+
+If *useRoot* is specified, the operation will be performed as the root
+user (where available).
+
+See also: action [Delete File](help/ah_delete_file.html)
+
+[]{#destroyScene}
+
+##### destroyScene
+
+`var ok = destroyScene( str sceneName )`
+
+Hide the named [scene](scenes.html) if it\'s visible, then destroy it.
+
+[]{#displayAutoBright}
+
+##### displayAutoBright
+
+`var ok = displayAutoBright( bool onFlag )`
+
+Whether the display brightness should automatically adjust to the
+ambient light or not.
+
+[]{#displayAutoRotate}
+
+##### displayAutoRotate
+
+`var ok = displayRotate( bool onFlag )`
+
+Whether the display orientation should change based on the physical
+orientation of the device.
+
+[]{#displayTimeout}
+
+##### displayTimeout
+
+`var ok = displayTimeout( int hours, int minutes, int seconds )`
+
+How long the period of no-activity should be before the display is
+turned off.
+
+[]{#dpad}
+
+##### dpad
+
+`var ok = dpad( str direction, int noRepeats )`
+
+Simulate a movement or press of the hardware dpad (or trackball).
+
+*direction* must be one of **up, down, left, right** or **press**.
+
+This function requires a rooted device.
+
+[]{#enableProfile}
+
+##### enableProfile
+
+`var ok = enableProfile( str name, boolean enable )`
+
+Enable or disable the named Tasker profile.
+
+[]{#encryptDir}
+
+##### encryptDir
+
+`var ok = encryptDir( str path, str keyName, bool rememberKey, bool shredOriginal )`
+
+As [encryptFile()](#encryptFile), but encrypts each file in the
+specified directory in turn.
+
+[]{#elemBackColour}
+
+##### elemBackColour
+
+`var ok = elemBackColour( str scene, str element, str startColour, str endColour )`
+
+Set the background [colour](#colour) of the specified
+[scene](scenes.html) element.
+
+See also: action [Element Back
+Colour](help/ah_scene_element_background_colour.html).
+
+[]{#elemBorder}
+
+##### elemBorder
+
+`var ok = elemBorder( str scene, str element, int width, str colour )`
+
+Set the border [colour](#colour) and width of the specified
+[scene](scenes.html) element.
+
+[]{#elemPosition}
+
+##### elemPosition
+
+`var ok = elemPosition( str scene, str element, str orientation, int x, int y, int animMS )`
+
+Move an element within it\'s scene.
+
+*orientation* must be one of **port** or **land**. *animMS* indicates
+the duration of the corresponding animation in MS. A zero-value
+indicates no animation.
+
+See also: action [Element
+Position](help/ah_scene_element_position.html).
+
+[]{#elemText}
+
+##### elemText
+
+`var ok = elemText( str scene, str element, str position, str text )`
+
+Set the text of the specified [scene](scenes.html) element.
+
+*pos* must be one of **repl** (replace existing text completely),
+**start** (insert before existing text) or **end** (append after
+existing text).
+
+See also: action [Element Text](help/ah_scene_element_text.html).
+
+[]{#elemTextColour}
+
+##### elemTextColour
+
+`var ok = elemTextColour( str scene, str element, str colour )`
+
+Set the text [colour](#colour) of the specified [scene](scenes.html)
+element.
+
+See also: action [Element Text
+Colour](help/ah_scene_element_text_colour.html).
+
+[]{#elemTextSize}
+
+##### elemTextSize
+
+`var ok = elemTextSize( str scene, str element, int size )`
+
+Set the text size of the specified [scene](scenes.html) element.
+
+See also: action [Element Text Size](help/scene_element_text_size.html).
+
+[]{#elemVisibility}
+
+##### elemVisibility
+
+`var ok = elemVisibility( str scene, str element, boolean visible, int animationTimeMS )`
+
+Make the specified [scene](scenes.html) element visible or invisible.
+
+See also: action [Element
+Visibility](help/ah_scene_element_visibility.html).
+
+[]{#endCall}
+
+##### endCall
+
+`var ok = endCall()`
+
+Terminate the current call (if there is one).
+
+[]{#encryptFile}
+
+##### encryptFile
+
+`var ok = encryptFile( str path, str keyName, bool rememberKey, bool shredOriginal )`
+
+Encrypt the specified file using the encryption parameters specified in
+`Menu / Prefs / Action`.
+
+If *rememberKey* is set, the entered passphrase will be reapplied
+automatically to the next encryption/decryption operation with the
+specified *keyName*.
+
+If *shredOriginal* is specified, the original file will be overwritten
+several times with random bits if encryption is successful.
+
+See Also: [Encryption](encryption.html) in the Userguide, [Encrypt
+File](help/ah_encrypt_file.html) action.
+
+[]{#enterKey}
+
+##### enterKey
+
+`var ok = enterKey( str title, str keyName, bool showOverKeyguard, bool confirm, str background, str layout, int timeoutSecs )`
+
+Show a dialog to enter the passphrase for the specified *keyName*. The
+JavaScript waits until the dialog has been dismissed or the timeout
+reached.
+
+- *confirm*: if set, the passphrase must be entered twice to ensure it
+ is correct.
+- *background*: \[optional\] a file path or file URI to a background
+ image.
+- *layout*: the name of a user-created [scene](scenes.html) to use in
+ place of the built-in scene.
+
+See Also: [Encryption](encryption.html) in the Userguide
+
+[]{#filterImage}
+
+##### filterImage
+
+`bool ok = filterImage( str mode, int value )`
+
+Filter an image previously loaded into Tasker\'s image buffer via
+[loadImage()](#loadImage)
+
+Possible values of *mode* are:
+
+- **bw**: convert to black & white, using *value* as a threshold
+- **eblue**: enhance blue values by *value*
+- **egreen**: enhance green values by *value*
+- **ered**: enhance red values by *value*
+- **grey**: convert to greyscale, *value* is unused
+- **alpha**: set pixel alpha (opposite of transparency) to *value*
+
+*value* should be 1-254.
+
+[]{#flipImage}
+
+##### flipImage
+
+`bool ok = flipImage( bool horizontal )`
+
+Flip an image previously loaded into Tasker\'s image buffer via
+[loadImage()](#loadImage)
+
+If *horizontal* is false, the image is flipped vertically.
+
+[]{#exit}
+
+##### exit
+
+`exit()`
+
+Stop execution of the JavaScript.
+
+[]{#flash}
+
+##### flash
+
+`flash( str message )`
+
+Flash a short-duration Android \'Toast\' message. []{#flashLong}
+
+##### flashLong
+
+`flashLong( str message )`
+
+Flash a long-duration Android \'Toast\' message. []{#getLocation}
+
+##### getLocation
+
+`var ok = getLocation( str source, bool keepTracking, int timeoutSecs )`
+
+Try to get a fix of the current device location.
+
+*source* must be one of **gps, net** or **any**.
+
+If *keepTracking* is set, the specified source(s) will be left tracking
+with the purpose of providing a much quicker fix next time the function
+is called.
+
+Fix coordinates are stored in the global Tasker variables **%LOC** (GPS)
+and/or **%LOCN** (Net). The value can be retrieved with the
+[global](#global) function. Several other parameters of the fix are also
+available, see [Variables](variables.html).
+
+Example
+
+
+ var lastFix = global( 'LOC' );
+ if (
+ getLocation( 'gps' ) &&
+ ( global( 'LOC' ) != lastFix )
+ ) {
+ flash( "New fix: " + global( 'LOC' ) );
+ }
+
+See also: action [Get Location](help/ah_get_fix.html), function
+[stopLocation](#stopLocation).
+
+[]{#getVoice}
+
+##### getVoice
+
+`str result = getVoice( str prompt, str languageModel, int timeout )`
+
+Get voice input and convert to text.
+
+*result* is \'undefined\' if the voice acquisition failed, otherwise
+it\'s an array of possible matching texts.
+
+*prompt* is a label for the dialog that is shown during voice
+acquisition.
+
+*languageMode* gives the speech recognition engine a clue as to the
+context of the speech. It must be one of **web** for \'web search\' or
+**free** for \'free-form\'.
+
+[]{#goHome}
+
+##### goHome
+
+`goHome( int screenNum )`
+
+Go to the Android home screen. *screenNum* is not supported by all home
+screens.
+
+[]{#haptics}
+
+##### haptics
+
+`var ok = haptics( bool onFlag )`
+
+Enable/disable system setting Haptic Feedback.
+
+[]{#hideScene}
+
+##### hideScene
+
+`var ok = hideScene( str sceneName )`
+
+Hide the named [scene](scenes.html) if it\'s visible.
+
+[]{#global}
+
+##### global
+
+`var value = global( str varName )`
+
+Retrieve the value of a Tasker global variable. Prefixing the name with
+% is optional.
+
+Example:
+
+ flash( global( '%DogName' ) );
+
+[]{#listFiles}
+
+##### listFiles
+
+`str files = listFiles( str dirPath, bool hiddenToo )`
+
+List all files in the specified *dirPath*.
+
+*files* is a newline-separated list of subfiles.
+
+If no files or found or an error occurs, the returned value will be
+`undef`.
+
+If *hiddenToo* is specified, files starting with period are included,
+otherwise they are not.
+
+Example:
+
+ var files = listFiles( '/sdcard' );
+ var arr = files.split( '\n' );
+ flash( 'Found ' + arr.length + ' files' );
+
+[]{#loadApp}
+
+##### loadApp
+
+`var ok = loadApp( str name, str data, bool excludeFromRecents )`
+
+Start up the named app.
+
+*Name* can be a package name or app label, it\'s tested first against
+known package names. **Note**: app label could be localized to another
+language if the script is used in an exported app.
+
+*Data* is in URI format and app-specific.
+
+When *excludeFromRecents* is true, the app will not appear in the home
+screen \'recent applications\' list.
+
+[]{#loadImage}
+
+##### loadImage
+
+`var ok = loadImage( str uri )`
+
+Load an image into Tasker\'s internal image buffer.
+
+The following uri formats are currently supported:
+
+- *file://* followed by a local file path
+
+See also [Load Image](help/ah_load_image.html) action.
+
+[]{#lock}
+
+##### lock
+
+`var ok = lock( str title, str code, bool allowCancel, bool rememberCode, bool fullScreen, str background, str layout )`
+
+Show a lock screen, preventing user interaction with the covered part of
+the screen. The JavaScript waits until the code has been entered or the
+lock cancelled (see below).
+
+- *code*: the numeric code which must be entered for unlock
+- *allowCancel*: show a button to remove the lockscreen, which causes
+ a return to the Android home screen
+- *rememberCode*: the code will be remembered and automatically
+ entered when the lock screen is show in future, until the display
+ next turns off
+- *background*: \[optional\] a file path or file URI to a background
+ image.
+- *layout*: the name of a user-created [scene](scenes.html) to use in
+ place of the built-in lock scene
+
+[]{#local}
+
+##### local
+
+`var value = local( str varName )`
+
+Retrieve the value of a Tasker scene-local variable. The name should
+**not** be prefixed with *%*.
+
+This function is only for use by JavaScript embedded in HTML and
+accessed via a WebView scene element.
+
+[]{#mediaControl}
+
+##### mediaControl
+
+`var ok = mediaControl( str action )`
+
+Control media via simulation of hardware buttons.
+
+Possible *action*s are **next, pause, prev, toggle, stop** or **play**.
+
+[]{#micMute}
+
+##### micMute
+
+`var ok = micMute( bool shouldMute )`
+
+Mute or unmute the device\'s microphone (if present),
+
+[]{#mobileData}
+
+##### mobileData
+
+`var ok = mobileData( bool set )`
+
+Enable or disable the system Mobile Data setting.
+
+See also: action [Mobile Data](help/ah_mobile_data_direct.html)
+[]{#musicBack}
+
+##### musicBack
+
+`var ok = musicBack( int seconds )`
+
+Skip back by *seconds* during playback of a music file previously
+started by [musicPlay](#musicPlay).
+
+See also: [musicSkip](#musicSkip), [musicStop](#musicStop)
+
+[]{#musicPlay}
+
+##### musicPlay
+
+`var ok = musicPlay( str path, int offsetSecs, bool loop, str stream )`
+
+Play a music file via Tasker\'s internal music player.
+
+*stream* to which [audio stream](#streams) the music should be played
+
+This function does **not** not wait for completion.
+
+The last 3 arguments may be ommitted, in which case they default to
+**0**, **false** and **media** respectively.
+
+See also: [musicStop](#musicStop), [musicBack](#musicBack),
+[musicSkip](#musicSkip)
+
+[]{#musicSkip}
+
+##### musicSkip
+
+`var ok = musicSkip( int seconds )`
+
+Skip forwards by *seconds* during playback of a music file previously
+started by [musicPlay](#musicPlay).
+
+See also: [musicBack](#musicBack), [musicStop](#musicStop)
+
+[]{#musicStop}
+
+##### musicStop
+
+`var ok = musicStop()`
+
+Stop playback of a music file previously started by
+[musicPlay](#musicPlay).
+
+See also: [musicBack](#musicBack), [musicSkip](#musicSkip)
+
+[]{#nightMode}
+
+##### nightMode
+
+`var ok = nightMode( bool onFlag )`
+
+Turn on or off Android Night Mode.
+
+[]{#popup}
+
+##### popup
+
+`var ok = popup( str title, str text, bool showOverKeyguard, str background, str layout, int timeoutSecs )`
+
+Show a popup dialog. The JavaScript waits until the popup has been
+dismissed or the timeout reached.
+
+- *background*: \[optional\] a file path or file URI to a background
+ image.
+- *layout*: the name of a user-created [scene](scenes.html) to use in
+ place of the built-in popup scene.
+
+[]{#performTask}
+
+##### performTask
+
+`var ok = performTask( str taskName, int priority, str parameterOne, str parameterTwo )`
+
+Run the Tasker task *taskName*.
+
+Note that the JavaScript does not wait for the task to complete.
+
+[]{#profileActive}
+
+##### profileActive
+
+`bool active = profileActive( str profileName )`
+
+Whether the named Tasker profile is currently active. Returns false if
+the profile name is unknown.
+
+[]{#pulse}
+
+##### pulse
+
+`bool ok = pulse( bool onFlag )`
+
+Enable or disable the Android Notification Pulse system setting.
+
+[]{#readFile}
+
+##### readFile
+
+`var contents = readFile( str path )`
+
+Read the contents of a text file.
+
+[]{#reboot}
+
+##### reboot
+
+`var ok = reboot( str type )`
+
+Reboot the device.
+
+*type* is one of **normal, recovery** or **bootloader**. It can be
+ommitted and defaults to **normal**.
+
+Requires a rooted device.
+
+See also: function [shutdown](#shutdown) []{#resizeImage}
+
+##### resizeImage
+
+`var ok = resizeImage( int width, int height )`
+
+Scale the current image in Tasker\'s image buffer to the specified
+dimensions.
+
+[]{#rotateImage}
+
+##### rotateImage
+
+`var ok = rotateImage( str dir, int degrees )`
+
+Rotate the current image in Tasker\'s image buffer.
+
+*dir* must be one of **left** or **right**. *degrees* must be one of
+**45, 90, 135** or **180**.
+
+[]{#saveImage}
+
+##### saveImage
+
+`var ok = saveImage( str path, int qualityPercent, bool deleteFromMemoryAfter )`
+
+Save the current image in Tasker\'s image buffer to the specified file
+*path*.
+
+[Save Image](help/ah_save_image.html) action.
+
+[]{#say}
+
+##### say
+
+`var ok = say( str text, str engine, str voice, str stream, int pitch, int speed )`
+
+Cause the device to say *text* out loud.
+
+- *engine*: the speech engine e.g. **com.svox.classic** Defaults to
+ the system default (specify *undefined* for that)
+- *voice*: the voice to use (must be supported by *engine*). Defaults
+ to the current system language (specify *undefined* for that)
+- *stream*: to which [audio stream](#streams) the speech should be
+ made
+- *pitch*: 1-10
+- *speed*: 1-10
+
+The script waits for the speech to be finished.
+
+[]{#sendIntent}
+
+##### sendIntent
+
+`var ok = sendIntent( str action, str targetComp, str package, str class, str category, str data, str mimeType, str[] extras );`
+
+Send an intent. Intents are Android\'s high-level application
+interaction system.
+
+Any parameter may be specified as undefined.
+
+- *targetComp*: the type of application component to target, one of
+ **receiver, activity** or **service**. Defaults to **receiver**.
+- *package*: the application package to limt the intent to
+- *class*: the application class to limit the intent to
+- *category*: one of **none, alt, browsable, cardock, deskdock, home,
+ info, launcher, preference, selectedalt, tab** or **test**, defaults
+ to **none**
+- *extras*: extra data to pass, in the format key:value. May be
+ undefined. Maximum length 2.
+
+See also: action [Send Intent](help/ah_send_intent.html).
+
+[]{#sendSMS}
+
+##### sendSMS
+
+`var ok = sendSMS( str number, str text, boolean storeInMessagingApp );`
+
+Send an SMS.
+
+See also: action [Send SMS](help/ah_send_sms.html)
+
+[]{#setAirplaneMode}
+
+##### setAirplaneMode
+
+`var ok = setAirplaneMode( bool setOn )`
+
+Enable or disable Airplane Mode.
+
+Get the current value with:
+
+` var enabled = global( 'AIR' );`
+
+See also: function [setAirplaneRadios](#setAirplaneRadios)
+
+[]{#setAirplaneRadios}
+
+##### setAirplaneRadios
+
+`var ok = setAirplaneRadios( str disableRadios )`
+
+Specify the radios which will be **disabled** when the device enters
+Airplane Mode.
+
+*disableRadios* is a comma-separated list with radio names from the
+following set: **cell, nfc, wifi, wimax, bt**.
+
+Get the current value with:
+
+` var radios = global( 'AIRR' );`
+
+See also: function [setAirplaneMode](#setAirplaneMode)
+
+[]{#setAlarm}
+
+##### setAlarm
+
+`var ok = setAlarm( int hour, int min, str message, bool confirmFlag )`
+
+Create an alarm in the default alarm clock app.
+
+*confirmFlag* specifies whether the app should confirm that the alarm
+has been set.
+
+*message* is optional.
+
+Requires Android version 2.3+.
+
+[]{#setAutoSync}
+
+##### setAutoSync
+
+`var ok = setAutoSync( bool setOn )`
+
+Enable or disable the global auto-sync setting.
+
+[]{#scanCard}
+
+##### scanCard
+
+`var ok = scanCard( str path )`
+
+Force the system to scan the external storage card for new/deleted
+media.
+
+If *path* is defined, only that will be scanned.
+
+See also: action [Scan Card](help/ah_scan_card.html)
+
+[]{#setBT}
+
+##### setBT
+
+`var ok = setBT( bool setOn )`
+
+Enable or disable the Bluetooth radio (if present).
+
+Test BT state with:
+
+` if ( global( 'BLUE' ) == "on" ) { doSomething(); }`
+
+[]{#setBTID}
+
+##### setBTID
+
+`var ok = setBTID( str toSet )`
+
+Set the bluetooth adapter ID (the name as seen by other devices).
+
+[]{#setGlobal}
+
+##### setGlobal
+
+`setGlobal( str varName, str newValue )`
+
+Set the value of a Tasker global user variable. Prefixing varName with %
+is optional.
+
+Arrays are **not** supported due to limitations of the Android JS
+interface.
+
+[]{#setKey}
+
+##### setKey
+
+`var ok = setKey( str keyName, str passphrase )`
+
+Set the passphrase for the specified *keyName*.
+
+See Also: [Encryption](encryption.html) in the Userguide.
+
+[]{#setLocal}
+
+##### setLocal
+
+`setLocal( str varName, str newValue )`
+
+Set the value of a Tasker **scene-local** user variable. Variable names
+should **not** be prefixed with *%*.
+
+This function is only for use by JavaScript embedded in HTML and
+accessed via a WebView scene element.
+
+[]{#setClip}
+
+##### setClip
+
+`var ok = setClip( str text, bool appendFlag )`
+
+Set the global system clipboard.
+
+Test the value with:
+
+` var clip = global( 'CLIP' );`
+
+[]{#settings}
+
+##### settings
+
+`var ok = settings( str screenName )`
+
+Show an Android System Settings screen.
+
+*screenName* must be one of **all, accessibility, addacount,
+airplanemode, apn, app, batteryinfo, appmanage bluetooth, date,
+deviceinfo, dictionary, display, inputmethod, internalstorage, locale,
+location, memorycard, networkoperator, powerusage, privacy, quicklaunch,
+security, mobiledata, search, sound, sync, wifi, wifiip** or
+**wireless**.
+
+[]{#setWallpaper}
+
+##### setWallpaper
+
+`var ok = setWallpaper( str path )`
+
+Set the system home screen wallpaper.
+
+[]{#setWifi}
+
+##### setWifi
+
+`var ok = setWifi( bool setOn )`
+
+Enable or disable the Wifi radio (if present).
+
+Test wifi state with:
+
+` if ( global( 'WIFI' ) == "on" ) { doSomething(); }`
+
+[]{#shell}
+
+##### shell
+
+`var output = shell( str command, bool asRoot, int timoutSecs )`
+
+Run the shell command *command*.
+
+*asRoot* will only have effect if the device is rooted.
+
+*output* is \'undefined\' if the shell command failed. It\'s maximum
+size is restricted to around 750K.
+
+[]{#showScene}
+
+##### showScene
+
+`var ok = showScene( str name, str displayAs, int hoffset, int voffset, bool showExitIcon, bool waitForExit )`
+
+Show the named [scene](scenes.html), creating it first if necessary.
+
+- *displayAs*: options:
+ `Overlay, OverBlocking, OverBlockFullDisplay, Dialog, DialogBlur, DialogDim, ActivityFullWindow, ActivityFullDisplay, ActivityFullDisplayNoTitle`
+- *hoffset, voffset*: percentage vertical and horizontal offset for
+ the scene -100% to 100% (not relevant for full screen/window display
+ types)
+- *showExitIcon*: display a small icon in the bottom right which
+ destroys the scene when pressed
+- *waitForExit*: whether to wait for the scene to exit before
+ continuing the script
+
+[]{#shutdown}
+
+##### shutdown
+
+`var ok = shutdown()`
+
+Shutdown the device.
+
+Requires a rooted device.
+
+See also: [reboot](#reboot)
+
+[]{#silentMode}
+
+##### silentMode
+
+`var ok = silentMode( str mode )`
+
+Set the system silent (\'ringer\') mode.
+
+*mode* must be one of **off, vibrate** or **on**
+
+[]{#sl4a}
+
+##### sl4a
+
+`var ok = sl4a( str scriptName, boolean inTerminal )`
+
+Run a previously created
+[SL4A](https://code.google.com/p/android-scripting/) script.
+
+[]{#soundEffects}
+
+##### soundEffects
+
+`var ok = soundEffects( bool setTo )`
+
+Setting the system *Sound Effects* setting (sound from clicking on
+buttons etc.
+
+[]{#speakerphone}
+
+##### speakerphone
+
+`var ok = speakerPhone( bool setFlag )`
+
+Enable or disable the speakerphone function.
+
+[]{#statusBar}
+
+##### statusBar
+
+`var ok = statusBar( bool expanded )`
+
+Expand or contract the system status bar.
+
+[]{#stayOn}
+
+##### stayOn
+
+`var ok = stayOn( str mode )`
+
+Specify whether the device should remain on when power is connected.
+
+Possible *mode*s are **never, ac, usb, any**.
+
+[]{#stopLocation}
+
+##### stopLocation
+
+`var ok = stopLocation()`
+
+Stop tracking a location provider. This is only relevant when a
+[getLocation](#getLocation) function has been previously called with the
+*keepTracking* parameter set.
+
+[]{#systemLock}
+
+##### systemLock
+
+`var ok = systemLock()`
+
+Turn off the display and activate the keyguard.
+
+Requires Tasker\'s Device Administrator to be enabled in Android
+settings.
+
+[]{#taskRunning}
+
+##### taskRunning
+
+`bool running = taskRunning( str taskName )`
+
+Whether the named Tasker task is currently running. Returns false if the
+task name is unknown.
+
+[]{#takeCall}
+
+##### takeCall
+
+`bool ok = takeCall();`
+
+Auto-accept an incoming call (if there is one).
+
+[]{#takePhoto}
+
+##### takePhoto
+
+`bool ok = takePhoto( int camera, str fileName, str resolution, bool insertGallery )`
+
+Take a photo with the builtin camera.
+
+- *camera*: 0 = rear camera, 1 = front camera
+- *resolution*: format WxH e.g. 640x840
+- *insertGallery*: whether to insert the resulting picture in the
+ Android Gallery application
+
+See also: action [Take Photo](help/ah_take_photo.html)
+
+[]{#type}
+
+##### type
+
+`var ok = type( str text, int repeatCount )`
+
+Simulate keyboard typing.
+
+Requires a rooted device.
+
+[]{#unzip}
+
+##### unzip
+
+`boolean ok = unzip( str zipPath, bool deleteZipAfter )`
+
+Unpack a Zip archive into the parent directory of the archive.
+
+*deleteZip* causes the zip archive to be deleted after successful
+unpacking.
+
+[]{#usbTether}
+
+##### usbTether
+
+`usbTether( bool set )`
+
+Enable or disable USB tethering.
+
+See also: action [USB Tether](help/ah_tether_usb.html)
+
+[]{#vibrate}
+
+##### vibrate
+
+`vibrate( int durationMilliseconds )`
+
+Cause the device to vibrate for the specified time.
+
+[]{#vibratePattern}
+
+##### vibratePattern
+
+`vibratePattern( str pattern )`
+
+Cause the device to vibrate following the specified *pattern*, which
+consists of a sequence of off then on millisecond durations e.g.
+
+`500,1000,750,1000`
+
+wait for 500ms, vibrates 1000ms, wait for 750ms, then vibrate for
+1000ms.
+
+[]{#wait}
+
+##### wait
+
+`wait( int durationMilliseconds )`
+
+Pause the script for the specified time.
+
+Warning: may cause some preceeding functions not to complete in some
+situations. If in doubt, use JavaScript setTimeout() instead.
+
+[]{#wifiTether}
+
+##### wifiTether
+
+`var ok = wifiTether( bool set )`
+
+Enable or disable Wifi tethering.
+
+See also: action [Wifi Tether](help/ah_tether_wifi.html)
+
+[]{#writeFile}
+
+##### writeFile
+
+`var ok = writeFile( str path, str text, bool append )`
+
+Write *text* to file *path*.
+
+If *append* is specified, the text will be attached to the end of the
+existing file contents (if there are any).
+
+[]{#zip}
+
+##### zip
+
+`boolean ok = zip( str path, int level, bool deleteOriginalAfter )`
+
+Zip a file or directory.
+
+*level* is the desired compression level from 1-9, with 9 resulting in
+the smallest file and the longest compression time.
+
+*deleteOriginal* causes *path* to be deleted if the zip operation is
+successful.
+
+[]{#notes}
+
+### Notes
+
+[]{#streams}
+
+#### Audio Streams
+
+Must be one of **call, system, ringer, media, alarm** or
+**notification** []{#colour}
+
+#### Colours
+
+Colours are specified in *AARRGGBB* hexadecimal format, with solid white
+being **FFFFFFFF**. []{#paths}
+
+#### File Paths
+
+File paths can be specified as either absolute (start with **/**) or
+relative (don\'t start with **/**).
+
+Relative file paths are relative to the root of the internal storage
+media. So, for example, `pics/me.jpg` might resolve to
+`/sdcard/pics/me.jpg`.
diff --git a/en/loccontext.md b/en/loccontext.md
new file mode 100644
index 0000000..8764431
--- /dev/null
+++ b/en/loccontext.md
@@ -0,0 +1,46 @@
+---
+title: 'Tasker: Location Context'
+---
+
+Location Context 
+-------------------------------------
+
+A *location context* specifies a circular geographical area in which it
+is active. It is formed by a centre point (*latitude, longitude*) plus a
+*radius* around that point.
+
+#### Location Providers
+
+A location provider is a method of supplying geographical coordinates.
+Tasker must use one or more location providers to be able to decide when
+a location context should become active or inactive. []{#gps}
+
+##### GPS
+
+The most accurate provider available (around +-10m), but its performance
+degrades quickly indoors and it uses a relatively large amount of power.
+
+To set the frequency of GPS fixes, see `Menu / Preferences / Monitor`.
+*GPS Check Time* determines the check frequency in seconds while the
+device is awake, *Off Check Time* while the device is asleep.
+
+GPS will only be used for a particular context if it is specified in the
+location edit screen.
+
+[]{#net}
+
+##### Network
+
+This provider uses a combination of cell-towers and WiFi information (if
+wifi is enabled) to determine the device\'s geographical location. It is
+less power-hungry than GPS, but also less accurate (sometimes +- several
+kilometres) and requires data network availability.
+
+Network will only be used for a particular context if it is specified in
+the location edit screen.
+
+See also:
+
+- [Location Edit Screen](activity_locselect.html)
+- [Location Without Tears](loctears.html) (guidance for choosing a
+ location method)
diff --git a/en/loctears.md b/en/loctears.md
new file mode 100644
index 0000000..626dfe2
--- /dev/null
+++ b/en/loctears.md
@@ -0,0 +1,265 @@
+---
+title: 'Tasker: Location Without Tears'
+---
+
+Location Without Tears 
+-------------------------------------------
+
+This is an overview guide to choosing a method for fixing your location
+with Tasker. At the end are some [advanced power-saving
+strategies](#adv).
+
+Power / Accuracy Comparison
+---------------------------
+
+ Method Power Usage Acc Network Wifi BT
+ ---------------------------------- ------------- --------------- --------- ------ ----
+ [State: Cell Near](#cell) \* \*
+ [State: BT Near](#btnear) \*\* \*\*\*\*\* Y
+ [State: Wifi Near](#near) \*\* \*\*\*\*\* Y
+ [Location: Net](#net) \*\* \*\* Y
+ [Location: Net & Wifi](#netwifi) \*\*\* \*/\*\*\*\*\* Y Y
+ [Location: GPS](#gps) \*\*\*\*\* \*\*\*\*\* Y
+
+More stars mean higher power usage or higher accuracy (Acc).
+
+Detail Comparison
+-----------------
+
+[]{#cell}
+
+### State: Cell Near
+
+##### Setup
+
+Create a **state context**, select **Phone** then **Cell Near**. Click
+Update and walk around a bit to scan for cell towers nearby.
+
+##### About
+
+Uses information about the cell towers the phone uses for telephony to
+record and match a location.
+
+When the display is off, frequency of checks is controlled by
+`Prefs / Monitor / Display Off All Checks`.
+
+If your profile keeps deactivating, go back to the Cell Near state and
+click the magnifying glass icon to check for cells you may have missed
+in your scan.
+
+##### Plus / Minus
+
+- (+) virtually no extra power on top of power needed for normal phone
+ service
+- (+) when the display is on, context updates as soon as the tower is
+ visible
+- (+) when the display is off, only one check period is needed to
+ determine context exit
+- (-) highly inaccurate
+- (-) must be physically at the location in order to record it
+
+##### Other Settings
+
+- `Monitor / General Monitoring / Use New Cell API`: if you\'re not
+ seeing any cells at all when scanning on a modern device, try
+ checking this
+- `Monitor / Display Off Monitoring / Cell Workaround`: if things
+ aren\'t working when the display is off
+- `Monitor / Display Off Monitoring / Cell Wake Screen`: second
+ possible workaround when the display is off
+
+[]{#btnear}
+
+### State: BT Near
+
+##### Setup
+
+Create a **State context**, click **BT Near** (in the Net category),
+fill in the name or address of a bluetooth device near the location you
+want to identify.
+
+##### About
+
+BT Near does regular bluetooth Scans and will activate when it
+recognizes a device you have configured is nearby. Note: you don\'t have
+to connect to the device, so it doesn\'t have to be a device you own.
+
+Frequency of checks is controlled by `Prefs / Monitor / BT Scan Seconds`
+(screen on) and `Prefs / Monitor / Display Off All Checks` (screen off).
+
+Check the **BT Toggle** box if you don\'t want bluetooth enabled all the
+time. It will then be toggled when Tasker needs to do a scan.
+
+If your target device is a low-energy device, deselect **Standard
+Devices** to reduce energy usage. If you can pair with the target
+device, you can have a major reduction in power usage and scan times by
+not selecting **Non-Paired Devices**.
+
+##### Plus / Minus
+
+- (+) very good accuracy, reliability
+- (+) modest power usage, especially for paired devices
+- (+) works indoors too
+- (-) need a known device nearby
+
+##### Other Settings
+
+- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if
+ available on your device, will need to be disabled if you wish to
+ detect a nearby BT device that may move or turn off or on
+
+[]{#net}
+
+### Location: Net
+
+##### Setup
+
+Create a location context, and deselect GPS.
+
+##### About
+
+Net location accuracy varies greatly. It\'s **very important** that you
+create a **large radius** around the spot you wish to detect.
+
+Frequency of checks is controlled by
+`Prefs / Monitor / Network Location Check` (screen on) and
+`Prefs / Monitor / Display Off All Checks`.
+
+[More Info](loccontext.html).
+
+##### Plus / Minus
+
+- (+) extremely low (extra) power (IF network is available anyway)
+- (-) requires network and phone service
+- (-) highly inaccurate and variable fixes
+
+[]{#netwifi}
+
+### Location: Net & Wifi
+
+##### Setup
+
+Create a location context and deselect GPS. Make sure your device\'s
+Wifi is turned on when you want a more accurate location fix.
+
+##### About
+
+Net location can be assisted by nearby access points when Wifi is turned
+on (Google has a map of APs for many areas).
+
+Turn Wifi off when not needed to conserve power e.g. use a Time context
+to turn wifi off at night.
+
+##### Plus / Minus
+
+- (+) very good accuracy in built-up areas for relatively low power
+ usage
+- (-) must be physically at the location in order to record it
+
+[]{#near}
+
+### State: Wifi Near
+
+##### Setup
+
+Create a **State context**, click **Wifi Near** (in the Net category),
+fill in the SSID of an Access Point (AP) with the best signal near where
+you want to identify.
+
+##### About
+
+Wifi Near does regular Wifi Scans and will activate when it recognizes
+an AP you have configured is nearby. Note: you don\'t have to connect to
+the AP. You could configure e.g. the neighbours AP if the signal is
+strong enough.
+
+Frequency of checks is controlled by
+`Prefs / Monitor / Wifi Scan Seconds` (screen on) and
+`Prefs / Monitor / Display Off All Checks` (screen off).
+
+Check the **Wifi Toggle** box if you don\'t want wifi on all the time.
+It will then be toggled when Tasker needs to do a scan. This isn\'t
+needed in In Android 4.4+ if you select `Scanning Always Available` in
+Advanced Wifi Settings and will save power.
+
+##### Plus / Minus
+
+- (+) very good accuracy and reliability
+- (+) less power than GPS
+- (+) works indoors too
+- (-) need an AP nearby
+
+##### Other Settings
+
+- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if
+ available on your device, will need to be disabled if you wish to
+ detect an AP that may turn off and on.
+- Android location settings: basic location needs to be enabled for
+ Android 8.1+.
+
+[]{#gps}
+
+##### Location: GPS
+
+##### Setup
+
+Create a location context, and deselect Net.
+
+##### About
+
+Frequency of GPS checks is controlled by `Prefs / Monitor / GPS Check`
+(screen on) and `Prefs / Monitor / Display Off All Checks`. Higher
+frequencies mean more battery usage but that location changes will be
+noticed more quickly.
+
+When indoors, GPS will try a long time to get a signal, using a lot of
+battery. Adjust it at `Prefs / Monitor / GPS Timeout`. Make the timeout
+as low as you can until you start losing effectiveness.
+
+[More Info](loccontext.html).
+
+##### Plus / Minus
+
+- (+) highly accurate in the open air
+- (-) functions very poorly or not at all indoors. A bad side effect
+ is that if you enter a building e.g. office while between the check
+ times, it may never detect your new location until you leave.
+- (-) extreme power usage
+- (-) needs network to get a first fix
+
+##### Other Settings
+
+- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if
+ available on your device, will need to be disabled if you wish to
+ detect changes of location on the order of a few meters.
+
+[]{#adv}
+
+### Advanced Strategies
+
+##### Motion Detection
+
+Some devices have a low-power accelerometer that can be active while the
+rest of the device is sleeping.
+
+For such devices, Tasker will not do location checks with the display
+off unless it detects that significant movement has taken place since
+the last check, resulting in lower power usage and faster response times
+when the device does eventually move.
+
+##### Multiple Contexts
+
+Tasker does not check high-power contexts until all lower-power contexts
+in the same profile are active. You can use this to reduce power
+consumption. For instance, if you use the Wifi Near state to detect
+coming home, you could add a Location: Net context to the same profile,
+so that wifi scanning will only take place when you are in the right
+neighbourhood.
+
+##### Location Control
+
+Disable GPS/Net location when they\'re not needed by creating a separate
+profile with e.g. a Time context which disables GPS during the night.
+
+This works because Location contexts assume you are in the same location
+until there is a fix which says otherwise.
diff --git a/en/matching.md b/en/matching.md
new file mode 100644
index 0000000..647326e
--- /dev/null
+++ b/en/matching.md
@@ -0,0 +1,114 @@
+---
+title: 'Tasker: Pattern Matching'
+---
+
+Pattern Matching 
+-------------------------------------
+
+### What\'s Pattern Matching ?
+
+With Pattern Matching, you specify a *pattern* which tells Tasker what
+text you wish to match. For instance, if you want to match any telephone
+number starting with **0135**, you can specify the simple match
+**0135\***. **\*** is a special character which *matches* any number of
+any character.
+
+Tasker has two type of matching, [Simple Matching](#simple) and more
+advanced [Regex Matching](#regex). []{#simple}
+
+### Simple Matching
+
+Simple matching is designed to be easy for non-technical people to use.
+
+#### Where\'s It Used ?
+
+Simple Matching is used in the following places:
+
+- in the **If** condition of an action, when the **\~** (match) or
+ **!\~** (not match) operators are specified.
+- in text paremeters of State and Event contexts
+- some other places :-)
+
+#### Matching Rules
+
+- if a pattern is left blank, it will match against anything
+- if it is not blank it must match the whole target text
+- **/** means \'or\', it divides up multiple possible matches
+- a **\*** will match any number of any character. It\'s not possible
+ to specifically match a **\*** character.
+- a **+** will match one or more of any character. It\'s not possible
+ to specifically match a **+** character.\
+ Beware: the condition \'%var matches +\' will be **true** if %var
+ has not been assigned a value, because Tasker does not replace
+ variables which do not have a value.
+- matching is case-insensitive (*magic* will match with *MagiC*)
+ **unless** the pattern contains an upper-case letter e.g. *Magic\**
+ will not match against *magically*, but it will match against *Magic
+ Roundabout*
+- a **!** at the very start of a match means **not** e.g.
+ *!\*Magic\*/\*Yellow\** matches anything **not** containing the
+ words *Magic* or *Yellow*
+- it is not possible to specifically match a **!** character at the
+ start of a target (but you could use **\*!**
+
+Examples
+
+- *help* matches *help* but not *helper*.
+- *help\** matches *helper*
+- *\*the\** matches *the* (anywhere)
+- *123+* matches *123* and minimally one more character
+- *+* matches anything with at least one character (non-empty)
+- *the\*way* matches *the other way* and *the first way*, amongst
+ others
+- *Help/\*shell* matchs *Help* or anything ending with *shell*,
+ case-sensitively
+
+[]{#caller}
+
+#### Caller Matching
+
+Caller matching (some events and states e.g. *Call*) is handled slightly
+differently.
+
+- *C:ANY* matches the telephone number of any contact
+- *C:FAV* matches the telephone number of any favourite (starred)
+ contact
+- *CG:`groupmatch`* matches the telephone number of a contact in a
+ group which matches `groupmatch`
+- *Otherwise:* otherwise a match is attempted using the general
+ matching rules against **both** the caller phone number and the
+ associated contact\'s name (if there is one).
+
+Examples:
+
+- *!C:ANY* matches a number **not** belonging to a contact
+- *077\*/Geoff\** matches a number starting with *077* or belonging to
+ a contact whose names starts with *Geoff*
+- *C:FAV/0123456789* matches any favourite contact or the telephone
+ number *0123456789*
+- *CG:\*Family\*/CG:Business* matches any contact in the contact
+ groups *Family Members*, *My Family* or *Business*
+
+[]{#regex}
+
+### Regular Expression Matching
+
+Regular expressions are similar to simple matching patterns but have
+many more features and are much harder for non-technical people.
+
+#### Where\'s It Used ?
+
+Regex Matching is available:
+
+- in the **If** condition of an action, when the **\~R** or **!\~R**
+ operators are specified.
+- in the *Variable Search Replace* action
+- in the condition of a *Variable Value* state
+- wherever a Simple Match is possible, by preceding the regex with
+ **\~R** or **!\~R**
+
+#### Matching Rules
+
+Standard Java regular expression matching is applied. The Android
+Developer site has a [reference
+page](http://developer.android.com/reference/java/util/regex/Pattern.html).
diff --git a/en/maths.md b/en/maths.md
new file mode 100644
index 0000000..c0610f5
--- /dev/null
+++ b/en/maths.md
@@ -0,0 +1,82 @@
+---
+title: 'Tasker: Maths'
+---
+
+Maths 
+--------------------------
+
+#### Where Is Maths Used ?
+
+- When you do `Variable Set` and click the *Do Maths* checkbox
+- With the `If` action, if you select a mathematical comparison like
+ **\<** or **=**
+- With individual action conditions when a mathematical comparison is
+ selected
+
+#### What\'s Available
+
+Tasker uses the [MathEval](http://www.softwaremonkey.org/Code/MathEval)
+library by Lawrence PC Dol.
+
+#### Operators
+
+- **+ - \* /** - the basic operators
+- **%** - modulus
+- **\^** - power
+
+##### Constants
+
+- **E** - the base of the natural logarithms
+- **EUL** - Euler\'s Constant
+- **LN2** - log of 2 base e
+- **LN10** - log of 10 base e
+- **LOG2E** - log of e base 2
+- **LOG10E** - log of e base 10
+- **PHI** - the golden ratio
+- **PI** - the ratio of the circumference of a circle to its diameter
+
+##### Functions
+
+Trigonometric functions expect a value in radians.
+
+Functions take their argument in parenthesis e.g. sin(torad((90))
+
+- **abs** - absolute value
+- **acos** - arc cosine; the returned angle is in the range 0.0
+ through pi
+- **asin** - arc sine; the returned angle is in the range -pi/2
+ through pi/2
+- **atan** - arc tangent; the returned angle is in the range -pi/2
+ through pi/2
+- **cbrt** - cube root
+- **ceil** - smallest value that is greater than or equal to the
+ argument and is an integer
+- **cos** - trigonometric cosine
+- **cosh** - hyperbolic cosine
+- **exp** - Euler\'s number e raised to the power of the value
+- **expm1** - *e*x-1
+- **floor** - largest value that is less than or equal to the argument
+ and is an integer
+- **getExp** - unbiased exponent used in the representation of val
+- **log** - natural logarithm (base e)
+- **log10** - base 10 logarithm
+- **log1p** - natural logarithm of (val+1)
+- **nextup** - floating-point value adjacent to val in the direction
+ of positive infinity
+- **round** - closest 64 bit integer to the argument
+- **roundhe** - double value that is closest in value to the argument
+ and is equal to a mathematical integer, using the half-even rounding
+ method.
+- **signum** - signum function of the argument; zero if the argument
+ is zero, 1.0 if the argument is greater than zero, -1.0 if the
+ argument is less than zero
+- **sin** - trigonometric sine
+- **sinh** - hyperbolic sine
+- **sqrt** - correctly rounded positive square root
+- **tan** - trigonometric tangent
+- **tanh** - hyperbolic tangent
+- **todeg** - converts an angle measured in radians to an
+ approximately equivalent angle measured in degrees
+- **torad** - converts an angle measured in degrees to an
+ approximately equivalent angle measured in radians
+- **ulp** - size of an ulp of the argument
diff --git a/en/midi.md b/en/midi.md
new file mode 100644
index 0000000..159b3a2
--- /dev/null
+++ b/en/midi.md
@@ -0,0 +1,218 @@
+---
+title: 'Tasker: MIDI'
+---
+
+MIDI 
+-------------------------
+
+Tasker includes basic support for interacting with a (single) musical
+instrument which support the MIDI protocol.
+
+You don\'t need to know anything about MIDI in order to play complex
+tunes on an instrument via Tasker.
+
+### Requirements and Setup
+
+The Android ROM on the Android device must support the USB Host
+protocol.
+
+A USB OTG (*On The Go*) adapter is required for the Android device.
+
+If the MIDI device has a USB-To-Host connecter, a normal USB lead can
+then be used from the OTG adapter to the MIDI device.
+
+If the MIDI device has only MIDI inputs, a USB-To-MIDI adapter must be
+used from the OTG adapter to the MIDI device.
+
+When a connection has been established with the MIDI device, Android
+should ask whether permission should be granted to Tasker to use the
+device. In order to make things easier and allow automation without
+user-interaction, it\'s recommended that **Always** be selected.
+
+### Action: MIDI Play
+
+Tasker supports playing of notes in various voices and on multiple
+channels via the *MIDI Play* action in the *Media* category.
+
+The *Score* parameter in the *MIDI Play* action uses a Tasker-specific
+format to hopefully allow even non-musicians to easily \'code\' some
+music.
+
+#### Examples:
+
+- `C`\
+ plays a single C note and stops
+- `D D`\
+ plays a D twice
+- `D . . C`\
+ plays a D, wait 2 beats, then plays a C
+- `CDA#` ***or*** `C,D,A#`\
+ plays a C, D and A\# simultaneously
+- `D!10`\
+ plays a D very softly
+- `D!10 !100,C C C`\
+ plays a D very softly then a few loud Cs
+- `C2 C3 C4`\
+ Plays three Cs of increasing octaves (higher pitch)
+- `D*4`\
+ plays a D for 4 beats
+- `C#/4`\
+ plays a C for a quarter beat
+- `C#/4D`\
+ plays a C for a quarter beat and simultaneously a D for a full beat
+- `@1 C C C`\
+ Selects voice 1 then plays 3 Cs
+- `C@1,D@2` ***or*** `C@1D@2`\
+ Plays a C with voice 1 and a D with voice 2
+- `@1 C@2 E*4`\
+ Plays a C on the first channel with voice 1, while playing and
+ holding an E on the second channel with voice 2.
+- `C AB D`\
+ Plays C A B D on channel zero. Note that just starting a new line
+ would mean creating a new channel.
+- `C AA BB DC D`\
+ Plays C A B D on channel 0 while playing simultauously A B C D on
+ channel 1.
+
+#### Note Specification
+
+A note specification can be made up of several parts indicating
+different things about what and how to play. The note itself must be the
+first part, all other parts are optional.
+
+###### The Note
+
+Possible notes for the English locale are
+`C, C#, D, D#, E, F, F#, G, G#, A, A#, B`. These represent the notes
+starting at *middle C* on a piano, which are in the 4th octave. Flat
+notes are also possible e.g. `D_`.
+
+Deeper notes can be achieved by specifying a lower octave e.g. `E2` or
+`A#3` and higher notes a higher octave e.g. `C6`.
+
+For convenience, lower case versions of the notes are an octave deeper
+than the upper case versions e.g. `c` is equivalent to `C3`.
+
+Other locales may have different note naming conventions.
+
+###### Note Duration (Optional)
+
+A note is by default held for one beat. A `*` indicates the note should
+be held longer e.g. `C*6` holds a C for 6 beats. A `/` indicates the
+note should be shorter e.g. `C/2` indicates that the note should be
+played for half a beat.
+
+###### Note Velocity
+
+*Velocity* usually indicates to a MIDI instrument how hard to play the
+note. It\'s represented in Tasker via an exclamation mark e.g. `!6`
+means \'play this note with velocity 6\'.
+
+The lowest value is 0 and the highest 127.
+
+###### Note Voice
+
+*Voice* specifies which instrument to play a note with. It\'s
+represented in Tasker by an @ sign e.g. `C@1` \'play a C using voice
+1\'.
+
+The voice can be from 0 to 127.
+
+Most MIDI instruments don\'t have more than 128 voices and so you
+probably don\'t need to read any further in this section.
+
+However, if your instrument has more voices you will probably need to
+specify them using the values *MSB* and/or *LSB* which you will need to
+find in the instrument\'s user manual.
+
+Tasker allows specificaton of LSB and Program (the name of the basic
+parameter) together e.g: `B@3.1` specifies LSB 3 and Program 1.
+
+To specify an MSB also, add it on the left e.g. `D@6.5.3` specifies MSB
+6, LSB 5 and Program 3.
+
+#### Chords
+
+Several notes can be played at the same time by grouping them together
+(no whitespace) or separating them with commas e.g. C,D and `CD` both
+play a C and a D.
+
+#### Channels and Beats
+
+A specification of a single note or chord is called a beat.
+
+A channel consists of a set of beats separated by whitespace which are
+dealt with one-by-one at the same time as the corresponding beats on
+other channels. In that way, it\'s possible to see which notes are going
+to be played simultaneously.
+
+Beats usually consist purely of a few notes, but they can also specify
+default values of velocity and voice for the channel.
+
+For example, `!10,C D E!100 F` will play a quiet C, a quiet D, a loud E
+then a quiet F. `@2 C D E@3 F` plays a C then a D in voice 2, an E in
+voice 3, then an F in voice 2 again.
+
+When you reach the end of a line with a channel, do **not** go further
+on the next line. If you do so, the next line will be treated as a new
+channel. Instead, leave a blank line.\
+See the last two examples above.
+
+A dash character `-` as the **whole** beat means \'do nothing this
+beat\'.
+
+A dash followed by a number will rest for that number of beats. This
+will mess up the channel alignment, but can be useful for channel which
+isn\'t used very often.
+
+#### Bars
+
+A bar is a character that divides music into pieces of equal length.
+Tasker totally ignores `|` characters so they do not count as a beat.
+
+#### Comments
+
+The remainder of a line can be ignored by inserting a single quotation
+character \'. The line before the quotation mark, and subsequent lines,
+are unaffected.
+
+The rest of a whole channel can be ignored by inserting a double
+quotation mark \". The line before the quotation marks are unaffected.
+
+Comments can be useful for testing specific parts of a score
+independently.
+
+#### Variable Support
+
+The `Score` parameter supports variable just like most other places in
+Tasker.
+
+That means you can e.g. specify a voice specification with Variable Set
+and then use the name to make it easier to read the music e.g.
+`@%piano,C @%guitar,D` (play a C with piano then a D with guitar:
+assuming you\'ve first set the variables to a voice which matches their
+name on your MIDI instrument)
+
+You can also define variables with sequences of notes and then define a
+song as being repeating names e.g. `%intro %verse %chorus %verse %end`.
+
+#### Music \'Programming\'
+
+MIDI Play actions can of course be interspersed with other Tasker
+actions so that you can do things like loops which play a piece of music
+at different pitch levels, loudness, speed etc Here\'s a task which
+plays a long chord with 10 different instrument and each instrument at 5
+different velocities (loudness levels).
+
+ For, %loudness, 20:100:20
+ For, %voice, 1:10
+ MIDI Play, @%voice,!%loudness C,E,G
+
+### Tested Devices
+
+Tasker has been tested with the following devices:
+
+- Yamaha Clavinova 480
+
+Please let the developer know if you can confirm it working on other
+devices.
diff --git a/en/power.md b/en/power.md
new file mode 100644
index 0000000..92757cf
--- /dev/null
+++ b/en/power.md
@@ -0,0 +1,45 @@
+---
+title: 'Tasker: Power Usage'
+---
+
+Power Usage 
+--------------------------------
+
+Internally, Tasker does its best to keep power usage down. Following are
+some macro-strategies to achieve this.
+
+#### Context Monitoring
+
+When a profile contains multiple contexts, power is saved by only
+monitoring for changes in order of the least-power-hungry first. For
+example, in a profile with a Time and App context, Tasker will not
+decide that it needs to monitor for a changing application unless the
+Time context is active (because the profile cannot become active until
+both contexts are active).
+
+Tasker rates contexts for power-hungriness in the following (ascending)
+order:
+
+- Other State
+- Day / Time
+- Calendar Entry State
+- Cell Near State
+- App
+- BT Near State
+- Network Location
+- Wifi Near State
+- GPS Location
+- Temperature / Humidity / Proximity / Pressure / Magnetic Field /
+ Light Sensor / Gesture Event / Orientation State (accelerometer
+ activation)
+
+Items at the bottom of the list won\'t become eligible for monitoring
+until all items further up the list are active.
+
+#### Display-Off Checks
+
+When the display is off, all necessary \'active\' checks (GPS/Net
+Location, Wifi Near, App) are done at the same time so that the device
+is awake for as short a time as possible. See *Display Off Timings* in
+`Menu / Prefs / Monitor` for the frequency and maximum duration of these
+checks.
diff --git a/en/scenes.md b/en/scenes.md
new file mode 100644
index 0000000..6b2872a
--- /dev/null
+++ b/en/scenes.md
@@ -0,0 +1,108 @@
+---
+title: 'Tasker: Scenes'
+---
+
+Scenes 
+---------------------------
+
+### Introduction
+
+A *scene* is a graphical user-interface consisting of a collection of
+*elements* to which tasks can be attached to be run when the user
+interacts with them e.g. by tapping them.
+
+Tasker uses scenes for things like popup dialogs, menus and getting
+input from the user but scenes can actually be displayed by the user
+whenever desired, meaning they can be used for things like creating
+simple user-designed applications or showing extra controls over the top
+of (selected) existing applications.
+
+Scenes are completely user-customisable via a drag-and-drop graphical
+[editor](activity_sceneedit.html).
+
+### Displaying Scenes
+
+#### Actions: `Enter Key, HTML Popup, Lock, Menu, Popup, Popup Task Buttons` and `Variable Query`
+
+These actions use a **built-in scene** with the same name as their
+action. After creating a task with such an action, the associated scene
+can be found under the **Scenes** tab on the main Tasker screen. That
+scene can be edited so that e.g. all `Popup` actions have the same style
+because they all use the same scene.
+
+The parameters specified in the action are applied to the scene before
+it is show. For instance, if the scene has a *Title* element it will be
+set to the title specified in the action and the scene resized
+appropriately.
+
+It might be desirable to have a different style for e.g. some `Popup`
+actions, in which case:
+
+1. clone the built-in scene long-clicking on it in the **Scenes** tab
+2. edit the clone to change the contents
+3. in a `Popup` action, specify that the cloned scene should be used by
+ clicking on the **Layout** parameter in the action edit screen.
+
+#### Scene Category Actions: `Create Scene, Show Scene, Hide Scene, Destroy Scene`
+
+These allow a completely free hand over when a scene should be displayed
+and it\'s life-cycle. They all act on scenes pre-designed in the
+**Scenes** tab.
+
+Usually, only `Show Scene` and `Destroy Scene` will be used, however
+sometimes it\'s useful for a scene to be created but not visible to the
+user:
+
+- by hiding a scene instead of completely destroying it, the settings
+ of the elements are retained for next time it is shown
+- the values of the elements in the scene can be changed to track
+ certain events so that the scene can be immediately displayed when
+ required without any configuration
+
+### Scene Elements
+
+Each scene is comprised of a number of elements.
+
+An element has three main components:
+
+#### Geometry
+
+It\'s size and position on the screen. An element\'s geometry is
+specified in the [scene editor](activity_sceneedit.html).
+
+#### Content
+
+How it looks on the screen.
+
+Specified under the **UI** tab in the element editor. Some elements also
+have a Background tab. A Menu element has an additional Items tab.
+
+#### Event Tasks
+
+What should happen when the user interacts with the element.
+
+Specified under the right-most tabs after clicking on the element in the
+element editor. There are different events depending on the type of
+element. For instance, a Button has tap and long-tap events while a
+Slider has a value-set event.
+
+Event tasks are run at priority one higher than the task which displayed
+the scene
+
+Local variables set by event tasks are visible to all tasks in the same
+scene.
+
+### Scene Element Actions
+
+In the **Scenes** action category, there are several actions for setting
+the properties of scene elements. You can use these for a wide variety
+of purposes e.g.
+
+- when a slider value is set, change the zoom of an associated map
+ element
+- set the size of an element depending on current light level
+- animate elements around a scene
+
+Note that actions that affect scene elements can only be used when the
+scene has already been created (via `Create Scene` or `Show Scene`). The
+scene does not have to be visible.
diff --git a/en/settings.md b/en/settings.md
new file mode 100644
index 0000000..c910d09
--- /dev/null
+++ b/en/settings.md
@@ -0,0 +1,50 @@
+---
+title: 'Tasker: Settings'
+---
+
+Settings 
+-----------------------------
+
+#### What\'s A Setting ?
+
+Settings are actions like *Display Brightness* and *Ringer Volume* whose
+effects are reversed by Tasker when the profile(s) which applied them
+are no longer active.
+
+Setting actions have a double arrow icon next to them.
+
+#### Single Profile
+
+When a setting is applied by the profile\'s Enter Task, its value is
+restored after the profile becomes inactive again. For example, if the
+ringer volume is at 7 and is set to 0 in the Enter Task, when the
+profile becomes inactive it is automatically set back to 7.
+
+In other words, settings are only valid for the lifetime of their
+profiles.
+
+#### Multiple Profiles
+
+When multiple profiles that affect a setting are active simultaneously:
+
+1. the setting has the value from the **most recently activated**
+ profile
+2. when **all** profiles are inactive, the setting has the value from
+ before **any** profile was active
+
+#### Special Cases
+
+- if a setting is changed by the Exit Task the profile will never save
+ the setting\'s initial value.
+- settings changed in an *instant profile* (one with an event context
+ or repeating/non-ranged time context) remain changed after the
+ event. The reasoning is that there is no point in changing the
+ setting for the half-second that the event lasts.
+
+#### Notes
+
+- settings are not *actively* maintained. If something else changes
+ the setting once the Enter task has run, it\'s not the case that
+ this is detected and the Enter task value automatically reapplied.
+
+Complicated, huh ?
diff --git a/en/sharecreation.md b/en/sharecreation.md
new file mode 100644
index 0000000..ef10a1e
--- /dev/null
+++ b/en/sharecreation.md
@@ -0,0 +1,69 @@
+---
+title: 'Tasker: Sharing'
+---
+
+Sharing 
+----------------------------
+
+Tasker allows you to share your setups as easy to access links that can
+be opened on any browser.
+
+The intention is to allow people to easily share their automations with
+the world, in a centralized place.
+
+Anyone can import your setups by simply visiting the shared link!
+
+Sharing is accessed by long-clicking on a project (**not** the base
+project), profile or task and selecting **Export** then **As Link**.
+
+#### The basics to Export a Task to Link:
+
+1. Long-click the name of any Task, Profile, or Project. From the 3-dot
+ menu in the upper right choose Export \> As Link
+2. Enter a basic or detailed general Description for your Task, then
+ click the left arrow at the top left to continue.
+3. You will then see the \"Done\" dialog that gives you choices for
+ where the shared link for the Task should be placed. You can share
+ it to any app on your device that supports share, such as Gmail,
+ etc., or, you can copy the link to your clipboard and put here in
+ reddit or anywhere you\'d like :)
+4. After making your choice - Tasker will return to the previous screen
+ it was on (likely Profiles or Tasks Tab) and you will notice that
+ the check mark appears at the top indicating changes have been made
+ in Tasker. You may ask yourself \"What changes? I simply exported a
+ Task?\" and the answer is - Tasker saves the \"Description\" you
+ wrote in Step 2 so that the next time you export that specific Task
+ as Link you don\'t have to type it in again.
+5. Your export is complete and your shared Task/Profile/Project is on
+ the Tasker server. Simply give the link created in Step 3 to anyone
+ you\'d like to have Import your creation!
+
+#### The basics to Import a Task from URL:
+
+1. You need a \"taskernet\" share link generated by someone who has
+ Exported their Task/Profile/Project as per the steps above. The link
+ begins with https://taskernet.com/shares/?user=AS35etc
+2. Open the link on any device that has Tasker on it (with at least
+ version 5.4b) typically via web browser and you will be greeted with
+ the Task Data \"Import Screen\". It provides a datetime stamp of the
+ most recent share/upload of this Task, along with its Title and
+ basic description. To continue - simply press the green \"Import\"
+ button.
+3. This will open the Tasker app and provide you with the Import
+ Confirmation dialog. This allows you to proceed with or cancel the
+ Import process.
+4. You\'ll also notice the \"View Description\" button on the left hand
+ side. This allows you to view the full Task list of actions before
+ you Import. So you can look to see if all the actions look ok to you
+ (i.e. no weird File Writes or anything). There is also a \"Copy To
+ Clipboard\" button there if you need an even closer inspection.
+5. Finally if all looks good to you - click \"OK\" and the
+ Profile/Task/Project will be Imported into Tasker ready for your
+ use! And just in case you already have a Task of the same name -
+ Tasker will popup a dialog to let you choose to overwrite it or not.
+ Typically you\'d overwrite if you\'re Importing a new update to a
+ previously Imported Task.
+6. As a final bonus - a dialog will ask you if you want to run the Task
+ / enable the Profiles right away. Or you can run them / enable them
+ manually after you\'ve had a chance to peruse them in the Task
+ editor :)
diff --git a/en/tasks.md b/en/tasks.md
new file mode 100644
index 0000000..a0e3f42
--- /dev/null
+++ b/en/tasks.md
@@ -0,0 +1,209 @@
+---
+title: 'Tasker: Tasks'
+---
+
+Tasks 
+--------------------------
+
+A task is simply a set of actions which are performed one after the
+other.
+
+#### Named / Anonymous Tasks
+
+A task can be given a name. This allows:
+
+- the same task to be used in more than one profile
+- easier identification of what the task does
+- in the case of a [task widget/shortcut]{#app_widgets.html}, it
+ provides a label for the icon on the home screen.
+
+When creating a profile, widget or shortcut, often the associated task
+will consist only of one or two actions which will not be reused. For
+this case, Tasker allows you to create a task without a name (an
+*Anonymous* task).
+
+#### Task Visibility
+
+Anonymous tasks are only visible when editing the profile that they are
+associated with.
+
+Named tasks are visible on any screen that allows task editing. Any
+changes made to the set of tasks in any screen is reflected in all the
+other screens.
+
+#### Task Icon
+
+Each task has an associated icon, by default a question mark. The icon
+is used
+
+- to represent the task on the home screen when it is used as a
+ [widget or shortcut]{#widgets.html}
+- when the task is [turned into and app](appcreation.html)
+- for easier identification of the task within the Tasker UI
+
+#### Deleting Tasks
+
+Named tasks can only be deleted via the *Delete* button on the [Task
+Edit](activity_taskedit.html) screen. Unnamed tasks are deleted
+automatically when the profile they are part of is deleted, or a named
+task is selected for that profile.
+
+Named tasks cannot be deleted while a profile still refers to them.
+
+When a task is deleted that is referred to by a previously created named
+widget or task, the widget will stop working.
+
+Android does not allow Tasker to automatically remove the widget from
+the Home Screen.
+
+[]{#scheduling}
+
+#### Task Scheduling
+
+When there is a single task waiting to be executed, it\'s actions are
+executed one-by-one until finished.
+
+When there are several tasks in the queue at once, it\'s important to
+understand how they are handled:
+
+- only **one action** from the same [action group](#actiongroups) can
+ be executed at once to prevent interference
+- the task in the queue with the **highest priority** goes first and
+ blocks lower priority tasks
+- tasks with the **same priority** take turns executing an action
+ each, starting with the most recent addition to the queue **unless**
+ one task is a child of the other (started via [Perform
+ Task](help/ah_run_task.html)), in which case the child executes
+ first.
+
+Task priority, 0 to 50 inclusive with 0 being lowest, is determined
+according to whatever causes the task to run.
+
+- enter tasks run by profiles have the priority specified in Profile
+ Properties, the default is 5.
+- exit tasks run by profiles have the priority specified in Profile
+ Properties **plus 1001**, the default is therefore 1016
+- tasks run by **widgets** or **shortcuts** can be set in Task
+ Properties when the widget/shortcut is created, the default is 7
+- tasks run from scene elements have priority **one more** than the
+ task which showed the scene
+- tasks run from the **Test** button in the task edit screen have
+ priority 100 by default, long-click the play buttin to choose a
+ different one.
+
+A couple of guidelines are:
+
+- if you want a particular task to always interrupt other tasks that
+ may be executing, give it a high priority
+- if you have a task that lasts for a while, you probably want to give
+ it a low priority so it doesn\'t block other tasks from being
+ executed.
+
+[]{#actiongroups}
+
+#### Action Groups
+
+Actions are divided into groups for scheduling based on how long the
+action takes to execute and what it interferes with:
+
+- **Speech**: `Say, Say To File`
+- **Javascript**: `Javascript`
+- **Fix**: `Get Location`
+- **Voice**: `Get Voice`
+- **Proxy**:
+ `Display Brightness, Query Action, Photo, Photo Series, Photo Series Time`
+- **Proxy Scene** Enter Key, Menu, Popup, Popup Task Buttons, Variable
+ Query
+- **Other Scenes**: the name of the scene being shown
+- **Normal**: all other actions
+
+#### Wait Actions
+
+`Wait` and `Wait Until` are special cases. The rules for handling them
+are complicated and try to do the \'best thing\' dependent on the
+situation.
+
+#### Same-Profile Tasks
+
+Tasks launched by the same profile by default always execute in the
+order in which they are launched. Other tasks from the same profile
+remain completely inactive until any previous task from the same profile
+is complete. The main purpose of this rule is to correctly handle rapid
+changes in a profile\'s activation state.
+
+This behaviour can be disabled by deselecting *Enforce Task Order* in
+the Profile Properties dialog.
+
+##### Example
+
+This example demonstrates the effect of Enforce Task Order and shows
+also how sub-tasks launched by [Perform Task](help/ah_run_task.html) are
+handled.
+
+ Profile: Example
+ Enter Task: Enter1
+ Perform Task, Enter2
+ Exit Task: Exit1
+ Perform Task, Exit2
+
+**With** Enforce Task Order:
+
+Enter1 and Enter2 are both guaranteed to finish before either of Exit1
+or Exit2. Whether Enter1 or Enter2 finishes first depends on their
+relative priority. Same for Exit1 and Exit2. All 4 tasks compete based
+on priority against tasks from other profiles. Exit tasks have a higher
+base priority so will finish before Enter tasks.
+
+**Without** Enforce Task Order:
+
+If the profile goes active and inactive quickly, Enter1, Enter2, Exit1
+and Exit2 will all compete purely on priority. Since Exit tasks have
+higher base priority, Exit1 and Exit2 will probably finish first.
+
+[]{#collisions}
+
+#### Collisions
+
+Sometimes a task needs to be executed of which a copy is already
+executing. This can happen quite often e.g. when a task widget button is
+pressed twice quickly, or a task contains a Wait action or shows a
+dialog.
+
+The way in which a collision is resolved is specified by the user. There
+are 3 options:
+
+- the **new** task is ignored (the default)
+- the **existing** task is aborted and the new one starts from its
+ first action. The current action of the previous task is finished if
+ it is already being carried out.
+- both tasks run simultaneously
+
+Note that the last option can lead to several copies of a task all
+running at once.
+
+[]{#stayawake}
+
+#### Behaviour When Device Off
+
+By default, after a few seconds of the screen being off Android will
+power down the device and thus running tasks will be paused.
+
+In the Task Properties dialog, it can be specified that a task should
+keep running.
+
+##### Dialogs
+
+An action that shows some kind of dialog (such as a lock screen, popup,
+menu) blocks execution of any other action, even one of higher priority,
+until it is completed.
+
+##### Wait / Wait Until
+
+These are exceptions. A wait action can be interrupted by another
+task\'s action and will resume (if necessary) when the other task\'s
+action is finished.
+
+#### Killing Tasks
+
+If you have a problem with a task that never ends, you can manually end
+tasks with the **Kill** button in the Task Edit screen.
diff --git a/en/timecontext.md b/en/timecontext.md
new file mode 100644
index 0000000..3fceee6
--- /dev/null
+++ b/en/timecontext.md
@@ -0,0 +1,55 @@
+---
+title: 'Tasker: Time Context'
+---
+
+Time Context 
+---------------------------------
+
+A *Time Context* specifies a particular range, or one (or more) points
+in time. There are three major components, at least one of which must be
+selected (by enabling its checkbox on the left):
+
+- **From Time**: the starting time of the range. If it\'s not
+ specified, **00:00** is assumed.
+- **To Time**: the end time of the range, inclusive. The context will
+ deactivate after the **end** of the specified minute.\
+ If To Time is not specified then **23:59** is assumed i.e. the
+ context deactivates at midnight.
+- **Repeat**: if no repeat is selected, the context is assumed to be a
+ continuous range which starts at *From Time* and ends at *To Time*.
+ If a repeat **is** specified, the first occurrence is at *From Time*
+ and then every X hours or minutes until *End Time*.
+
+When not in [Beginner Mode](beginner.html), it\'s possible to specify a
+[global user variable](variables.html) as the source of the `From Time`
+or `To Time` by clicking on one of the rotating-arrow icons.
+
+The variable contents must specify the hours and minutes in **24-hour
+format** and separated by a **period** (dot) or **colon** e.g. *13.45*.
+Leading 0s can be ommited e.g. *9.7* for
+seven-minutes-past-nine-in-the-morning.
+
+Alternatively, the time can be specified in seconds-since-the-epoch
+format, in which case only the hour and minute part of the specification
+are used.
+
+When the variable value changes, the time context is reevaluated which
+may result in it activating or deactivating. If the variable value does
+not specify a valid time then the profile will deactivate (if it\'s
+already activated).
+
+Note: in some cases it may be wise to disable the profile (via the
+*Profile Status* action) before changing the associated variable values.
+For example, if your time context is from 16.00 to 16.00 (i.e. acting as
+an event) and it should be changed to 17.00,17.00, if you don\'t disable
+it first then as soon as you change the first value the time context
+will become a 23 hour range (17.00-16.00) and probably activate.
+
+Notes:
+
+- to specify a precise time, set *From* and *To* times the same. In
+ that case, the context is treated as an instant event, it it only
+ active for a fraction of a second, so no setting restoration is
+ done.
+- each repeat (if *Repeat* is set) is also treated like an instant
+ event.
diff --git a/en/variables.md b/en/variables.md
new file mode 100644
index 0000000..057c755
--- /dev/null
+++ b/en/variables.md
@@ -0,0 +1,796 @@
+---
+title: 'Tasker: Variables'
+---
+
+Variables 
+------------------------------
+
+#### General
+
+A variable is a named value which changes over time e.g. the level of
+the battery, the time of day.
+
+When Tasker encounters a variable name in a text, it replaces the name
+with the current value of the relevant variable before carrying out the
+action.
+
+The main purposes of variables are:
+
+- *dynamic binding*: doing something with an action with data which
+ is unknown when the task is created e.g. respond to an SMS; the
+ sender is not known until the SMS is received.
+- allow [flow control](flowcontrol.html) within and between tasks
+- record data for some future use e.g. passing data between tasks
+
+#### Global vs. Local Variables
+
+Variables which have an **all-lower-case** name (e.g. %fruit\_bar) are
+*local*, meaning that their value is specific to the task or scene in
+which they are used.
+
+Variables which have one or more capital letters in their name (e.g.
+%Car, %WIFI) are *global*, meaning that wherever they are accessed from
+the same value is returned.
+
+#### Built-In Variables
+
+The values of built-In variables are updated automatically by Tasker.
+
+[]{#localbuiltin}
+
+##### Local Built-In Variables
+
+- **Action Error**\
+ *%err*\
+ Is set to an integer if an error occurred when running the last
+ action. The actual number can signify the error which occurred, but
+ is usually 1 for most Tasker actions (notable exception: `Run Shell`
+ and plugins). Every action sets or clears it, so it must be saved
+ (e.g. with [Variable
+ Set](https://tasker.joaoapps.com/userguide/en/help/ah_set_variable.html))
+ if it will be needed later than in the immediate next action.
+- **Action Error Description**\
+ *%errmsg*\
+ A description of the error which **last resulted in %err being
+ set**. Currently never set by Tasker but possibly by some plugin
+ actions.
+- **Task Priority**\
+ *%priority*\
+ The priority of the running task. The priority determines which task
+ executes its next action when several tasks are running together.\
+ See also: [Task Scheduling](tasks.html#scheduling)
+- **Task Queue Time**\
+ *%qtime*\
+ How long (seconds) the running task has been running.\
+ Note that tasks can be interrupted by higher priority tasks, so this
+ number is not necessarily the total run-time of the task.\
+- **Task Caller**\
+ *%caller*\
+ A variable array tracing the origin of the current running task.
+ *%caller1* gives the origin of the current task, *%caller2* the
+ origin of *%caller1* etc.
+
+ Example: if task A uses action `Perform Task` to start task B, then
+ when task A is run by pressing the Play button in the task edit
+ screen, *%caller1* in task B will show **task=A**, *%caller2* will
+ show **ui**.
+
+ The format of each entry in the array is
+ *callertype*(**=***callername*(**:***subcallername*))
+
+ Caller types ares detailed below:
+
+ - **profile**\
+ a profile (when it\'s state changes). *callername* is either
+ **enter** or **exit** depending on whether the profile activated
+ or deactivated. *subcallername* is the name of the profile, if
+ it has one, otherwise **anon**
+ - **scene**\
+ a scene event, with *callername* being the scene name. For
+ element events, *subcallername* is the element name. For action
+ bar button presses, *subcallername* is the label if one was
+ given. For scene-global events (e.g. Key), *subcallername* is
+ event type
+ - **ui**\
+ the Play button in the task edit screen in the Tasker UI
+ - **launch**\
+ clicking a child application icon in the launcher
+ - **nbutton**\
+ a notification action button, either from Tasker\'s permanent
+ notification or one created with one of the Notify actions.
+ *callername* specifies the label of the button if present.
+ - **external**\
+ an external application
+ - **qstile**\
+ a Quick Settings tile. *callername* specifies the label of the
+ tile.
+ - **appshort**\
+ an app shortcut (accessed via long-click on the Tasker icon).
+ *callername* specifies the label of the tile.
+ - **task**\
+ another task, from a Perform Task action. *subcallername* is the
+ task name, if it has one, otherwise **anon**
+
+[]{#globalbuiltin}
+
+##### Global Built-In Variables
+
+- **Airplane Mode Status**`(dynamic)`\
+ *%AIR*\
+ Whether Airplane Mode is **on** or **off**
+- **Airplane Radios**\
+ *%AIRR*\
+ A comma-separated list of the radios which will be **disabled** when
+ entering Airplane Mode.\
+ Common radio names are: *bluetooth, cell, nfc, wifi, wimax*.
+- **Battery Level**\
+ *%BATT*\
+ Current device battery level from 0-100.
+- **Bluetooth Status** `(dynamic)`\
+ *%BLUE* Whether Bluetooth is **on** or in some other state
+ (**off**).\
+- **Calendar List**\
+ *%CALS*\
+ Newline-separated list of calendars available on the device.\
+ Each entry is in the format *calendarprovider:calendarname*.\
+ Example usage:
+
+ Variable Set, %newline, \n
+ Variable Split, %CALS, %newline
+ Flash, %CALS(#) calendars, first one is %CALS(1)
+
+ For the sign *\\n*, press carriage-return on the keyboard.
+
+- **Calendar Event Title / Descr / Location** *%CALTITLE / %CALDESCR /
+ %CALLOC*\
+ The title, description and location of the **current** calendar
+ event, if there is one. If there are multiple current calendar
+ events the variables refer to the **shortest**.\
+ Tip: find other details about the current event(s) using the
+ `Misc / Test` action, specifying %TIMES for the data.
+- **Call Name / Number/ Date / Time (In)** `(dynamic, monitored)`\
+ *%CNAME / %CNUM / %CDATE / %CTIME*\
+ The caller name, number, date and time of the current (if a call is
+ in progress) or last call received.\
+ Caller number is **0** if it\'s unknown.\
+ Caller name is **?** if it\'s unknown (probably because the caller
+ number was blocked) and set to the caller number if the contact
+ couldn\'t be looked up. It\'s unavailable on Android versions prior
+ to 2.0.
+- **Call Name / Number/ Date / Time / Duration
+ (Out)**`(dynamic, monitored)`\
+ *%CONAME / %CONUM / %CODATE / %COTIME / %CODUR*\
+ The called name, number, date and time of the last (**not** the
+ current) outgoing call made.\
+ Called Name is set to the called number if the contact couldn\'t be
+ looked up. It\'s unavailable on Android versions prior to 2.0.
+- **Cell ID** `(monitored,dynamic)`\
+ *%CELLID*\
+ The current cell tower ID if known.\
+ If you are using a Cell Near state, note that sometimes the Cell
+ Near state will stay active even though %CELLID reports that the
+ tower ID is unknown or invalid; that is because Cell Near only
+ responds to valid IDs to prevent the state becoming inactive e.g.
+ due to a service interruption.\
+ For backwards compatibility, UMTS cells are reported with a GSM
+ prefix.\
+ From Android 4.2, Tasker version 4.3+, cells could be found from 2
+ different network types simultaneously. In that case, the value is
+ reported with preference for the network type leftmost on the list:
+ GSM, CDMA, UMTS, LTE.
+- **Cell Signal Strength** `(monitored,dynamic)`\
+ *%CELLSIG*\
+ The current phone signal level from 0-8 inclusive on a rougly linear
+ scale. On some phones, the level will rise in steps of 2
+ (0,2,4,6,8). The value is -1 if the value is unknown or there is
+ e.g. no service.\
+ From Android 4.2, Tasker version 4.3+, cells could be found from 2
+ different network types simultaneously. In that case, the value is
+ reported with preference for the network type leftmost on the list:
+ GSM, CDMA, UMTS, LTE.\
+ There is a bug with some Android versions that the reported signal
+ strength is not updated until the device is turned off and on.
+- **Cell Service State** `(monitored,dynamic)`\
+ *%CELLSRV*\
+ The current phone service state. One of *unknown, service,
+ noservice, emergency, nopower*.
+- **Clipboard Contents**`(monitored,dynamic)` *%CLIP*\
+ The current contents of the system clipboard. Please note that the
+ clipboard can\'t be accessed while the device\'s screen is securely
+ locked.
+- **CPU Frequency**\
+ *%CPUFREQ*\
+ The current frequency CPU 0 is running at. See also: [CPU
+ Control](cpu.html).
+- **CPU Governor**\
+ *%CPUGOV*\
+ The current governor controlling the frequency of CPU 0. See also:
+ [CPU Control](cpu.html).
+- **Date**\
+ *%DATE*\
+ Current human-readable date.
+- **Day of the Month**\
+ *%DAYM*\
+ Current Day of the Month, starting at 1.
+- **Day of the Week**\
+ *%DAYW*\
+ Current Day of the Week starting with Sunday.
+- **Device ID / Manufacturer / Model / Product**\
+ *%DEVID / %DEVMAN / %DEVMOD / %DEVPROD*\
+ The ID, manufacturer, model and product name of the device.\
+ Note: ID is **not** a unique identifier for the device, but rather
+ for the hardware of the device. See also: %DEVTID.
+- **Device Telephony ID**\
+ *%DEVTID*\
+ Returns the unique telephony-based ID for the device (e.g. for GSM
+ the IMEI, for CDMA the MEID or ESN).\
+ Not available on all devices.
+- **Display Brightness** *%BRIGHT* Current screen brightness, 0-255.
+ On some devices, if the Android setting Auto Brightness is enabled,
+ the value will always be 255.
+- **Display Timeout** *%DTOUT* Current system screen timeout
+ (seconds).
+- **Email From / Cc / Subject / Date / Time** `(dynamic)`\
+ *%EFROM / %ECC / %ESUBJ / %EDATE / %ETIME*\
+ The From, Cc, Subject, Received Date and Received Time of the last
+ email received by the K9 email agent.
+- **Free Memory**\
+ *%MEMF*\
+ System free memory remaining in MB.
+- **GPS Status**\
+ (monitored,dynamic Gingerbread+) *%GPS*\
+ Whether the system GPS receiver is **on** or **off**.
+- **Heart Rate** `(monitored,dynamic)`\
+ *%HEART*\
+ The current detected heart rate in beats per minute.\
+ See also: state *Heart Rate*.\
+ The value will be negative for no contact (-1), accuracy unreliable
+ (-2) or some other problem (-3)
+- **HTTP Response Code / Data / Content Length**`(dynamic)` *%HTTPR /
+ %HTTPD / %HTTPL*\
+ Values from the last HTTP POST/GET action.\
+ If the server doesn\'t return a content length, %HTTPL will be
+ calculated from the returned data where possible.
+- **Humidity** `(monitored,dynamic)`\
+ *%HUMIDITY*\
+ The relative ambient air humidity in percent.\
+ See also: state *Humidity*.
+- **Input Method**\
+ *%IMETHOD*\
+ The current active input method. Consists of 4 parts separated by
+ commas: Method Name, SubType Name, Mode, Locale.\
+ To access particular parts, use the *Variable Split* action.
+- **Interrupt Mode** `(dynamic)`\
+ *%INTERRUPT*\
+ Only available on Android 5.0+, **requires Tasker\'s notification
+ access service to be enabled**, see Android\'s Sound & Notification
+ settings.\
+ \
+ Android 5.0+: the current state of interruptions mode on the device:
+ **none**, **priority** or **all**\
+ See Also: action *Interrupt Mode*\
+ \
+ Android 6.0+: the current state of Do Not Disturb mode on the
+ device: **none**, **priority**, **all** or **alarms**\
+ See Also: action *Do Not Disturb*
+- **Keyguard Status**\
+ *%KEYG*\
+ Whether the Keyguard is **on** or **off**
+- **Last Application**\
+ *%LAPP*\
+ The name of the application that was in the foreground before the
+ current one e.g. Maps.
+- **Last Photo**\
+ *%FOTO*\
+ The filesystem path to the last photo taken by Tasker or the
+ standard system camera application.
+- **Light Level** `(monitored,dynamic)`\
+ *%LIGHT*\
+ The last recorded light level in lux.\
+ Note that Android does not return a value until the light level
+ changes, so to test the sensor is working you should put it near a
+ bright light initially.\
+ May not change when the device display is off, see
+ `Menu / Prefs / More / Display Off Monitoring / Light Sensor`.
+- **Location** `(dynamic)`\
+ *%LOC*\
+ The latitude and longitude of the last GPS fix.\
+ [See note](#locnote).
+- **Location Accuracy** `(dynamic)`\
+ *%LOCACC*\
+ The accuracy in metres of the last GPS fix.\
+ [See note](#locnote).
+- **Location Altitude** `(dynamic)`\
+ *%LOCALT*\
+ The altitude in metres of the last GPS fix, or 0 if unavailable.\
+ [See note](#locnote).
+- **Location Speed** `(dynamic)`\
+ *%LOCSPD*\
+ The speed in metres/second at the last GPS position fix or 0 if
+ unavailable.\
+ [See note](#locnote).
+- **Location Fix Time Seconds** `(dynamic)`\
+ *%LOCTMS*\
+ The time in seconds of the last GPS fix. To get age of fix, take
+ this away from %TIMES.\
+ This value is not set until an offset of the GPS time from the fixed
+ time has been calculated (should be after the first GPS fix) because
+ the value is meaningless until that point.\
+ [See note](#locnote).
+- **Location (Net)** `(dynamic)`\
+ *%LOCN*\
+ The latitude and longitude of the last network location fix.\
+ [See note](#locnote).
+- **Location Accuracy (Net)** `(dynamic)`\
+ *%LOCNACC*\
+ The accuracy in metres of the last network location fix.\
+ [See note](#locnote).
+- **Location Fix Time (Net)** `(dynamic)`\
+ *%LOCNTMS*\
+ The time in seconds of the last net location fix. To get age of fix,
+ take this away from %TIMES.\
+ [See note](#locnote).
+- **Magnetic Field Strength** `(monitored,dynamic)`\
+ *%MFIELD*\
+ The total magnitudes in micro-Teslas of the magnetic fields acting
+ on all three axis of the devices sensor.\
+ Updated once per second.\
+ See Also: state `Magnetic Field`.
+- **Music Track** `(monitored,dynamic)`\
+ *%MTRACK*\
+ The current playing music track, supported for:
+ - Tasker actions *Music Play* and *Music Play Dir*
+ - Built-in Android music-player, probably not on all devices
+ however
+ - Power AMP
+ - BeyondPod (Tasker v1.2.1+)
+ - Phantom Music Control Pro
+ - Media Utilities
+
+ Priority: if both Tasker and one of the other supported apps are
+ playing simultaneously, the non-Tasker track will be shown. If more
+ than one of the other supported apps is playing simultaneuosly,
+ behaviour is unspecified.\
+ Notes:
+ - if you don\'t have a supported player, you could try Phantom
+ Music Control Pro or Media Utilities, which support a lot of
+ players and should pass the info on to Tasker
+ - pausing a track clears the variable, unpausing sets it again
+ - your music player may need an option enabled in order to
+ broadcast the track information, or the broadcast may only be
+ available in a \'pro\' version
+
+- **Muted**\
+ *%MUTED*\
+ Whether the microphone is currently muted (**on**) or not (**off**).
+- **Night Mode**\
+ *%NIGHT*\
+ The current Android Night Mode.\
+ One of **on**, **off** or **auto**.\
+ If **auto**, Android will decide whether it should be in Night Mode
+ itself.
+- **Notification Title** `(monitored, dynamic)`\
+ *%NTITLE*\
+ The title of the last notification shown in the status bar. Prior to
+ KitKat, requires Tasker\'s accessibility server to be running (see
+ Android Accessibility Settings). From KitKat, requires Tasker\'s
+ Notification Listener service to be running instead.\
+ In a task running as a result of a `Notification` or
+ `Notification Removed` event, use variable %evtprm2 instead of
+ %NTITLE. This is much more reliable and you have access to other
+ parts of the notification (%evtprm3 etc)\
+ Notifications generated by Tasker are not shown.
+- **Phone Number**\
+ *%PNUM*\
+ The current phone number of the device, if it\'s in service.\
+ On some phones it doesn\'t work (Android limitation), seems related
+ to the type of SIM.
+- **Pressure** `(monitored,dynamic)`\
+ *%PRESSURE*\
+ The current air pressure on the device in millibars.\
+ May not change when the device display is off, see
+ `Menu / Prefs / Monitor / Display Off Monitoring / Pressure Sensor`.
+- **Profiles Active** `(dynamic)`\
+ *%PACTIVE*\
+ A comma-separated list of the currently active, named profiles in
+ activation order. Duplicate names will appear on the list only once.
+ The list always starts and ends with a comma to make matching
+ easier, if it\'s not empty.
+- **Profiles Enabled** `(dynamic)`\
+ *%PENABLED*\
+ A comma-separated list of the currently enabled, named profiles in
+ creation order. Duplicate names will appear on the list only once.
+ The list always starts and ends with a comma to make matching
+ easier, if it\'s not empty.
+- **Roaming**\
+ *%ROAM*\
+ **on** if device is roaming on the current telephone network,
+ otherwise **off**.
+- **Root Available**\
+ *%ROOT*\
+ **yes** if root functions are available on this device, otherwise
+ **no**.
+- **Screen** `(dynamic)`\
+ *%SCREEN*\
+ Whether the screen is on (value **on**) or off (value **off**).
+- **SDK Version**\
+ *%SDK*\
+ The numeric Android [SDK
+ version](http://developer.android.com/reference/android/os/Build.VERSION_CODES.html)
+ of the device.
+- **Silent Mode** `(dynamic)`\
+ *%SILENT*\
+ The current state of silent mode: **off**, **vibrate** or **on**.\
+ From Android 5.0+ this variable is intended to only reflect whether
+ the device is in vibrate mode (**vibrate**) or not (any other
+ value), but the **on** value is included for backwards compatibility
+ and set when the device is not in vibrate mode and the interrupt
+ mode is **none** or **priority**.\
+ See Also: variable *%INTERRUPT*, actions *Silent Mode* and
+ *Interrupt Mode*.
+- **SIM Serial Number**\
+ *%SIMNUM*\
+ The serial number of the SIM card, if one is present and
+ accessible.\
+ If the SIM has not been unlocked it will not be available.
+- **SIM State**\
+ *%SIMSTATE*\
+ The current state of the SIM card.\
+ One of **unknown**, **absent**, **pinrequired**, **pukrequired**,
+ **netlocked** or **ready**.
+- **Speakerphone**\
+ *%SPHONE*\
+ Whether the speakerphone is **on** or **off**
+- **Speech** `(dynamic)`\
+ *%SPEECH*\
+ The current utterance as a result of a *Say* or *Say File* action,
+ if applicable.
+- **Tasks Running** `(dynamic)`\
+ *%TRUN*\
+ A comma-separated list of any named tasks which are currently
+ running. The list always starts and ends with a comma to make
+ matching easier, if it\'s not empty.
+- **Telephone Network** `(dynamic, monitored)`\
+ *%TNET*\
+ The current telephony network operator the device is using.\
+ May be unreliable on CDMA networks
+- **Temperature** `(monitored,dynamic)`\
+ *%TEMP*\
+ The current ambient temperature in degrees Celsius.\
+ May not change when the device display is off, see
+ `Menu / Prefs / Monitor / Display Off Monitoring / Temp. Sensor`.\
+ See also: state *Temperature*.
+- **Text From/Date/Subject/Time** `(monitored)`\
+ *%SMSRF / %SMSRN / %SMSRB / %MMSRS / %SMSRD / %SMSRT*\
+ The sender address, name, body, subject, date and time of the last
+ text (SMS or MMS) received.\
+ These variables will be empty until the first time a text is
+ received after they have been referenced because Tasker does not
+ monitor texts unless it\'s needed.\
+ *Name* is set to sender address of no contact could be looked up.
+ It\'s unavailable on Android versions prior to 2.0.\
+ *Body* (%SMSRB) is only set for SMSs.\
+ *Subject* (%MMSRS) is only set for MMSs.
+- **Time**\
+ *%TIME*\
+ Current human-readable time separated by a period e.g. 10.59
+- **Tether** (dynamic)\
+ *%TETHER*\
+ A comma-separated list of enabled tethering forms i.e. connections
+ over which another device can connect to this one in order to use
+ its internet connection.\
+ The possible forms are **wifi**, **usb** or **bt**.\
+ BT will only be present when an actual client is connected via BT
+ for using the devices network connection, whereas the others will be
+ present as soon as the functionality is enabled (Android
+ bug/limitation).
+- **Time MilliSeconds**\
+ *%TIMEMS*\
+ The current time in milliseconds.\
+ (milliseconds since some time in January, 1970, if you must know).
+- **Time Seconds**\
+ *%TIMES*\
+ The current time in seconds.\
+ (seconds since some time in January, 1970, if you must know).
+- **UI Mode** `(monitored,dynamic)`\
+ *%UIMODE*\
+ The current Android UI mode.\
+ One of **car**, **desk**, **appliance**, **tv** (television),
+ **watch**, **undef** (undefined) or **normal**.
+- **Uptime Seconds**\
+ *%UPS*\
+ The number of seconds since the device last booted.
+- **Volume - Alarm/Call/DTMF/Media/Notification/Ringer/System**
+ `(dynamic)`\
+ *%VOLA / %VOLC / %VOLD / %VOLM / %VOLN / %VOLR / %VOLS*\
+ Current audio channel volume level.\
+ On some devices, volume changes are not picked up dynamically, on
+ others not when using the phone app.
+- **WiFi Info**\
+ *%WIFII*\
+ When connected to an Access Point (AP), shows human-readable data
+ about the AP. When not connected, show details of the most recent
+ Wifi scan results for nearby APs.\
+ On Android 8.1+, may require basic location services to be enabled
+ in Android settings.
+- **WiFi Status** `(dynamic)`\
+ *%WIFI*\
+ Whether WiFi is **on** or **off**. Note: if WiFi is enabling or
+ disabled, in fact anything but enabled, it\'s classed as off.
+- **Wimax Status**\
+ *%WIMAX*\
+ Whether Wimax is **on** or **off**. Note: if Wimax is enabling or
+ disabled, in fact anything but enabled, it\'s classed as off.
+- **Window Label** `(monitored,dynamic)`\
+ *%WIN*\
+ The label of the current window, which could be a full-screen
+ activity or a dialog.\
+ Not set if the label is unknown.\
+ For some windows, the label might be that of the first item in the
+ window e.g. a menu entry or even a button.
+
+[]{#notes}
+
+##### General Notes
+
+Variables marked `dynamic` in the list above trigger changes in
+*Variable Value* states and *Variable Set* events whenever their value
+changes.
+
+Variables marked `monitored` will cause the relevant monitor to startup
+to track their state when they are used in contexts or tasks which are
+used by widgets or **enabled** profiles. For instance, %CELLID used in a
+Flash action will cause cell location to be tracked.
+
+Limitation: monitored variables cannot be detected in anonymous
+shortcuts.
+
+[]{#locnote}
+
+##### Note On Location Variables
+
+When the relevant provider (Net or GPS) of a location context is active,
+these variables report the values from the provider, which may be more
+recent than Tasker has seen if other applications are asking for
+location.
+
+When the relevant provider is **not** active, these variables report the
+last values **seen by Tasker**, which could be the result of a
+`Get Location` action or of monitoring for a `Location Context`.
+
+That means the the reported fix times could **go backwards**, if you
+turn off the location provider between two uses of the variables.
+
+Location variables can also be manually updated by running the
+`Get Location` action.
+
+#### User Variables
+
+The action *Variable Set* (and several others) can be used to create new
+variables. Variable names have the following restrictions:
+
+- they must start with the **%** character
+- they are case-sensitive
+- then must at least a further **3** alphanumeric characters
+- they can also contain the underscore character (\_) but not start or
+ end with it
+
+In general, it\'s best to use local variables wherever possible because:
+
+- you know they won\'t be interfered with by other tasks or scenes
+- they are more efficient in several ways
+
+Note: multiple copies of the same task running at the same time each
+have their own separate copy of their local variables.
+
+###### Scene-Local Variables
+
+Each scene has its own set of local variables which it shares with the
+task that created it; both the scene and task see changes to the
+variables made by either.
+
+Any task which starts as a result of a scene event (e.g. a tap on an
+element) also shares the variables of the scene (and thus of the
+original task which created the scene).
+
+As a consequence, a task started by a scene event (e.g. Tap on an
+element) which shows a new scene e.g. via the *Show Scene* action, will
+result in the second scene sharing the variables of the first scene.
+
+When a task shows a scene that was created by a different task (or a
+different copy of the same task) and subsequently hidden, the task\'s
+variables are **copied** to the scene variables (overriding values of
+variables which already exist) but the task does **not share** the scene
+variables and cannot see changes to them.
+
+##### Escaping Variable Names
+
+If you want to prevent a variable name being replaced, put a **\\** in
+front of it e.g.
+
+> `Variable Set, %new, \%old`
+
+Will set the value of *%new* to *%old*, **not** the **value** of *%old*.
+
+In order to precede a variable name with a **\\** you can escape the
+backslash e.g.
+
+> `Variable Set, %new, \\%old`
+
+Will set the value of *%new* to **\\** followed by the **value** of
+*%old*.
+
+##### Variable References
+
+It\'s possible to indirectly refer to variables by preceeding one or
+more extra **%** signs to the start of the variable name. For example:
+
+> ` Variable Set, %colour, red Variable Set, %varname, colour Flash %%varname`
+
+\... will flash **red**.
+
+Using this notation it\'s possible to assign variables whose name is not
+known beforehand:
+
+> ` Read File, variablename.txt, To Var, %varname Variable Set, %%varname, red`
+
+This will set the variable whose name is stored in the file
+`variablename.txt` to **red**.
+
+You can nest references as deeply as you like (e.g. `%%%%var`) but
+mental stress and bugs are sure to follow.
+
+If any part of the chain has an invalid variable name then the original
+reference will be returned. In the first example, if `%varname` is set
+to `!!!`, then **%%varname** will be flashed instead of **red**.
+
+##### Variable Lifetime
+
+The value a **global** variable holds lasts until Tasker is uninstalled
+if it is not changed by any task.
+
+**Local** variables are lost at the end of the task they were created
+in, or when the parent scene is destroyed in the case of tasks called
+from scenes.
+
+##### Uninitialized Variables
+
+User-variables which have not had a value assigned do not have
+replacements carried out e.g. in the expression *I love %fruit*, if
+%fruit is uninitialized, the expression remains as it is, otherwise
+%fruit is replaced with the value.
+
+Exception: uninitialized variables used in mathematical expressions are
+replaced with 0.
+
+#### Variables In Plugins
+
+Plugin developers can tell Tasker to replace variables it finds in
+plugin strings with their current Tasker value. If you have a plugin
+which doesn\'t support this, send the developer this URL
+
+>
+
+which has the relevant details.
+
+[]{#arrays}
+
+#### Variable Arrays
+
+Tasker supports pseudo-arrays.
+
+They are especially useful when used with the `For` action, since you
+can perform a set of actions on each element in turn e.g. list a set of
+files then test each one.
+
+##### Examples
+
+If the four variables **%arr1, %arr2, %arr3, %arr4** hold respectively
+**a, b, c** and **d** then we have an array with 4 *elements*. These
+variables can be used just like any other, however it is also possible
+to access them in special ways. Here are some examples:
+
+- **%arr(\#)**\
+ The number of defined array elements (**4** in this case)
+- **%arr(\#\>)**\
+ The index of the first defined array element, or **0** if none are
+ defined (**1**).
+- **%arr(\#\<)**\
+ The index of the last defined array element, or **0** if none are
+ defined (**4**)
+- **%arr(\#?b/c)**\
+ A comma-separated list of the array indices (lowest to highest) with
+ matching values, or **0** if none match (**2,3** in the example)
+- **%arr(\#?\~Rregex here)**\
+ Same as above but with regex matching
+- **%arr(\>)**\
+ The contents of the first defined array element (**a**)
+- **%arr(\<)**\
+ The contents of the last defined array element (**d**)
+- **%arr()** or **%arr(:)**\
+ All of the array elements separated by commas (**a,b,c,d**)
+- **%arr(2)** or just **%arr2**\
+ The content of the element with index 2 (**b**)
+- **%arr(2:4)**\
+ Contents of defined elements with indices 2 to 4 (**b,c,d**)
+- **%arr(:3)**\
+ All the defined elements with indices up to 3 (**a,b,c**)
+- **%arr(3:)**\
+ All the defined elements with indices starting from 3 (**c,d**)
+- **%arr(1:2)**\
+ All the defined elements with indices from 1 to 2 (**a,b**)
+
+Notes:
+
+- arrays will virtually always have all their elements defined so e.g.
+ %arr(\>) will be the same as %arr(1), %arr(\#) will be the same as
+ %arr(\#\<)
+- index specifiers can themselves be variables (e.g. %arr(1:%MAX) or
+ %arr(\#?%FINDME)) but **not** variable arrays
+
+##### Creating An Array
+
+1. using `Array Set`:\
+ **Array Set, %arr, a b c d**
+2. using `Variable Split` on an existing (simple) variable:\
+ **Variable Set %arr a b c d**\
+ **Variable Split %arr**\
+3. by assigning individual elements with `Variable Set`:\
+ **Variable Set, %arr3, c**.
+4. using `Array Push` to add an initial element
+5. some other actions also create arrays for their results e.g.
+ `List Files`.
+
+##### Inserting Elements
+
+Use the `Array Push` action.
+
+The *Fill Spaces* parameter might need more explanation. It is only
+relevant if one or more of the array elements are undefined. As an
+example, if we have the array elements %arr1 and %arr3 containing
+**apple** and **banana**:
+
+- **Array Push %arr1, 1, pear**\
+ leaves %arr1, %arr2 and %arr4 containing **pear**, **apple** and
+ **banana**.\
+- but **Array Push %arr2, 1, pear, Fill Spaces**\
+ leaves %arr1, %arr2 and %arr3 containing **pear**, **apple** and
+ **banana**.
+
+##### Removing Elements
+
+Use the `Array Pop` action. Note the difference between `Array Pop` and
+`Variable Clear`: `Pop` reduces the number of elements in the array,
+while `Clear` merely changes elements to undefined.
+
+Example: if we have the array elements %arr1, %arr2, %arr3 containing
+**apple**,**pear** and **banana**:
+
+- **Variable Clear %arr2**\
+ leaves %arr1 and %arr3 containing **apple** and **banana**.\
+- but **Array Pop %arr2**\
+ leaves %arr1 and %arr2 containing **apple** and **banana**.
+
+##### Deleting An Array
+
+Use `Array Clear`.
+
+In most cases you could also use **Variable Clear %arr\*** with Pattern
+Matching checked, but that would also delete variables called e.g.
+%arrTOODEETOO so `Array Clear` is safer.
+
+##### Sorting
+
+The `Array Process` action offers various sorting options, amongst other
+things.
+
+##### Array Efficiency
+
+Arrays are intended for convenience when processing high-level data, not
+for e.g. processing astronomical data. Doing thousands of array actions
+will likely take several seconds (although mostly due to the
+housekeeping work done by Tasker in-between each action rather than due
+to the array operations themselves).
+
+In terms of storage efficiency, they are also fairly hopeless. You
+probably do not want to store tens of thousands of items in an array.
diff --git a/userguide_summary.md b/userguide_summary.md
new file mode 100644
index 0000000..5e7919b
--- /dev/null
+++ b/userguide_summary.md
@@ -0,0 +1,8247 @@
+*This document is a one-page compilation of the on-device userguide
+intended for printing out for use as a reference.*
+
+[]{#index.html}
+
+Tasker Userguide 
+-------------------------------------
+
+Profiles
+
+- [Main Screen](#activity_main.html)
+
+
+
+- Contexts
+ - [Application](#appcontext.html)
+ - [Time](#timecontext.html)
+ - [Day](#daycontext.html)
+ - [Location](#loccontext.html)
+ - [Location Edit](#activity_locselect.html)
+ - [State](#activity_stateedit.html)
+ - [A-Z](#help/sh_index.html)
+ - [Event](#eventcontext.html)
+ - [Event Edit](#activity_eventedit.html)
+ - [A-Z](#help/eh_index.html)
+
+Tasks
+
+- [General](#tasks.html)
+- [Task Edit](#activity_taskedit.html)
+- [Flow Control](#flowcontrol.html)
+- [Task Widgets / Shortcuts](#app_widgets.html)
+ - [Configuration](#activity_widget_configure.html)
+- Actions\
+ - [Action Edit](#activity_actionedit.html)
+ - [Settings](#settings.html)
+ - [A-Z](#help/ah_index.html)
+
+Scenes
+
+[General](#scenes.html)
+
+[Scene Edit](#activity_sceneedit.html)
+
+[Scene Properties](#activity_scenepropertiesedit.html)
+
+Scene Elements\
+
+- [Button](#element_button.html) [CheckBox](#element_checkbox.html)
+ [Doodle](#element_doodle.html) [EditText](#element_textedit.html)
+ [Image](#element_image.html) [Map](#element_map.html)
+ [Menu](#element_menu.html) [Number Picker](#element_picker.html)
+ [Oval](#element_shape.html) [Rectangle](#element_shape.html)
+ [Slider](#element_slider.html) [Spinner](#element_spinner.html)
+ [Text](#element_text.html) [Toggle](#element_toggle.html)
+ [Video](#element_video.html) [Web](#element_web.html)
+- [Element Edit](#activity_elementedit.html)
+
+Variables
+
+- [General](#variables.html)
+
+Miscellaneous
+
+- [Android System Power Management](#androidpowermanagement.html)
+- [App Creation](#appcreation.html)
+- [Beginner Mode](#beginner.html)
+- [CPU Control](#cpu.html)
+- [Encryption](#encryption.html)
+- [Gestures](#gestures.html)
+- [Intents](#intents.html)
+- [Java](#java.html)
+- [JavaScript](#javascript.html)
+- [Icons](#icons.html)
+- [Location Without Tears](#loctears.html)
+- [Maths](#maths.html)
+- [Pattern Matching](#matching.html)
+- [MIDI](#midi.html)
+- [Power Usage](#power.html)
+- [Run Log](#activity_runlog.html)
+
+FAQs
+
+- [How Do I\... / Can I\... ?](#faqs/faq-how.html)
+- [Usage Problems](#faqs/faq-problem.html)
+- [Why\... ?](#faqs/faq-why.html)
+- [App Creation](#faqs/faq-appcreation.html)
+- [Other](#faqs/faq-other.html)
+
+Web Links
+
+- [Wiki (Step-throughs, Recipes)](http://tasker.wikidot.com)
+- [Tour](http://tasker.dinglisch.net/tour.html)
+- [Bugs / Limitations](http://tasker.dinglisch.net/bugs.html)
+- [Plans](http://tasker.dinglisch.net/todo.html)
+- [Developers](http://tasker.dinglisch.net/developers.html)
+- [Release Notes](http://tasker.dinglisch.net/changes.html)
+
+[]{#activity_main.html}
+
+Main Screen 
+--------------------------------
+
+This is the first screen shown when you startup Tasker. It allows you to
+organize and configure Tasker\'s four main \'building blocks\':
+*Profiles, Tasks, Scenes* and *Variables*.
+
+- Main Tabs
+ - [Profiles](#profiles)
+ - [Tasks](#tasks)
+ - [Scenes](#scenes)
+ - [Variables](#variables)
+- [Action Bar](#action)
+- [Menus](#menus)
+- [Projects](#projects)
+
+### Main Tabs
+
+Displayed in the action bar on most devices.
+
+- **Click** on a tab to view a list of the relevant things
+- **Click** on an **already selected** tab to get options for it
+
+[]{#profiles}
+
+#### *Profiles*
+
+Each item in the list represents a profile. The profile links contexts
+(conditions) on the left to tasks which should be run on the right. The
+profile name is green if the profile is active. There are three main
+parts to each profile.
+
+##### *1. Title Bar*
+
+This shows the profile name (or description if it has no name) and a
+switch on the right shows whether the profile is enabled or not.
+
+- **Click** on the name to expand / collapse the profile. When
+ expanded, the contexts and tasks (described below), are visible.
+- **Long-click** on the profile name to get profile options or to drag
+ profile(s) around
+- **Click** on the switch to control whether the profile is enabled or
+ not.
+
+Important: the switch being set to **on** does **not** mean the profile
+is **active** (will run its tasks), it means that the profile **can**
+become active **if** its conditions are met.
+
+##### *2. Contexts*
+
+On the left hand side of the profile are an icon and text for each
+context in the profile. The contexts dictate when the profile should
+become active. When **all** contexts are active then the profile will be
+active.
+
+- **Click** on the context to edit it
+- **Long-click** to show management options, such as editing or adding
+ a new context
+
+You can configure what clicks and long-clicks on contexts do in
+`Menu / Prefs / UI`.
+
+##### *3. Tasks*
+
+On the right hand side of the profile are one or two tasks to carry out
+based on its activation status.
+
+- **Click** on the task to edit it
+- **Long-click** to show management options.
+
+A task indicated with a **green, right-pointing** arrow is an *entry*
+task, executed when the profile first becomes active.
+
+A task indicated with a **red, left-pointing** arrow is an *exit* task,
+executed when the profile becomes inactive again.
+
+Exception: a profile containing an event context or a repeating or
+non-ranged time context has two green arrows, to denote that both tasks
+are executed immediately because the profile activation and deactivation
+is instantaneous.
+
+Click on the **Profiles** tab when it is already selected for general
+profile-related options such as sorting.
+
+[]{#tasks}
+
+#### Tasks
+
+The task list shows the named [tasks](#tasks.html) which have been
+created.
+
+- **Click** on a task to edit it
+- **Long-click** for options or to drag task(s) around
+
+Note that a profile can be assigned an *anonymous* task (one without a
+name) which is not accessible in the task list, only via the relevent
+profile in the profile list.
+
+Click on the **Tasks** tab when it is already selected for general
+task-related options such as sorting.
+
+[]{#scenes}
+
+#### Scenes
+
+The scene list shows the [scenes](#scenes.html) which have been created.
+
+- **Click** on a scene to edit it
+- **Long-click** for options or to drag scene(s) around
+
+Scenes with a green name have been created but may be invisible
+(hidden).
+
+Click on the **Scenes** tab when it is already selected for general
+scene-related options such as sorting.
+
+[]{#variables}
+
+#### Variables
+
+The Variables tab is not shown if [Beginner Mode](#beginner.html) is
+enabled.
+
+By default, all global [user-variables](#variables.html) that Tasker
+knows about are listed, which includes any that have a value set or are
+mentioned somewhere in a profile, task or scene.
+
+- **Click** on a variable to edit it
+- **Long-click** for options
+
+Note that variables whose names are all lower-case are *local* variables
+and not shown because they are only valid within the task that refers to
+them.
+
+Click on the **Vars** tab when it is already selected for general
+variable-related options such as sorting and filtering.
+
+The filter controls function as follows:
+
+- **Indexed** (button)\
+ includes variables whose names end in a number e.g. `%LOC3`,
+ otherwise they are excluded.
+- **Empty** (button)\
+ includes variables which have currently have no value assigned,
+ deselect to show only variables that have a value.
+- **Referenced** (button,home project only)\
+ includes variables which are referenced in profiles, tasks or
+ scenes.\
+ Deselect to show only \'orphan\' variables.
+- **Filter** (textbox)\
+ excludes variables which don\'t contain the specified text somewhere
+ in their name (case-sensitive)
+
+In a user-created project, only variables referenced by that project are
+shown.
+
+Unlike most screens in Tasker, changes made in the variable list cannot
+be cancelled.
+
+[]{#action}
+
+#### Action Bar
+
+##### *Apply* Button
+
+Save and apply any changes which have been made **without** exiting the
+UI.
+
+This is unnecessary prior to leaving the UI via the back button or home
+key, it\'s just for convenience when testing changes.
+
+Not visible in [Beginner Mode](#beginner.html).
+
+##### *Overflow* Button
+
+Click to access [menu options](#menus) if no menu hard-key is available
+on the device. []{#menus}
+
+### Menus
+
+#### Menu Item: Browse Examples
+
+Links to websites with projects, profiles etc offering solutions for
+common problems. Important: once downloaded you need to import the file
+into your active user data. For example, profiles are imported by
+long-clicking the profile tab and selecting Import.
+
+#### Menu Items: Data
+
+##### Clear
+
+Removes all data that has been created to that point. Does not remove
+preferences (use `Menu / Preferences` and click **Defaults** for that)
+or variables (long-click on the Variables tab for that).
+
+##### Backup
+
+Saves the existing user data to a backup file on external storage.
+
+##### Restore
+
+Options for restoring backups of various types. []{#projects}
+
+### Projects
+
+Tasker allows organisation of profiles, tasks, scenes and variables into
+groups called *Projects*, each with a separate *Project Tab*.
+
+The projects tabs are hidden in [Beginner Mode](#beginner.html).
+
+- **Click** on a project tab to switch to viewing only things in that
+ project
+- **Long-click** on a project tab for options, including adding a new
+ tab. Options can also be accessed by a single click on the selected
+ project tab.
+- **Long-click and Select**, then drag to a project tab, any items you
+ want to move to that project
+
+The first tab has a slightly special status, it cannot be removed and
+anything which is not a member of another project is placed there.
+
+[]{#appcontext.html}
+
+Application Context 
+----------------------------------------
+
+An *Application Context* is activated when selected parts of one or more
+application are running.
+
+Important: in Android versions after (and including) L, app detection is
+much less accurate. For some apps it may not work at all, for others it
+may activate and never deactivate.
+
+#### Controls
+
+##### *App* button
+
+When checked, indicates that the context will become active if any of
+the selected applications is in the *foreground*, meaning it is
+currently being displayed to the user.
+
+##### *Services* button
+
+When checked, indicates that the context will also become active if a
+service associated with any of the selected applications is running.
+
+Note that services other than the obvious ones may be running. For
+example, the default Play Music app may have a download service running
+even when not playing music at a particular time.
+
+##### *Invert* button
+
+When the context is *inverted*, it will become active when any
+application **apart from** the selected ones is matched
+
+##### *All* button
+
+Usually only applications are shown for selection which would usually be
+shown in the launcher. The All button shows certain other launchable
+activities.
+
+This button in no way affects how the context behaves.
+
+#### Application Checking
+
+When any profiles have application contexts specified, Tasker checks
+frequently to see if one of those applications has been launched. The
+default is every 1.5 seconds.
+
+If you would like quicker response, or you suspect this is severely
+increasing your battery usage, you can change this value in preferences
+(select `Menu / Preferences / Monitor` from the main screen).
+
+[]{#timecontext.html}
+
+Time Context 
+---------------------------------
+
+A *Time Context* specifies a particular range, or one (or more) points
+in time. There are three major components, at least one of which must be
+selected (by enabling its checkbox on the left):
+
+- **From Time**: the starting time of the range. If it\'s not
+ specified, **00:00** is assumed.
+- **To Time**: the end time of the range, inclusive. The context will
+ deactivate after the **end** of the specified minute.\
+ If To Time is not specified then **23:59** is assumed i.e. the
+ context deactivates at midnight.
+- **Repeat**: if no repeat is selected, the context is assumed to be a
+ continuous range which starts at *From Time* and ends at *To Time*.
+ If a repeat **is** specified, the first occurrence is at *From Time*
+ and then every X hours or minutes until *End Time*.
+
+When not in [Beginner Mode](#beginner.html), it\'s possible to specify a
+[global user variable](#variables.html) as the source of the `From Time`
+or `To Time` by clicking on one of the rotating-arrow icons.
+
+The variable contents must specify the hours and minutes in **24-hour
+format** and separated by a **period** (dot) or **colon** e.g. *13.45*.
+Leading 0s can be ommited e.g. *9.7* for
+seven-minutes-past-nine-in-the-morning.
+
+Alternatively, the time can be specified in seconds-since-the-epoch
+format, in which case only the hour and minute part of the specification
+are used.
+
+When the variable value changes, the time context is reevaluated which
+may result in it activating or deactivating. If the variable value does
+not specify a valid time then the profile will deactivate (if it\'s
+already activated).
+
+Note: in some cases it may be wise to disable the profile (via the
+*Profile Status* action) before changing the associated variable values.
+For example, if your time context is from 16.00 to 16.00 (i.e. acting as
+an event) and it should be changed to 17.00,17.00, if you don\'t disable
+it first then as soon as you change the first value the time context
+will become a 23 hour range (17.00-16.00) and probably activate.
+
+Notes:
+
+- to specify a precise time, set *From* and *To* times the same. In
+ that case, the context is treated as an instant event, it it only
+ active for a fraction of a second, so no setting restoration is
+ done.
+- each repeat (if *Repeat* is set) is also treated like an instant
+ event.
+
+[]{#daycontext.html}
+
+Day Context 
+--------------------------------
+
+A *Day Context* allows specification of one or more months and/or days
+of the week/month.
+
+#### Month Specification
+
+The months are listed at the top, any of which can be selected.
+Selecting **no** month has the same meaning as selecting **every** month
+i.e. has no restriction on when the profile will become active.
+
+#### Day of Week/Month Specification
+
+Days of the week (*Sunday, Monday* etc) and/or month (*1st, 9th* etc)
+can be selected independently with the pulldown centre-right. This will
+initially be for Week Days if there are any defined, otherwise Month
+Days.
+
+Selecting **no** day has the same meaning as selecting **every** day.
+
+If you select **both** days of the week **and** days of the month, it
+requires both conditions to be fulfilled for the profile to become
+active e.g. selecting *Mon,Tue* and *11th* means the profile will become
+active when the day is a *Mon* or *Tuesday* and **simultaneously** the
+*11th* day of the month.
+
+If you are unsure if you have specified the day(s) you require, click
+the **Done** button and you will see a verbal description at the top of
+the Profile Edit screen. You can click on this to try again if it\'s not
+correct.
+
+[]{#loccontext.html}
+
+Location Context 
+-------------------------------------
+
+A *location context* specifies a circular geographical area in which it
+is active. It is formed by a centre point (*latitude, longitude*) plus a
+*radius* around that point.
+
+#### Location Providers
+
+A location provider is a method of supplying geographical coordinates.
+Tasker must use one or more location providers to be able to decide when
+a location context should become active or inactive. []{#gps}
+
+##### GPS
+
+The most accurate provider available (around +-10m), but its performance
+degrades quickly indoors and it uses a relatively large amount of power.
+
+To set the frequency of GPS fixes, see `Menu / Preferences / Monitor`.
+*GPS Check Time* determines the check frequency in seconds while the
+device is awake, *Off Check Time* while the device is asleep.
+
+GPS will only be used for a particular context if it is specified in the
+location edit screen.
+
+[]{#net}
+
+##### Network
+
+This provider uses a combination of cell-towers and WiFi information (if
+wifi is enabled) to determine the device\'s geographical location. It is
+less power-hungry than GPS, but also less accurate (sometimes +- several
+kilometres) and requires data network availability.
+
+Network will only be used for a particular context if it is specified in
+the location edit screen.
+
+See also:
+
+- [Location Edit Screen](#activity_locselect.html)
+- [Location Without Tears](#loctears.html) (guidance for choosing a
+ location method)
+
+[]{#activity_locselect.html}
+
+Location Edit 
+----------------------------------
+
+This screen allows configuration of a [Location
+Context](#loccontext.html).
+
+#### Map Display
+
+The map shows the location (base of the flag icon), radius and names of
+all defined location contexts
+
+The location currently being defined has a yellow base, other location
+contexts have a blue base.
+
+#### Map Controls
+
+- **long-click** on the map to select a location for this context.
+- **long-click then drag** on the flag for the current location to
+ drag it
+
+Use the pull-down selector under the map to specify the radius for this
+context.
+
+**Important:** if your radius is too small compared to the accuracy of
+the fixes you are receiving, your context may never go active. If you
+can\'t get a fix, try increasing the radius. Typically, a good radius
+would be around twice the accuracy of the fixes you are receiving.
+
+If you have no internet available in order to retrieve the map tiles,
+you can still use the **Get Fix** button (see below) to specify your
+current location.
+
+#### Action Bar Options
+
+##### Grab (\'My Location\') Button
+
+Acquires a location fix using the enabled and available providers (make
+sure the GPS Button is clicked first if you want to use GPS).
+
+Once a fix is acquired, the latitude, longitude and radius of this
+location context are set according to it. If you reduce the radius after
+a fix, Tasker may no longer accurately detect whether you are in or out
+of the context.
+
+When trying to determine current location, Tasker will keep going with
+fixes until they stop improving (e.g. as the GPS locks on to more
+satellites). If you get impatient you can press the Get Fix button again
+to stop the process (its label is changed to **Stop** while a fix is
+being acquired).
+
+##### Address Menu Item
+
+Allows entry of an address for which this location context should be
+active.
+
+#### Bottom Buttons
+
+##### Net Button
+
+The Net toggle button specifies whether to use the [Network](#net)
+location provider to monitor for this location
+
+##### GPS Button
+
+The GPS toggle button specifies whether to use [GPS](#gps) to monitor
+for this location (assuming it is available on the device). If GPS is
+not used, the network will need to be available in order to query for
+location fixes based on cell-towers or WiFi data.
+[]{#activity_stateedit.html}
+
+State Context 
+----------------------------------
+
+A *State Context* allows specification of the continuing state of a
+software or hardware entity.
+
+The State Edit screen allows configuration of the state and its
+parameters.
+
+#### State Name
+
+The name of the state is given at the top of the screen. Clicking on it
+allows changing to another state type.
+
+Next to the name is a button to show help for the displayed state type
+and its parameters. Be sure to check the help text if you have trouble
+with a particular state.
+
+#### State Parameters
+
+##### General Parameters
+
+All states have parameters to specify more details about the state.
+
+Text parameters are treated as [pattern matches](#matching.html).
+
+##### Invert Parameter
+
+All states have an *invert* parameter, which specifies that the context
+should become active when it would usually be inactive, and vice-versa.
+[]{#eventcontext.html}
+
+Event Context 
+----------------------------------
+
+An *Event Context* allows specification of an event which is needed to
+activate its profile e.g. SMS received, screen has gone off.
+
+Events are a little different to other contexts because they are
+*instantaneous* whereas other contexts usually have a duration.
+
+This means that it is nonsensical to specify that e.g. the screen
+brightness should be set to X for the duration of the event, so Tasker
+assumes that all [settings](#settings.html) actions should persist
+beyond the event.
+
+For more information about specifying events, see the [Event Edit
+screen](#activity_eventedit.html).
+
+#### Event Parameters
+
+When a task is triggered by an event, the parameters of the event that
+ocurred are passed to the task so that it can make decisions based on
+the event details.
+
+The parameters are passed in the [array](#arrays) *%evtprm*.
+
+The order of elements of the array have values which match the order of
+the parameters of the event.
+
+Example: if an event\'s second parameter is an Application, %evtprm2 in
+the launched task will be set to the label of the application which
+triggered the event.
+
+[]{#activity_eventedit.html}
+
+Event Edit 
+-------------------------------
+
+This screen allows configuration of an [Event
+Context](#eventcontext.html).
+
+#### Event Name
+
+The name of the event is given at the top of the screen. Clicking on it
+allows changing to another event type.
+
+In the top right is a button to show help for the displayed event type.
+
+#### Priority
+
+Only present for relevant events.
+
+Selects the priority at which this event will be detected. An event can
+be processed by other Tasker Profiles, other installed applications and
+system processes.
+
+If priority is high, then this profile will be more likely to detect the
+event before other processes, and vice versa.
+
+#### Stop Event
+
+Only present for relevant events.
+
+If checked, then once this profile has dealt with the event, other user
+or system applications will no longer be able to see it.
+
+You can achieve different effects by combining *Priority* and *Stop
+Event*. For instance, if you want to show a Tasker menu when the camera
+button is pressed, you would set *Priority* **High** and check the *Stop
+Flag*, because you do not want the camera application to appear
+afterwards.
+
+#### Event Parameters
+
+Some events have paramaters to specify more details about the event. To
+get help on particular parameters, click the question-mark icon at top
+right.
+
+Text parameters are treated as [pattern matches](#matching.html).
+
+If you would like to make more complex comparions (e.g. mathematical
+expressions), leave the event parameter blank and instead put a
+[condition](#condition) on the first action of the task you execute with
+the profile.
+
+[]{#tasks.html}
+
+Tasks 
+--------------------------
+
+A task is simply a set of actions which are performed one after the
+other.
+
+#### Named / Anonymous Tasks
+
+A task can be given a name. This allows:
+
+- the same task to be used in more than one profile
+- easier identification of what the task does
+- in the case of a [task widget/shortcut]{#app_widgets.html}, it
+ provides a label for the icon on the home screen.
+
+When creating a profile, widget or shortcut, often the associated task
+will consist only of one or two actions which will not be reused. For
+this case, Tasker allows you to create a task without a name (an
+*Anonymous* task).
+
+#### Task Visibility
+
+Anonymous tasks are only visible when editing the profile that they are
+associated with.
+
+Named tasks are visible on any screen that allows task editing. Any
+changes made to the set of tasks in any screen is reflected in all the
+other screens.
+
+#### Task Icon
+
+Each task has an associated icon, by default a question mark. The icon
+is used
+
+- to represent the task on the home screen when it is used as a
+ [widget or shortcut]{#widgets.html}
+- when the task is [turned into and app](#appcreation.html)
+- for easier identification of the task within the Tasker UI
+
+#### Deleting Tasks
+
+Named tasks can only be deleted via the *Delete* button on the [Task
+Edit](#activity_taskedit.html) screen. Unnamed tasks are deleted
+automatically when the profile they are part of is deleted, or a named
+task is selected for that profile.
+
+Named tasks cannot be deleted while a profile still refers to them.
+
+When a task is deleted that is referred to by a previously created named
+widget or task, the widget will stop working.
+
+Android does not allow Tasker to automatically remove the widget from
+the Home Screen.
+
+[]{#scheduling}
+
+#### Task Scheduling
+
+When there is a single task waiting to be executed, it\'s actions are
+executed one-by-one until finished.
+
+When there are several tasks in the queue at once, it\'s important to
+understand how they are handled:
+
+- only **one action** from the same [action group](#actiongroups) can
+ be executed at once to prevent interference
+- the task in the queue with the **highest priority** goes first and
+ blocks lower priority tasks
+- tasks with the **same priority** take turns executing an action
+ each, starting with the most recent addition to the queue **unless**
+ one task is a child of the other (started via [Perform
+ Task](#help/ah_run_task.html)), in which case the child executes
+ first.
+
+Task priority, 0 to 50 inclusive with 0 being lowest, is determined
+according to whatever causes the task to run.
+
+- enter tasks run by profiles have the priority specified in Profile
+ Properties, the default is 5.
+- exit tasks run by profiles have the priority specified in Profile
+ Properties **plus 1001**, the default is therefore 1016
+- tasks run by **widgets** or **shortcuts** can be set in Task
+ Properties when the widget/shortcut is created, the default is 7
+- tasks run from scene elements have priority **one more** than the
+ task which showed the scene
+- tasks run from the **Test** button in the task edit screen have
+ priority 100 by default, long-click the play buttin to choose a
+ different one.
+
+A couple of guidelines are:
+
+- if you want a particular task to always interrupt other tasks that
+ may be executing, give it a high priority
+- if you have a task that lasts for a while, you probably want to give
+ it a low priority so it doesn\'t block other tasks from being
+ executed.
+
+[]{#actiongroups}
+
+#### Action Groups
+
+Actions are divided into groups for scheduling based on how long the
+action takes to execute and what it interferes with:
+
+- **Speech**: `Say, Say To File`
+- **Javascript**: `Javascript`
+- **Fix**: `Get Location`
+- **Voice**: `Get Voice`
+- **Proxy**:
+ `Display Brightness, Query Action, Photo, Photo Series, Photo Series Time`
+- **Proxy Scene** Enter Key, Menu, Popup, Popup Task Buttons, Variable
+ Query
+- **Other Scenes**: the name of the scene being shown
+- **Normal**: all other actions
+
+#### Wait Actions
+
+`Wait` and `Wait Until` are special cases. The rules for handling them
+are complicated and try to do the \'best thing\' dependent on the
+situation.
+
+#### Same-Profile Tasks
+
+Tasks launched by the same profile by default always execute in the
+order in which they are launched. Other tasks from the same profile
+remain completely inactive until any previous task from the same profile
+is complete. The main purpose of this rule is to correctly handle rapid
+changes in a profile\'s activation state.
+
+This behaviour can be disabled by deselecting *Enforce Task Order* in
+the Profile Properties dialog.
+
+##### Example
+
+This example demonstrates the effect of Enforce Task Order and shows
+also how sub-tasks launched by [Perform Task](#help/ah_run_task.html)
+are handled.
+
+ Profile: Example
+ Enter Task: Enter1
+ Perform Task, Enter2
+ Exit Task: Exit1
+ Perform Task, Exit2
+
+**With** Enforce Task Order:
+
+Enter1 and Enter2 are both guaranteed to finish before either of Exit1
+or Exit2. Whether Enter1 or Enter2 finishes first depends on their
+relative priority. Same for Exit1 and Exit2. All 4 tasks compete based
+on priority against tasks from other profiles. Exit tasks have a higher
+base priority so will finish before Enter tasks.
+
+**Without** Enforce Task Order:
+
+If the profile goes active and inactive quickly, Enter1, Enter2, Exit1
+and Exit2 will all compete purely on priority. Since Exit tasks have
+higher base priority, Exit1 and Exit2 will probably finish first.
+
+[]{#collisions}
+
+#### Collisions
+
+Sometimes a task needs to be executed of which a copy is already
+executing. This can happen quite often e.g. when a task widget button is
+pressed twice quickly, or a task contains a Wait action or shows a
+dialog.
+
+The way in which a collision is resolved is specified by the user. There
+are 3 options:
+
+- the **new** task is ignored (the default)
+- the **existing** task is aborted and the new one starts from its
+ first action. The current action of the previous task is finished if
+ it is already being carried out.
+- both tasks run simultaneously
+
+Note that the last option can lead to several copies of a task all
+running at once.
+
+[]{#stayawake}
+
+#### Behaviour When Device Off
+
+By default, after a few seconds of the screen being off Android will
+power down the device and thus running tasks will be paused.
+
+In the Task Properties dialog, it can be specified that a task should
+keep running.
+
+##### Dialogs
+
+An action that shows some kind of dialog (such as a lock screen, popup,
+menu) blocks execution of any other action, even one of higher priority,
+until it is completed.
+
+##### Wait / Wait Until
+
+These are exceptions. A wait action can be interrupted by another
+task\'s action and will resume (if necessary) when the other task\'s
+action is finished.
+
+#### Killing Tasks
+
+If you have a problem with a task that never ends, you can manually end
+tasks with the **Kill** button in the Task Edit screen.
+[]{#activity_taskedit.html}
+
+Task Edit 
+------------------------------
+
+This dialog allows editing of the actions in a task, and various
+properties of the task.
+
+#### Action List
+
+The main part of the screen is a list of the actions contained in the
+currently selected task.
+
+- **Click** on an action to edit it
+- **Long-click** on an action to enter multi-select mode and for
+ options
+- **Click-and-drag** at the right hand side of the action to move it
+ around e.g. to the trash bin
+
+If a particular action is a [setting](#settings.html), that will be
+indicated on the right-hand side of the action.
+
+##### Condition and Block Colours
+
+If an action has had a condition set for it, the condition is shown with
+a red or green bar next to it; **green** indicates that the condition is
+currently met (the action will execute), **red** indicates the opposite.
+Of course, when the task is executed it could be that it changes things
+so that the condition is then met.
+
+If an action is within an `If / End If` block it is displayed indented
+with a red or green margin. The colours have the same significance as
+for individual action conditions described above.
+
+If an action is within a [For loop](#for) it is displayed indented with
+a **grey** margin. If the `For` action has a condition on it which is
+not met, the margin will be **red** (because the actions in the loop
+will never execute, like an `If / End If` block).
+
+#### Task Control Row
+
+Directly underneath the action list is a row of buttons with icons.
+
+##### Play/Step Buttons
+
+Run the task.
+
+The Play button will run the task right through till the end, the Step
+button will run a single task each time it\'s pressed.
+
+During tasting, the current action is shown with an arrow and the next
+task with a faded arrow.
+
+The success of each action is shown when it finishes with a green
+(action OK) or red (action failed) circle.
+
+Tasks run via the Play or Step button have priority **10**.
+
+Long-click the Play or Test button to manually set the priority of the
+task when it runs **during the test**. Please be aware that setting a
+lower priority can result in interference from other tasks running which
+are e.g. triggered by profiles.
+
+Tip: pressing the Step button while a task is playing will cause the
+task to switch to stepping mode when the current action finishes.
+
+##### Add Action Button
+
+Add an action to the end of the task. When in multi-select mode, adds an
+action after the current selected item, if only one item is selected.
+
+##### Task Properties
+
+Show extended properties for the task. Not visible in [Beginner
+Mode](#beginner.html).
+
+##### Task Icon
+
+Shows the icon associated with the task. Clicking on it allows changing
+of the icon.
+
+#### Menu Items
+
+##### Action Labels
+
+Toggle display of action labels (which are specified in the [Action
+Edit](#activity_actionedit.html) screen).
+
+##### Param Names
+
+Toggle display of the name of each action parameter.
+
+##### Icons
+
+Toggle display of the setting/action indicator icon for each action.
+[]{#activity_actionedit.html}
+
+Action Edit 
+--------------------------------
+
+This screen allows configuration of a single action in a Task.
+
+#### General
+
+At top left is the name of the action. Tapping on this allows it to be
+changed.
+
+Bottom-right is a help button. Please be sure to read the action help of
+every action before you use it for the first time, there may be e.g.
+device specific restrictions you should know about.
+
+#### Action Parameters
+
+A *parameter* gives extra detail about how the action is to be carried
+out.
+
+##### Text Parameters
+
+- are sometimes optional: in that case the text *Optional* will appear
+ as a hint unless the entry box has already been filled in
+- sometimes have a dialog to help you fill in a value which you can
+ access by clicking the magnifying glass icon next to them
+- can have [variables](#variables.html) automatically inserted by
+ clicking the tag icon next to them.
+
+##### Numeric Slider Parameters
+
+Clicking the arrows icon next to numeric sliders allows you to specify
+the number textually or use a [variable](#variables.html) for the
+parameter instead, if the value will not be known until the action is
+actually executed.
+
+##### *If* (Condition) Parameter
+
+*(most actions)*
+
+Allows specification of one or more conditions which must match if this
+action is to execute.
+
+Single conditions consist of a *left-hand side* (usually a variable
+name), an *operator* and a *right-hand-side* for example
+`%number, Equals, 1` indicates that the action will be executed if the
+variable %number has the value 1.
+
+When more than one condition is specified, they must be combined via
+*And* (all conditions must be true), *Or* (at least one condition must
+be true) or *Xor* (exactly one must be true). These \'combiners\' are
+called *boolean operators*.
+
+Usually, 2 or 3 conditions will be combined with all *And*s or all
+*Or*s, but in order to allow more complicated logic, Tasker also offers
+*And* and *Or* in high-precedence versions. Of the 4 boolean operators
+which are available, the selection goes from low to high precedence
+ones.
+
+The higher the precedence of a boolean operator, the further to the
+right it is shown. This enables the logical groups to be visualised.
+
+Examples:
+
+`True | False & True | False` is the same as
+`( True | False ) & ( True | False )` so is **True**.
+
+`True & False | True & False` is the same as
+`True & ( False | True ) & False` so is **False**.
+
+`True & False | True |+ False` is the same as
+`True & ( False | ( True | False ) )` so is **True**.
+
+Note that the order of the conditions can mean that some conditions are
+never evaluated. For instance, when two conditions are present and the
+one above an *And* is **false** then the condition below it will never
+be evaluated. This can be advantageous if the second condition takes
+relatively more resources e.g. involves matching against a lot of text.
+
+Please see the section on [Flow Control](#flowcontrol.html) for more
+information.
+
+##### *Continue Task After Error* Parameter
+
+*(selected actions only)*
+
+By default, if an action fails with an error (e.g. the user specified to
+delete a file that doesn\'t exist) Tasker will stop the task immediately
+and the remaining actions will never be executed.
+
+This parameter specifies that the task should continue even if this
+action fails.
+
+In addition, if it\'s checked, errors will be logged in the system log
+as diagnostics instead of errors and error popups will be surpressed.
+
+##### *Label* Parameter
+
+*(all actions)*
+
+A label for the action which is shown on the Task Edit screen. This
+parameter could also be used to add comments to actions to help
+understand how the task works.
+
+Labels are also used with `Goto` actions to jump from one part of the
+task to another.
+
+#### Menu Options
+
+##### *Search*
+
+Search for and jump to a specified action. The entered term is searched
+against action properties in the following order:
+
+1. the action number
+2. the action label if present
+3. the action name
+4. the action description, including the action parameter contents
+
+The matching is case-insensitive. Searching starts from the current
+action and wraps around. Only the header action (
+
+If
+
+or *For*) of closed blocks is searched.
+
+[]{#scenes.html}
+
+Scenes 
+---------------------------
+
+### Introduction
+
+A *scene* is a graphical user-interface consisting of a collection of
+*elements* to which tasks can be attached to be run when the user
+interacts with them e.g. by tapping them.
+
+Tasker uses scenes for things like popup dialogs, menus and getting
+input from the user but scenes can actually be displayed by the user
+whenever desired, meaning they can be used for things like creating
+simple user-designed applications or showing extra controls over the top
+of (selected) existing applications.
+
+Scenes are completely user-customisable via a drag-and-drop graphical
+[editor](#activity_sceneedit.html).
+
+### Displaying Scenes
+
+#### Actions: `Enter Key, HTML Popup, Lock, Menu, Popup, Popup Task Buttons` and `Variable Query`
+
+These actions use a **built-in scene** with the same name as their
+action. After creating a task with such an action, the associated scene
+can be found under the **Scenes** tab on the main Tasker screen. That
+scene can be edited so that e.g. all `Popup` actions have the same style
+because they all use the same scene.
+
+The parameters specified in the action are applied to the scene before
+it is show. For instance, if the scene has a *Title* element it will be
+set to the title specified in the action and the scene resized
+appropriately.
+
+It might be desirable to have a different style for e.g. some `Popup`
+actions, in which case:
+
+1. clone the built-in scene long-clicking on it in the **Scenes** tab
+2. edit the clone to change the contents
+3. in a `Popup` action, specify that the cloned scene should be used by
+ clicking on the **Layout** parameter in the action edit screen.
+
+#### Scene Category Actions: `Create Scene, Show Scene, Hide Scene, Destroy Scene`
+
+These allow a completely free hand over when a scene should be displayed
+and it\'s life-cycle. They all act on scenes pre-designed in the
+**Scenes** tab.
+
+Usually, only `Show Scene` and `Destroy Scene` will be used, however
+sometimes it\'s useful for a scene to be created but not visible to the
+user:
+
+- by hiding a scene instead of completely destroying it, the settings
+ of the elements are retained for next time it is shown
+- the values of the elements in the scene can be changed to track
+ certain events so that the scene can be immediately displayed when
+ required without any configuration
+
+### Scene Elements
+
+Each scene is comprised of a number of elements.
+
+An element has three main components:
+
+#### Geometry
+
+It\'s size and position on the screen. An element\'s geometry is
+specified in the [scene editor](#activity_sceneedit.html).
+
+#### Content
+
+How it looks on the screen.
+
+Specified under the **UI** tab in the element editor. Some elements also
+have a Background tab. A Menu element has an additional Items tab.
+
+#### Event Tasks
+
+What should happen when the user interacts with the element.
+
+Specified under the right-most tabs after clicking on the element in the
+element editor. There are different events depending on the type of
+element. For instance, a Button has tap and long-tap events while a
+Slider has a value-set event.
+
+Event tasks are run at priority one higher than the task which displayed
+the scene
+
+Local variables set by event tasks are visible to all tasks in the same
+scene.
+
+### Scene Element Actions
+
+In the **Scenes** action category, there are several actions for setting
+the properties of scene elements. You can use these for a wide variety
+of purposes e.g.
+
+- when a slider value is set, change the zoom of an associated map
+ element
+- set the size of an element depending on current light level
+- animate elements around a scene
+
+Note that actions that affect scene elements can only be used when the
+scene has already been created (via `Create Scene` or `Show Scene`). The
+scene does not have to be visible.
+
+[]{#activity_sceneedit.html}
+
+Scene Edit 
+-------------------------------
+
+The scene editor is used for designing custom scenes.
+
+The editor consists of three areas:
+
+### Display Area
+
+The main part of the editor, where the position and size of elements are
+arranged. The display area has two modes dependent on the setting of the
+magnifying glass icon in the corner.
+
+#### Preview Mode
+
+This mode shows the scene as it will appear when displayed.
+
+- Click-and-drag on the **edge** of the scene to resize it
+
+#### Editing Mode
+
+This mode is zoomed to make editing easier.
+
+- **Long-click** on an **empty** area to create a new element
+ positioned there
+- **Long-click** on an **element** to get options for the element
+- **Click** on an **element** to edit it.
+- **Click-and-drag** on the **centre** of an element to move it
+- **Click-and-drag** on the **edge** of an element to resize it
+
+When moving and resizing, the sides of elements are snapped to a grid to
+make alignment easier. The grid size is unique to each scene and can be
+changed via **Menu / Grid Size**.
+
+### Tool Bar
+
+#### Touch Mode
+
+There are four touch modes which decide the effect of taps on the
+display area. *Normal Mode* is described above. *Edit Mode* is the same
+as *Normal Mode* except that all controls except the Touch Mode selector
+are hidden to allow access to small controls along the scene edges.
+*Move Mode* is intended to make it easier to reposition elements.
+*Resize* mode is for making resizing easier.
+
+#### Element Picker
+
+Allows selection of an element by name. This is most useful when an
+element is difficult to directly click on due to other elements or
+because it\'s very small.
+
+Both short and long clicks on the element names behave the same as short
+and long clicks on the element itself.
+
+#### Undo
+
+Allows undo of all operations, up to 20 steps in the past.
+
+#### New Element
+
+Create a new element in the **middle** of the scene. Useful if the scene
+is already cluttered with a lot of elements so there is no free space.
+
+### Menu Options
+
+#### Background Colour
+
+A complex background can be set by long-tapping an element and
+specifying it as the [background element](#back). If a uniform colour is
+sufficient, it can also be specified with this menu option.
+
+However, there is a special case where it\'s a good idea to specify a
+background colour even if you already have a background element. A scene
+is resized to fit the container into which it\'s placed, but in some
+cases (e.g. when it is shown as a full screen activity) there will be
+margins left on one side of the container because the *aspect ration* of
+the scene (the relative size of its width and height) of a scene is
+never changed. In such a case, the margins are coloured with the
+background colour specified here.
+
+### Element Long-Click Options
+
+[]{#back}
+
+#### Set Background
+
+An element which is set as the scene background is resized to always
+fill the whole scene and interferes less with selection of other
+elements. To reverse this, long-tap on it and select **Set Foreground**.
+
+#### Pin
+
+When an element is positioned satisfactorily, it can be pinned to make
+it easier to select and manipulate other elements. To reverse this,
+long-tap on it and select **Unpin**.
+
+#### Set Depth
+
+Each element has a particular depth which is unique to it. Deeper
+elements are obscured by shallower elements which overlap them.
+
+### Orientation
+
+The geometry (**position** and **size**) of each element can be
+configured independently for portrait and landscape display orientations
+by rotating the device to the desired orientation in the editor.
+
+If no geometry is configured for a particular orientation when the scene
+is displayed, Tasker will attempt to fit the elements into the scene
+based on the geometry of the elements in the other orientation.
+
+[]{#element_button.html}
+
+Scene Element: Button 
+------------------------------------------
+
+#### About
+
+A standard Android button enhanced to allow display of an icon, text or
+both.
+
+#### Parameter: Position
+
+If both a *Label* and *Icon* are specified, the *Position* parameter
+refers to the position of the *Label*. The *Icon* is then placed
+opposite the *Label*.
+
+#### Events
+
+- [Tap, Long Tap](#tap)
+
+#### Related Actions
+
+- [Element Image](#help/ah_scene_element_image.html)
+- [Element Text](#help/ah_scene_element_text.html)
+- [Element Text Colour](#help/ah_scene_element_text_colour.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_checkbox.html}
+
+Scene Element: CheckBox 
+--------------------------------------------
+
+#### About
+
+A standard Android checkbox to indicate e.g. an item selection state.
+
+#### Events
+
+- [Change](#checkchange)
+
+#### Related Actions
+
+- [Element Value](#help/ah_scene_element_value.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_doodle.html}
+
+Scene Element: Doodle 
+------------------------------------------
+
+#### About
+
+A *Doodle* is an image created by the user with a simple finger-painting
+screen.
+
+Click the *Doodle* parameter to edit the doodle.
+
+Doodles are stored on external storage in the directory
+`/sdcard/Tasker/cache/doodles` in case they are masterpieces which
+demand publishing.
+
+#### Events
+
+- [Tap, Long Tap](#tap),
+- [Stroke](#stroke)
+
+#### Related Actions
+
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_image.html}
+
+Scene Element: Image 
+-----------------------------------------
+
+#### Events
+
+- [Tap, Long Tap](#tap)
+- [Stroke](#stroke)
+
+#### Related Actions
+
+- [Element Image](#help/ah_scene_element_image.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_shape.html}
+
+Scene Element: Oval / Rectangle 
+----------------------------------------------------
+
+#### About
+
+Shape elements are intended mostly for decoration but can also be used
+as invisible \'launchpads\' for e.g. stroke events.
+
+#### Events
+
+- [Tap, Long Tap](#tap)
+- [Stroke](#stroke)
+
+#### Related Actions
+
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_map.html}
+
+Scene Element: Map 
+---------------------------------------
+
+#### About
+
+A *Map* element is a view onto the same kind of map window used by
+Google Maps but is much more automateable than the standalone app.
+
+Map elements cannot appear in Overlay scenes.
+
+When shown with the display type *Dialog, Dim Behind* or *Dialog, Dim
+Behind Heavy* the map will also be dimmed starting with Tasker 4.5, an
+unfortunate side-effect of the dimming method.
+
+#### Related Actions
+
+- [Element Add GeoMarker](#help/ah_scene_element_add_geomarker.html)
+- [Element Delete
+ Geomarker](#help/ah_scene_element_delete_geomarker.html)
+- [Element Map Control](#help/ah_scene_element_map_control.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### Events
+
+- [Tap, Long Tap](#tap)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_menu.html}
+
+Scene Element: Menu 
+----------------------------------------
+
+#### About
+
+A menu displays a variable selection of items and can have a separate
+action, text and icon defined for each item in the list.
+
+#### Parameter: Source
+
+Items can either be filled manually or from a variable array. In the
+case of an array, the list shows all the items starting at the first
+index; %var(1) %var(2) etc.
+
+In the case of manual specification, click on the *Items* tab in the
+element editor to specify the items.
+
+#### Parameter: Selection Mode
+
+There are three selection modes:
+
+- single: tapping an item deselects any other item selected
+- multi: several items can be selected at the same time
+- none: tapping an item never selects it
+
+Selected items are highlighted. There are two ways to find out the
+selected items:
+
+- assign a task under the **Item Tap** element event tab. Every time
+ an item is tapped, the selected items are available in the local
+ variable **%select\_indices**
+- query the selected items at any time using the action
+ `Element Get Value`
+
+#### Parameter: Item Layout
+
+Specifies how each item within the list will be displayed. Each item has
+exactly the same layout. To change the layout, click on it. Each Menu
+element has it\'s own unique item layout.
+
+There are two pre-defined layouts you can choose from (click the
+magnifying glass icon). \'Icon and Text\' is the default.
+
+#### Events
+
+- [Item Tap, Item Long Tap](#tap)
+
+#### Related Actions
+
+- [Menu](#help/ah_menu.html)\
+ allows easy display of a dialog with a title and showing a single
+ menu element.\
+ When using the Menu action, items are configured in the action
+ itself rather than in the Menu element.
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+[]{#element_picker.html}
+
+Scene Element: Number Picker 
+-------------------------------------------------
+
+#### About
+
+Allows selection of a numeric value from a specified range. Above and
+below the selected number the element can be long-clicked to advance the
+number series, or the number can be scrolled or flung up or down by
+touch.
+
+#### Events
+
+- [Value Selected](#value)
+
+Note that the Value Selected event will only fire when scrolling has
+**finished** i.e. when the user has lifted their finger and the Number
+Picker has come to rest.
+
+In contrast, long-clicking will produce an event for each number that is
+cycled through.
+
+#### Related Actions
+
+- [Element Value](#help/ah_scene_element_value.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen. The [Slider
+Element](#element_slider.html) screen. []{#element_slider.html}
+
+Scene Element: Slider 
+------------------------------------------
+
+#### About
+
+A standard Android \'seek bar\' enhanced to allow specification of the
+thumb icon and display indicators for the min, max and current values.
+
+#### Events
+
+- [Value Selected](#value)
+
+#### Related Actions
+
+- [Element Value](#help/ah_scene_element_value.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Image](#help/ah_scene_element_image.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+- [Element Editor](#activity_elementedit.html) screen.
+- [Number Picker Element](#element_picker.html) screen.
+
+[]{#element_spinner.html}
+
+Scene Element: Spinner 
+-------------------------------------------
+
+#### About
+
+A spinner allows selection of a single item from a menu. Only the
+currently selected item is displayed. When tapped, the menu is shown,
+when an item is selected, the menu is hidden again.
+
+#### Parameter: Source
+
+Items can either be filled manually or from a variable array. In the
+case of an array, the list shows all the items starting at the first
+index; %var(1) %var(2) etc.
+
+In the case of manual specification, click on the *Items* tab in the
+element editor to specify the items. The default (initially showing
+item) is selectable via the checkboxes on the left.
+
+Note that by default, a spinner is text only. To show also icons,
+long-click the icon element in the Item Layout (see below) and select
+*Show*.
+
+#### Parameter: Item Layout
+
+Specifies how each item within the list will be displayed. Each item has
+exactly the same layout. To change the layout, click on it. Each Spinner
+element has it\'s own unique item layout.
+
+#### Parameter: Popup Background Colour
+
+Specifies the background colour of the window which displays the
+possible spinner values when the spinner is clicked.
+
+#### Events
+
+- [Item Select](#itemselect)
+
+#### Related Actions
+
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Element Value](#help/ah_scene_element_value.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+[]{#element_text.html}
+
+Scene Element: Text 
+----------------------------------------
+
+#### About
+
+Displays non-editable text for labels etc.
+
+#### Parameter: Position
+
+Where to place the text within its box
+
+#### Parameter: Text Width Scale
+
+A horizontal scaling factor to squash up (negative values) or stretch
+(positive values) the text.
+
+#### Parameter: Font
+
+Specifies a custom font file to use for the text instead of the system
+default. Many thousands of free font files (with the filename ending in
+`.ttf` are available for download on the Internet.
+
+#### Parameter: Vertical Fit Mode
+
+What to do when the height of the text to display is greater than the
+height of the element.
+
+#### Parameter: Text Format
+
+Specifies how the text should be displayed.
+
+- *Plain Text*\
+ just show the text as-is
+- *Text With Links*\
+ things that look like links are clickable (though not in the scene
+ editor) e.g. URLs, email addresses, phone numbers
+- *HTML*\
+ interpret the text as a piece of HTML. Only simple tags are
+ interpreted and no images are displayable.
+
+#### Events
+
+- [Tap, Long Tap](#tap)
+- [Stroke](#stroke)
+
+#### Related Actions
+
+- [Element Text](#help/ah_scene_element_text.html)
+- [Element Text Colour](#help/ah_scene_element_text_colour.html)
+- [Element Border](#help/ah_scene_element_border.html)
+- [Element Back Colour](#help/ah_scene_element_background_colour.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_textedit.html}
+
+Scene Element: TextEdit 
+--------------------------------------------
+
+#### About
+
+A standard Android box for text entry.
+
+TextEdit elements cannot appear in Overlay scenes.
+
+#### Parameter: Text
+
+This is the **initial** text to show in the element, with any variables
+replaced.
+
+Note that if *Text* contains a variable, any changes in the variable
+value once the element have been shown will **not** be reflected in the
+visible contents of the text box. The reason for this limitation is that
+the user can change the text box contents by typing at any time so it is
+not possible to track where the variable contents should be, or even if
+they are still there at all.
+
+#### Parameter: Position
+
+Where to place the text within its box
+
+#### Parameter: Text Width Scale
+
+Horizontal scaling factor to squash up (negative values) or stretch
+(positive values) the text.
+
+#### Events
+
+#### Related Actions
+
+- [Element Text](#help/ah_scene_element_text.html)
+- [Element Text Colour](#help/ah_scene_element_text_colour.html)
+- [Element Border](#help/ah_scene_element_border.html)
+- [Element Back Colour](#help/ah_scene_element_background_colour.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_toggle.html}
+
+Scene Element: Toggle 
+------------------------------------------
+
+#### About
+
+A button with two states with an indicator light and a label for each
+state.
+
+#### Events
+
+- [Change](#checkchange)
+
+#### Related Actions
+
+- [Element Value](#help/ah_scene_element_value.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#element_web.html}
+
+Scene Element: Web 
+---------------------------------------
+
+#### About
+
+A *Web* element is like a browser window.
+
+#### Parameters: Mode / Source
+
+These parameters determine how the content for the WebView is to be
+acquired.
+
+- *URI*: the *Source* parameter refers to a URI (e.g. http://) from
+ which the WebView should retrieve content.
+- *File*: the *Source* parameter contains a local file path from which
+ the WebView should retrieve content.
+- *Direct*: the *Source* parameter directly specifies the HTML and/or
+ JavaScript content to load
+
+#### Parameter: Allow Phone Access
+
+If checked, the content in the WebView is allowed access to local device
+files, data stores, and can run JavaScript, including Tasker\'s
+[JavaScript Interface functions](#javascript.html).
+
+This is a very powerful feature, since it allows a WebView to present a
+complex and highly functional interface, but should only be enabled if
+you entirely trust the source of the specified content.
+
+Note that references to local files must be absolute (include the
+directory) even when the WebView source is specified as a file e.g.
+`/sdcard/myfiles/scripts.js`
+
+#### Parameter: Self Handle Links
+
+If checked, links will be handled by the WebView itself, otherwise they
+will be passed to the system for handling e.g. by the default web
+browser.
+
+#### Parameter: Support Popups
+
+If this parameter is **not** checked, HTML elements which generate a
+popup window, for instance selection elements in forms, will crash the
+scene when they are activated.
+
+If this parameter **is** checked, when the scene is hidden and reshown,
+some of its state will be lost e.g. which part of the page was being
+displayed, zoom level.
+
+#### Events
+
+#### Related Actions
+
+- [Element Web Control](#help/ah_scene_element_web_control.html)
+- [Element Focus](#help/ah_scene_element_focus.html)
+- [Element Position](#help/ah_scene_element_position.html)
+- [Element Size](#help/ah_scene_element_size.html)
+- [Element Visibility](#help/ah_scene_element_visibility.html)
+- [Element Depth](#help/ah_scene_element_depth.html)
+- [Test Element](#help/ah_scene_element_test.html)
+
+#### See Also
+
+The [Element Editor](#activity_elementedit.html) screen.
+[]{#activity_elementedit.html}
+
+Scene Element Edit 
+---------------------------------------
+
+Allows configuration of the properties of a scene element. The different
+types of property are divided into tabs.
+
+- [UI](#ui)
+- [Items](#items)
+- [Background](#background)
+- [Event](#event)
+ - [Change](#checkchange)
+ - [Focus](#focus)
+ - [Tap, Long Tap](#tap)
+ - [Item Select](#itemselect)
+ - [Value Selected](#value)
+ - [Item Tap](#itemtap)
+ - [Stroke](#stroke)
+ - [Text Changed](#text)
+ - [Link Tap](#linktap)
+ - [Page Loaded](#pageloaded)
+ - [Video](#video)
+
+Not all elements have all tabs.
+
+[]{#ui}
+
+### UI
+
+For the most part, configures the visual style of the element.
+[]{#items}
+
+### Items
+
+Only relevant to Menu and Spinner elements.
+
+Each row configures an item in the menu/spinner. Starting from the left,
+the controls are:
+
+- **selection checkbox**\
+ this is only present when *Selection Mode* is set to **Single** or
+ **Multi**. It stipulates whether the item will be shown as selected
+ when the menu is displayed.
+- **icon button**\
+ the icon to show for the item. If you don\'t want to show an icon,
+ hide the icon element in the Layout parameter in the UI tab
+- **label text**\
+ the label to show for the item. If you don\'t want to show a label,
+ hide the label element in the Layout parameter in the UI tab
+- **action button**\
+ an action to run when the item is tapped
+
+To add an item, click the plus button at the bottom of the screen. Items
+can be rearranged and deleted by click-and-dragging at the right hand
+side.
+
+[]{#background}
+
+### Background
+
+Configures a rectangle shape to be used as the background for the
+element when it is displayed. The background will be stretched to fit
+the size of the element.
+
+If you want to use an image for a background, create a separate Image
+element and place it underneath. []{#event}
+
+### Event Tabs
+
+Event tabs stipulate what Tasker should do when the user interacts with
+the element in some way. When the scene is showing, the event will also
+occur if an action (probably Element Value) sets the element.
+
+Most events consist only of a task to specify but some allow a filter
+specification so that the task only runs if the event matches the
+filter.
+
+To help the task to decide what to do with the event and to allow a
+single task to handle many different events if desired, Tasker sets
+certain local variables which give specific information about it. The
+variables are easily accessible by clicking the usual variable tag icon
+in any action in the task.
+
+The following variables are available in all such tasks:
+
+- **%scene\_name**\
+ the name of the scene containing the element
+- **%element\_name**\
+ the name of the element that the user interacted with (e.g. Button1)
+- **%element\_type**\
+ the type of element (e.g. Button)
+- **%event\_type**\
+ the name of the event (e.g. Tap)
+
+[]{#text}
+
+#### Text Changed
+
+Elements: *TextEdit*
+
+This event is triggered whenever the text changes e.g. because a letter
+key has been pressed while the element had focus.
+
+- **%new\_val**\
+ the new text
+- **%old\_val**\
+ the old text
+
+Text entry is buffered so that it may be up to 1 or 2 seconds before new
+input is seen, and that input may include several accumulated changes.
+
+[]{#checkchange}
+
+#### Change
+
+Elements: *CheckBox, Toggle*
+
+- **%new\_val**\
+ the new state of the element (*on* or *off*)
+- **%old\_val**\
+ the last state (*on* or *off*)
+
+[]{#focus}
+
+#### Focus
+
+This event is triggered when the element gains or loses focus, probably
+because the user has tapped it or another focusable element.
+
+Elements: *TextEdit*
+
+- **%focused**\
+ whether the element now has focus (*true*) or not (*false*)
+
+[]{#tap}
+
+#### Tap, Long Tap
+
+Elements: *Button, Doodle, Image, Map, Oval, Rectangle, Text*
+
+In a *Map* element, the following variables are available:
+
+- **%coord**\
+ the latitute,longitude of the tapped location on the map
+- **%label**\
+ the label of the tapped GeoMarker (if any). You can add GeoMarkers
+ to a Map element with the action Scene / Element Add GeoMarker
+
+[]{#value}
+
+#### Value Selected
+
+Elements: *Number Picker, Slider*
+
+- **%new\_val**\
+ the new value of the element (e.g. 50)
+- **%old\_val**\
+ the last selected value (e.g. 43)
+
+[]{#itemtap}
+
+#### Item Tap, Item Long Tap
+
+Elements: *Menu*
+
+- **%select\_indices**\
+ a comma-separated list of currently selected items in the list (e.g.
+ 3,4)
+- **%select\_labels**\
+ a comma-separated list of the labels of currently selected items in
+ the list (e.g. Blue,Yellow)
+- **%tap\_index**\
+ the index of the item that was tapped to cause this event (e.g. 3)
+- **%tap\_label**\
+ the label of the item that was tapped to cause this event (e.g.
+ Blue)
+
+[]{#stroke}
+
+#### Stroke
+
+Elements: *Doodle, Image, Oval, Rectangle, Text*
+
+A stroke has two filter parameters.
+
+- **Direction**\
+ the direction from the start point of the stroke to the end point
+- **Length**\
+ minimum distance in (approximate) pixels from the start point of the
+ stroke to the end point
+
+If either of these parameters don\'t match the event, the task will not
+run.
+
+- **%stroke\_dir**\
+ Direction, as described above
+- **%stroke\_len**\
+ Length, as described above
+
+[]{#itemselect}
+
+#### Item Select
+
+Elements: *Spinner*
+
+Occurs when a **new** item is selected.
+
+- **%tap\_index**\
+ the index of the item that was selected
+- **%tap\_label**\
+ the label of the item that was selected
+
+[]{#linktap}
+
+#### Link Tap
+
+Elements: *WebView*
+
+A Link Tap has two filter parameters:
+
+- **URL**\
+ the URL of the tapped link. If entered, the tapped URL must
+ [match](#matching.html) the entry (e.g. http://\*.fruit.com) for the
+ task to run
+- **Stop Event**\
+ whether to stop the WebView following the link
+
+
+
+- **%url**\
+ URL as described above
+
+[]{#pageloaded}
+
+#### Page Loaded
+
+Elements: *WebView*
+
+- **%url**\
+ the URL of the page (e.g. http://i.hate.fruit/except/mangos.html)
+
+[]{#video}
+
+#### Video
+
+Elements: *Video*
+
+Occurs when the state of the video playback changes.
+
+- **%event\_subtype**\
+ the type of the video event, possible values being: *Prepared,
+ BufferStart, BufferEnd, RenderStart, Lagging, Finished*
+
+Note that the **Finished** event will never occur if the Video element
+has the `Loop` parameter checked.
+
+[]{#androidpowermanagement.html}
+
+Android System Power Management 
+----------------------------------------------------
+
+Starting with Android 5.0, many devices will act aggressively to try and
+save system battery power. Unless certain steps are taken, Tasker may
+not function as expected, either because Android is not sending it the
+needed signals in order to save power or because Android is even killing
+Tasker.
+
+A commonly noticed symptom is that profiles with Time contexts don\'t
+activate or deactivate at the expected time.
+
+### Tasker Run In Foreground Preference
+
+Make sure that `Menu / Prefs / Monitor / General / Run In Foreground` is
+**checked**.
+
+### Tasker Reliable Alarms Preference (Android 5.0+)
+
+In `Menu / Prefs / Monitor / General / Use Reliable Alarms`, make sure
+**When Off** or **Always** is selected.
+
+If **Never** is selected, Android may group alarms together so they go
+off too late. On some devices, Android may even kill Tasker at times if
+**Never** is selected.
+
+### Android Battery Optimization Setting
+
+If you have reliability problems, Tasker might need to be whitelisted so
+that it is not *battery-optimized* by Android.
+
+###### Vanilla Android Devices (Android 6.0+)
+
+The location of the setting may vary per device, but a common method is
+to launch the *Android Settings* app, select **Apps**, click the cog
+icon top-right, then **Battery optimization**. Click **All apps**, then
+Tasker, then **Don\'t optimize**.
+
+On a rooted device, it may be possible to change the battery optimiation
+parameters depending on the functionality you need from Tasker. An
+example app for this purpose is
+[Naptime](https://play.google.com/store/apps/details?id=com.franco.doze).
+
+###### Samsung (Android 5.1.1+)
+
+Some Samsung devices have a *Smart Manager* app. Launch the app, press
+the battery quarter of the screen, under **App optimisation** press
+**DETAIL** where you can adjust the settings for each app. It\'s
+advisable to disable this for Tasker if you are having reliablity
+problems.
+
+###### MIUI 7
+
+Launch Settings app, select Additional settings -\> Battery &
+performance -\> Manage apps battery usage -\> OFF []{#appcreation.html}
+
+App Creation 
+---------------------------------
+
+- [Introduction](#intro)
+- [Hello World Example](#example)
+- [App Configuration](#config)
+- [Signing](#sign)
+- [Target Device Requirements](#target)
+- [Miscellaneous](#misc)
+- [FAQ (External
+ Link)](http://tasker.dinglisch.net/faq-appcreation.html)
+
+[]{#intro}
+
+### Introduction
+
+Tasker allows creation of completely standalone apps (APK files) which
+have no requirement for Tasker to be installed on the device they\'re
+used on.
+
+The intention is to allow people to create their own apps for fun, for
+sale or just to share with friends. Or if you are concerned about all
+the permissions Tasker needs you can create an app that has only the
+permissions you require!
+
+App creation is uncomplicated and takes only a few seconds once you\'re
+setup.
+
+To create apps, you need the following on **your** device (not
+necessarily on the device(s) the app will run on):
+
+- Android 2.3+
+- *Tasker App Factory* (free, see below)
+- a device with an *ARM* or *x86* processor (the vast majority of
+ devices have one of those)
+
+App creation is accessed by long-clicking on a project (**not** the base
+project) or task and selecting **Export** then **As App**. Any linked
+resources needed (e.g. other tasks, images) are included as part of the
+new app.
+
+To export anything except a single task, you need to create a project
+and put anything you wish to export in the project.
+
+[]{#example}
+
+### Hello World Example
+
+Let\'s make a simple app that just pops up **Hello World!** when it\'s
+launched. This example assumes that you are in *Beginner Mode*, please
+make sure that `Menu / Prefs / UI / Beginner Mode` is checked before you
+start.
+
+#### 1. Create A Task
+
+- **make a new task**\
+ click on the Tasks tab then click **+** to add a new task. Give it a
+ name *Hello World*.
+- **give the task an icon**\
+ long-click on the colourful icon in the bottom right and pick any
+ icon
+- **add the Popup action**\
+ click **+** in the bottom left to add an action, select category
+ **Alert** and then action **Popup**. Fill in **Hello World!** in the
+ *Text* parameter, then click the accept button bottom left to accept
+ the action, then again to accept the task.
+- **ask Tasker to create an app**\
+ long-click on the task you just made, select **Export** then **As
+ App**. A popup appears mentioning a Missing App.
+
+#### 2. Install Tasker App Factory
+
+To generate apps, Tasker needs a free helper app called *Tasker App
+Factory*. It\'s available on Play Store and from the Tasker website.
+
+Click the accept button on the popup to install the helper app.
+
+#### 3. App Generation
+
+Tasker should now start generating your app, which will take maybe 12
+seconds depending on your device.
+
+If all goes well, the Cancel button will turn into an OK button meaning
+your app is ready!
+
+We can\'t run the app straight away though because it hasn\'t been
+installed. Click on the rightmost bottom button with the Android icon to
+ask Android to install your app.
+
+Once Android is done installing, you can click it\'s **Open** button to
+run the app, or you can simply go to the home screen and click on the
+app\'s icon in the launcher.
+
+You should see a Hello World popup!
+
+[]{#config}
+
+### App Configuration
+
+When in Beginner Mode, and if you only have one task to install, Tasker
+will make guesses about how to configure the resulting app.
+
+More usually, before an app is generated you will be presented with a
+configuration screen which lets you specify various options for the new
+app.
+
+[]{#sign}
+
+### App Signing
+
+Android requires that all apps be *signed* i.e. that they certify who
+created them. By default, Tasker uses an automatically-generated
+insecure certificate to sign apps and doesn\'t bother mentioning it.
+
+However, if you want to release an app via a public site (Play Store for
+example), you will need to sign it with a proper (secure) certificate.
+That\'s done so the site knows that it\'s you that\'s giving them the
+app each time you submit a new version.
+
+Certificates are kept in a *keystore* which is protected with a
+password. To generate a keystore with a secure certificate, use
+`Menu / More / Developer Options / Create Certificate`.
+
+Once you\'ve generated the keystore, Tasker will often need to ask you
+for the certificate password before app generation so that it can be
+used to sign each new version of your app.
+
+If Android\'s backup service is enabled in Android settings, Tasker
+makes a backup of the keystore there.
+
+Tasker also makes an automatic backup of the keystore to
+
+ /sdcard/Tasker/factory/keystore.user
+
+when it is first created and when you backup your profile data with
+`Menu / Data / Backup`. It\'s highly advisable to make a copy of that
+file and keep it safe away from your device.
+
+[]{#target}
+
+### Target Device Requirements
+
+The device the child app is used on must meet the following
+requirements:
+
+- the minimum SDK version specified in the Kid Config screen
+- have hardware corresponding to features specified in the Kid Config
+ screen
+
+[]{#misc}
+
+### Miscellaneous
+
+#### Accessibility Service
+
+Android accessibility support changed in Android 4.1 (JellyBean). If
+support is needed for accessibility services in 4.1+, the **Minimum
+Android Version** in the child Configuration screen must be set to
+**16** or higher. If support is required pre-4.1, it must be set to
+**less than** 16.
+
+In other words, to support both pre- and post-4.1 devices, two APKs must
+be generated.
+
+This applies to all features that rely on an Accessibility Service
+(events *Notification, New Window, Button Widget Clicked, Notification
+Click*, variables *%NTITLE, %WIN*, *App Context* from min version 20+)
+
+Google Play Store allows publication of APKs targetting different
+Android versions under the same package name, however this has not been
+tested by the developer of Tasker.
+
+#### Launch Task
+
+When the specified launch task runs in the child app, the following
+local variables will be available to it:
+
+- *%launch\_data*: the data (URI) in the intent that caused the child
+ app to launch (often empty)
+
+#### Monitor Service
+
+Most child apps include a service which constantly monitors for events.
+If you know that you don\'t need to monitor events anymore (in-between
+app launches) you can use the *Disable* action in the Tasker category to
+stop it.
+
+It will be automatically started again next time the app is launched.
+
+#### Widgets / Shortcuts
+
+- it\'s not possible in Android to auto-create widgets with any app
+- it\'s not possible \*currently\* to offer the user child-app
+ widgets, that may be available in the future to some extent
+
+#### Memory Problems
+
+If you are having low memory problems during app generation, you can ask
+the App Factory to use external storage for the generation process. See
+`Menu / Prefs / More / Factory`.
+
+#### Preferences
+
+The new app does not take over any preferences from Tasker, all of the
+preferences in the child app are in their default state, with a couples
+of exceptions.
+
+Despite the misleading name, you can use the *Set Tasker Pref* action in
+the *Tasker* category **in the child app** to change some of the
+**child\'s** preferences when it is running.
+
+#### Available Tasker Features
+
+Obviously, the device the new app runs on may not have the same set of
+available e.g. actions as the device the app is created on.
+
+The *Test* action in the *Misc* category allows you to check which
+Tasker features are available at *run time* (when the app is being
+used).
+
+#### Images
+
+Referenced images (even scene doodles and photos from internal storage)
+are bundled in with the app.
+
+Tip: to include a dynamic image (e.g. which you download to a file path
+via HTTP Get), put the image reference in a variable, and put the
+variable in the relevant action.
+
+#### Plugins
+
+When the new app is launched, it checks that all referenced plugins are
+installed on the device and prompts the user to install missing ones.
+
+Some plugins may not work on other devices if they themselves store
+something about the action to be performed, since that data will not be
+available on the other device.
+
+Plugin authors: see also
+[here](http://tasker.dinglisch.net/plugins.html#gen).
+
+#### JavaScript actions
+
+Scripts referenced by a *JavaScript* action are packaged with the new
+app and run directly from there.
+
+#### SL4A Scripts
+
+Scripts referenced in a *Run Script* action are packaged with the new
+app and unpacked to `/sdcard/sl4a/scripts`, prefixed with the package
+name, on first run. Tasker automatically inserts the
+WRITE\_EXTERNAL\_STORAGE permission for that purpose.
+
+If SL4A is missing on the target device, the new app will prompt the
+user to download when launched.
+
+If a new version of the app is reinstalled on the target device, the new
+versions of the scripts will be written if the **length** has changed.
+
+#### Other External Components
+
+The following external components are also checked for on launch of the
+new app where necessary:
+
+- Speech engines (*Say, Say After*)
+- APNDroid (*Mobile Data APN*)
+- Zoom (*Zoom* action category actions)
+- apps for *3rd Party* actions
+- apps for *3rd Party* events
+
+#### Maps
+
+The data for Maps is provided by Google and they require a *maps key*
+(v2) for each developer that uses it. If you are using Map scene
+elements in your app, you need a key from Google that can be included
+with your app.
+
+Here are the steps to acquire a key:
+
+1. \[if necessary\] setup a [Google
+ Account](http://www.google.com/accounts/)
+2. \[if necessary\] create a [developer
+ account](http://developer.android.com/distribute/index.html)
+3. \[if necessary\] create a [signing keystore](#sign)
+4. get the SHA1 fingerprint of your certificate:
+ `Menu / More / Developer Options / Certificate Checksum`
+5. Create an [Google API
+ Project](https://developers.google.com/maps/documentation/android/start#create_an_api_project_in_the_google_apis_console)
+6. Obtain the [Maps
+ key](https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key)
+
+Enter the key in the App Configuration screen when generating your app.
+Note that the box will only be presented if your app uses one or more
+Map scene elements.
+
+Note that the device on which the created app is used needs Google\'s
+Play Services APK installed, otherwise the map elements will not
+function.
+
+#### Variables
+
+The new app is completely independent of Tasker, so it also does not
+share any variable values.
+
+#### Permissions
+
+Tasker attempts to reduce the set of permissions required by the new app
+to the smallest set required for the functionality it contains. For
+example, no *Vibrate* permission will be requested if there is no
+vibrate action used.
+
+The WAKE\_LOCK permission is unfortunately always required for technical
+reasons.
+
+#### App Size
+
+Generated apps are minimally around 640K but are unlikely to be
+significantly larger unless a lot of images are referenced. It\'s
+possible that this minimum can be reduced in the future.
+
+#### Encryption
+
+Code for encryption is included in any app created by App Factory,
+however if you don\'t use encryption features it\'s unlikely to be a
+problem in terms of export restrictions. However, that is an opinion, it
+is **not legal advice**.
+
+Note that code libraries for encryption are included with every Android
+device. Tasker (and child apps) use these libraries to perform the
+encryption, they do not contain encryption code themselves.
+
+Licence
+
+You are free to distribute and sell apps created by Tasker in any way
+you wish. No licence fees to the developer of Tasker are necessary. It
+would be courteous to reference Tasker and it\'s website
+(http://tasker.dinglisch.net) somewhere in your new app if possible.
+
+Please note that use of images from some Ipacks in commercial software
+is prohibited by the licence terms of the image creators. You will need
+to contact the image designer to request their assent in such cases.
+(the origin of an Ipack\'s images is displayed in the Ipack image
+selection screen).
+
+[]{#app_widgets.html}
+
+Task / Shortcut Widgets 
+--------------------------------------------
+
+The standard way of running a Tasker task is by attaching it to a
+profile which performs it when the profile becomes active. However,
+tasks can be directly assigned to icons on the home screen called
+*Widgets* or *Shortcuts*.
+
+#### Standard Widgets / Shortcuts
+
+These consist of an icon (the Task icon) with a label (the Task name)
+underneath, and look identical to the normal application icons in the
+home screen.
+
+Clicking on the icon runs the associated Task.
+
+#### Task Timer Widgets
+
+This type consists of an icon and label, like the standard widgets, but
+also has a countdown timer display which counts down Days, Hours,
+Minutes and Seconds.
+
+When the timer expires (reaches 0) the associated Task is run.
+
+Tapping on the **icon** of the widget shows a configuration screen where
+the timer can be configured.
+
+Tapping on the **timer section** of the widget will pause, restart or
+reset the timer, depending on its current state.
+
+Note that the timer updates more rarely when it is still a long way from
+expiry in order to minimize power usage.
+
+See Also:
+
+- action [Timer Widget Control](#help/ah_timer_widget_control.html)
+- action [Timer Widget Set](#help/ah_timer_widget_set.html)
+- action [Test Tasker](#help/ah_test_tasker.html)
+- event [Timer Change](#help/eh_timer_change.html)
+
+#### Creating a Widget / Shortcut
+
+1. Click and hold in an empty space on the Android home screen, until a
+ dialog appears.
+2. Select **Widgets** or **Shortcuts**
+3. Select **Task** or **Task Timer** (Widgets only)
+4. Pick an existing task or create a new one. When creating a new one,
+ if you do not expect to change the function of the widget/shortcut
+ select One-Time to avoid it cluttering your list of tasks.
+5. Use the [Configuration Screen](#activity_widget_configure.html) to
+ configure what should happen when the icon is clicked (or the timer
+ expires, in the case of a Task Timer widget). Take care to select an
+ appropriate name and icon for the task, as these will appear on the
+ home screen.
+
+#### Changing a Widget / Shortcut
+
+The function of widgets or shortcuts created from one-time tasks cannot
+be changed, it must be deleted and recreated.
+
+On the other hand, if you associate a normal named task with a widget or
+shortcut then when the task is changed (via the Task Edit screen) the
+function of the widget or shortcut also changes.
+
+There are also some actions which will change the appearance of any
+widget:
+
+- *Tasker/Change Icon Set*: changes the icon of a set of widgets to a
+ different style.
+- *Tasker/Set Widget Icon*: changes the icon of a particular widget
+- *Tasker/Set Widget Label*: changes the label of a particular widget
+
+The latter two you could use to visually show the status of something
+e.g. WiFi.
+
+#### Deleting a Widget / Shortcut
+
+Click and hold on the icon in the Android home screen until the dustbin
+icon appears. Drag the widget or shortcut icon to the dustbin icon and
+release.
+
+[]{#diff}
+
+#### Differences Between Widgets and Shortcuts
+
+##### Advantages of Shortcuts
+
+- they can be created in some places that widgets can\'t e.g. in home
+ screen folders
+- their layout probably better matches the default launcher layout
+- long shortcut labels will scroll when selected in the default
+ launcher
+
+##### Advantages of Widgets
+
+- their icon and label can be dynamically changed after creation via
+ the *Set Widget Icon* and *Set Widget Label* actions.
+- timer widgets are possible
+- they can be created without a label
+
+So a shortcut should be used unless the extra configuration
+possibilities of a widget are necessary.
+
+#### General
+
+- you can create as many Tasker widgets and shortcuts as you like. You
+ can even have several Timer widgets running at the same time.
+- Timer Task widgets continue to update even when the screen is off.
+
+[]{#beginner.html}
+
+Beginner Mode 
+----------------------------------
+
+When Tasker first starts, *Beginner Mode* is enabled.
+
+In Beginner Mode, Tasker attempts to simplify things for inexperienced
+users, mostly by UI elements which are unlikely to be needed by
+inexperienced users.
+
+Beginner Mode can be disabled by unchecking the option:
+
+> ` Menu / Prefs / UI / Beginner Mode`
+
+Some of the changes made in Beginner Mode are:
+
+- main screen, Variables tab removed
+- main screen, export options removed
+- main screen, project tab not accessible
+- task edit screen, task properties icon removed
+- action edit screen, Label, Continue On Error parameters removed
+- prefs screen, many options removed
+- various places, variable selection not possible
+
+In the userguide, when references are found to things which do not
+appear on the screen. It\'s worth disabling Beginner Mode to see if
+that\'s the problem.
+
+[]{#cpu.html}
+
+CPU Control 
+--------------------------------
+
+------------------------------------------------------------------------
+
+**Note:** CPU control can damage your hardware e.g. by the CPU
+overheating. As for all Tasker functions, you use it at your own risk!
+
+------------------------------------------------------------------------
+
+### General
+
+On a rooted device (only) Tasker is able to control the CPU frequency of
+an Android device to some extent. This is usually done either to save
+battery or make the device more responsive depending on the
+circumstances.
+
+The relevant control action is **CPU** in the **Misc** category. You can
+monitor the current state with the variables **%CPUFREQ** and
+**%CPUGOV**.
+
+There are two aspects which can be controlled, the Frequency Range and
+the CPU Governor. You will need to experiment with combinations of these
+to achieve the best results.
+
+### Frequency Range
+
+You can set the minimum and maximum frequency which the CPU is allowed
+to run at. Only certain frequencies are valid, depending on the CPU
+(click on the magnifying glass button to select a valid value).
+
+The maximum frequency is probably initially set lower than the maximum
+frequency that the CPU can actually handle. If that is the case, you
+should be very cautious about setting it higher. Tasker will warn you
+the first time you try to do configure an action to do that, assuming
+you have not been using other apps to change the maximum frequency
+limit.
+
+### CPU Governor
+
+The active *governor* decides what the CPU frequency should be set to at
+a particular time, within the frequency range you have set. Each has
+it\'s own unique strategy. Here are the most common governors:
+
+- *Performance*\
+ keeps the CPU frequency always at the maximum. Most power-hungry,
+ most responsive.
+- *Powersave*\
+ keeps the CPU frequency always at the minimum. Least power-hungry,
+ least responsive.
+- *Ondemand*\
+ when the CPU is needed, immediately sets it to maximum frequency.
+ Slowly reduces the frequency back down to the minimum as time
+ passes. Responsive, reasonable power usage.
+- *Interactive*\
+ like Ondemand, but more responsive with slightly more battery usage.
+- *Conservative*\
+ when the CPU load is needed, slowly increases the frequency to
+ maximum. When the CPU is no longer needed, immediately drops back to
+ the minimum. Less power-usage than Ondemand or Interactive, less
+ responsive.
+
+Not all governors are available on all ROM versions. Your device may
+also have a governor not described here. You can still set that governor
+with Tasker.
+
+### CPU Action Not Available
+
+Common problems are:
+
+- *root not recognized*\
+ Tasker decides that a device is rooted if
+ `/system/app/Superuser.apk` is present and `su` is present in one of
+ the directories of \$PATH
+- *no available frequencies*\
+ Tasker needs to know what frequencies it can set the CPU to. It
+ looks for the files
+ `/sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies, /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state`
+ and `/system/etc/scaling_available_frequencies` (in that order). If
+ you know what your CPU frequencies are, you could write them
+ (space-separated, in numerical order) to the first (any number of
+ CPUs) or last (1 CPU only) of those files.
+
+[]{#activity_widget_configure.html}
+
+Widget / Shortcut Configuration 
+----------------------------------------------------
+
+This screen allows selection and configuration of a task which will be
+performed when an icon is clicked on the Android home screen or a timer
+elapses.
+
+Please read about [Task Widgets / Shortcuts](#app_widgets.html) before
+venturing further on this screen.
+
+The layout of the Configuration screen is nearly identical to that of
+the [Task Edit](#activity_taskedit.html) screen.
+
+When creating a Task Timer widget, you\'ll find a different button in
+the bottom right which allows initialization of the timer. You can use
+this, or wait till the widget is created and then click on the icon to
+configure the timer.
+
+[]{#flowcontrol.html}
+
+Flow Control 
+---------------------------------
+
+#### Overview
+
+Task flow control is based on the following Tasker elements:
+
+- [variable](#variables.html) values
+- [conditions](#condition) on individual actions
+- *If / Else / Endif* actions for conditional grouping of following
+ actions
+- *For / End For* to do a set of actions once for each of a set of
+ elements
+- *Goto* action (jumping around within a task).
+- *Perform Task* action (calling other tasks as subroutines)
+- *Stop* action (terminate task immediately)
+
+On the Wiki there is a detailed example of [processing a file\'s
+content](http://tasker.wikidot.com/fileproc) \[External Link\].
+
+Tip: if you accidentally create a task that never ends when
+experimenting with loops, use the **Kill** button in the Task Edit
+screen to end it manually.
+
+[]{#condition}
+
+##### Conditions
+
+Every action can have a condition associated with it (specify this in
+the Action Edit screen). If the condition does not match, the action
+will be skipped.
+
+A condition consists of an *operator* (\'equals\' etc) and two
+*parameters*. The possible operators are:
+
+- *Equals* (eq)\
+ The left parameter is identical to the right parameter.
+- *Doesn\'t Equal* (neq)\
+ The left parameter is not identical to the right parameter.
+- *Matches* (\~)\
+ The right parameter is a pattern which the left parameter is
+ [matched against](#matching.html).
+- *Not Matches* (!\~)\
+ As above, but the match must fail for the action to be executed.
+- *Matches Regex* (\~R)\
+ The right parameter is a regular expression which the left parameter
+ is [matched against](#regex).
+- *Doesn\'t Match Regex* (!\~R)\
+ As above, but the match must fail for the action to be executed.
+- *Maths: Less Than* (\<)\
+ Both parameters (after variables are substitued) must be numbers or
+ mathematical expressions and the first must be **less** than the
+ second e.g. `3` \< `6`. See [Maths](#maths.html) for more info.
+- *Maths: Greater Than* (\>)\
+ As above, but the first parameter must evaluate to **more** than the
+ second.
+- *Maths: Equals* (=)\
+ As above, but the two parameters must be numerically equal.
+- *Maths: Isn\'t Equal To* (!=)\
+ As above, but the two parameters must be **not** numerically equal.
+- *Maths: Is Even* (Even)\
+ The left parameter is an even number.
+- *Maths: Is Odd* (Odd)\
+ The left parameter is an odd number.
+- *Is/Isn\'t Set* (Set/!Set)\
+ Whether the specified variable has a value or not.
+
+Expressions which are not mathematically valid e.g. *I Am The Walrus \>
+5* give a warning and evaluate to **false** when used with a
+mathematical operator.
+
+[]{#for}
+
+#### Foreach Loop
+
+Goal: perform a set of actions for each of *apple*, *pear* and *banana*.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **For**\ Loop once for each of
+ %item\ apple, pear and banana
+ apple,pear,banana
+
+ 2. **Action One**\ Example: Flash %item
+
+ 3. **Action Two**\ \...
+
+ 4. **End For**\ Return to action 1 if
+ we havn\'t done all the
+ items yet
+ ----------------------- ----------------------- -----------------------
+
+Result: Action One and Action Two are performed three times. The first
+time, the variable %item is set to *apple*, the second time *pear* and
+the last time *banana*.
+
+You can insert a `Goto` action in the loop with either *Top of Loop*
+(meaning continue, skip to the next item straight away) or *End of Loop*
+(meaning break, stop without doing any more items) specified.
+
+In adition to simple text, the `For` action accepts any comma-separated
+combination of these Items:
+
+- a numeric range e.g. 1:5 (= **1,2,3,4,5**)
+- a numeric range with a jump e.g. 8:2:-2 (= **8,6,4,2**)
+- a numeric range defined by variable values e.g. *2:%end:%skip*,
+ *1:%arr(\#)*
+- a variable name (which is replaced) e.g. %fruit (= **banana** maybe)
+- a [variable array](#arrays) part e.g. *%arr(1:2)* (= %arr1, %arr2 =
+ **apple,banana** maybe)
+
+A common case is to use %arr(), which performs a loop for each element
+in the array %arr.
+
+**Warning**: the *Values* parameter in the loop is reevaluated with each
+iteration of the loop, meaning that modifying array variables which
+appear there from within the loop can have unexpected effects. To
+workaround that, it can be best to use the following sequence:
+
+ Variables Set, %values, %arrayWhichWillChange()
+ Variable Split, %values
+ For, %value, %values()
+ ...
+
+#### For Loop
+
+Goal: perform a set of actions for each of a set of elements in turn.
+
+Use the *Foreach Loop* as described above, with the *Items* parameter
+being a range specification e.g. 4:0, 100, 0:8:2 (=
+**4,3,2,1,0,100,0,2,4,6,8**).
+
+#### Until Loop
+
+Goal: perform a Task X until some condition is met (at least once)
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Action One**\ \...
+
+ 2. **Action Two**\ \...
+
+ 3. **Goto**\ Return to action 1 if
+ 1\ runtime \< 20
+ If %qtime **\<** 20
+ ----------------------- ----------------------- -----------------------
+
+Result: Action One and Action Two are performed until %QTIME contains
+the value 20 or more i.e. until the task has been running for 20
+seconds.
+
+Note: %QTIME is a builtin local variable available in all tasks.
+
+#### While Loop
+
+Goal: perform a Task X while some condition is met.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Stop**\ Stop task if it\'s not
+ \ crunchy, otherwise go
+ If %fruit **Not to next action
+ Matches** Apple
+
+ 2. **Action One**\ \...
+
+ 3. **Action Two**\ \...
+
+ 4. **Goto**\ Go back and see if
+ 1 we\'re still crunchy
+ ----------------------- ----------------------- -----------------------
+
+Result: Action One and Action Two are performed while %fruit contains
+the value Apple.
+
+#### Counter Loop
+
+Goal: perform a Task X a set number of times.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Variable Set**\ Initialize the counter
+ %count, 0
+
+ 2. **Action One**\ \...
+ Label: *LoopStart*
+
+ 3. **Action Two**\ \...
+
+ 4. **Variable Add**\ Add one to %count
+ %count, 1
+
+ 5. **Goto**\ Return to action 2 if
+ *LoopStart*\ count \< 10
+ If %count **\<** 10
+ ----------------------- ----------------------- -----------------------
+
+Result: after initialization of %count to 0, the task loops around the
+actions from 2-5 until %count reaches 10, at which point the condition
+on the `Goto` fails and the end of the task is reached.
+
+Note that we used a `Goto` to a **labelled** action this time. In all
+but the very simplest tasks it\'s better to use a label rather than a
+number. It\'s easier to work out what\'s happening and if you insert or
+delete actions before the loop starts, the `Goto` will still jump to the
+right place.
+
+An alternative way to do this loop is to use a For action specified as
+*0:10*.
+
+#### If / Then / Else Condition
+
+Goal: perform certain Tasks if conditions are met, otherwise perform a
+different task.
+
+ ----------------------- ----------------------- -----------------------
+ 1. **If**\ **\~** is short for
+ %fruit **\~** Apple \'matches\'
+
+ 2. **Action One** \...
+
+ 3. **Action Two**\ \...
+
+ 4. **Else If**\ an `Else` action with a
+ %fruit **\~** Pear condition
+
+ 5. **Action Three** \...
+
+ 6. **Else**\
+
+ 7. **Action Four**\ \...
+ ----------------------- ----------------------- -----------------------
+
+Result: actions One and Two are executed if %fruit matches Apple, Action
+Three is executed if %fruit matches Pear, otherwise Action Four is
+executed.
+
+Notes:
+
+- you can have as many `Else If`s in a condition as you like
+- if your condition is in the middle of a more complicated task, you
+ need to tell Tasker where the condition ends with an `End If` action
+
+#### Subroutines
+
+To call another task, use the `Perform Task` action. To use it as a
+subroutine, you just need to ensure that the priority of the calling
+task is less than the priority of the called task (more info:
+[scheduling](#scheduling)).
+
+The parent can optionally pass values to the child and receive a result
+back:
+
+*Parent Task*
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Perform Task**\ pass 5 to the child,
+ Child,\ expect a result in
+ Priority, 10\ %result
+ %par1, 5,\
+ Result Value Variable,
+ %result
+
+ 2. **Variable Flash**\ what did we get back ?
+ Result: %result
+ ----------------------- ----------------------- -----------------------
+
+*Child Task*
+
+ ----------------------- ----------------------- -----------------------
+ 1. **Variable Set**\ add one to the value
+ %newval, %par1 + 1, Do that was passed
+ Maths
+
+ 1. **Return**\ set %result in the
+ %newval\ parent to the value of
+ %newval in the child
+ ----------------------- ----------------------- -----------------------
+
+Result: the parent flashes **6**
+
+Notes:
+
+- changes made to *%par1* and *%par2* in the child task are **not**
+ reflected by their changing in the parent task
+- receiving a return value is optional for the parent, even if the
+ child tries to give it one
+- unlike `Return` statements in most computer languages, Tasker\'s
+ does not necessarily stop the child task, so if the child and parent
+ have the same priority they can both run together and the child
+ return several results over time.
+
+[]{#encryption.html}
+
+Encryption 
+-------------------------------
+
+------------------------------------------------------------------------
+
+**Note:** encryption functions are not available to new customers or in
+Play Store versions of Tasker due to US export restrictions.
+
+------------------------------------------------------------------------
+
+Tasker has the ability to encrypt and decrypt files. The relevant
+actions are in the *Encryption* action category.
+
+Since decryption can be automated, you have the possibility to keep data
+files encrypted outside of certain times, locations, applications etc.
+
+**Warning**: make backups of your files while setting up encryption
+until you understand how the system works and are sure the
+encryption/decryption process does not cause any corruption.
+
+**Tip**: Tasker does not give progress reports while it\'s doing
+encryption, if you want to know when an long decryption operation is
+finished, just put a *Vibrate* action or similar after the
+*Encrypt/Decrypt* action.
+
+#### Keys
+
+Tasker uses a system of named *keys*. All of the encryption actions can
+specify a key name so that you can use different keys with different
+files (if desired).
+
+If no key name is specified, **default** is used.
+
+Once a passphrase for a key is entered, the ciphers it generated are
+stored in memory until explicitly deleted. The deletion might be
+specified after an *Encrypt/ Decrypt File* action, or explicitly with
+the *Clear Key* action.
+
+#### Setting Up Encryption
+
+##### General Preferences
+
+First thing to do is check whether the encryption preferences for
+**Encryption Iterations** and **Encryption Algorithm** are as you wish.
+Once you start encryping things, it\'s time consuming to start again
+with new encryption preferences.
+
+The preferences can be found at `Menu / Prefs / Action`. Be sure to have
+a look at the help text for each item.
+
+##### Initial Encryption
+
+To start with, you probably want to encrypt some files which are in a
+particular directory, which you can then decrypt as they are needed.
+
+To do that, create a task called **Encrypt** or similar and add one or
+more *Encrypt File* or *Encrypt Dir* actions to it.
+
+By default, the key is cleared once the file is encrypted, so click
+\'Leave Key\' for all but the last action, otherwise you\'ll have to
+enter your passphrase for each file.
+
+Next, [create a Tasker shortcut](#app_widgets.html) on the home screen,
+using the *Encrypt* task. Tap the widget to encrypt your files. Notice
+how you are only asked for the passphrase for the first one, because it
+is stored until cleared.
+
+The encrypted files will all receive an extension *.tec* and the
+original files are deleted.
+
+#### Decryption
+
+Once you have a set of encrypted files, you need to setup the contexts
+in which they will be decrypted.
+
+Create another task called *Decrypt* or similar, and add *Decrypt*
+actions to it to match the encrypt actions you setup previously.
+
+**Don\'t** click Clear Key, otherwise you\'ll have to enter your
+passphrase for every file (and at the start of encryption).
+
+Now you can use your *Encrypt* and *Decrypt* tasks whenever you like.
+For instance, you could create a profile with a Location Context and run
+your *Decrypt* task when entering the location (assign Decrypt as the
+Enter task) and your *Encrypt* task when leaving the location (assign
+*Encrypt* as the Exit task).
+
+**Important**: when you use the *Decrypt* action, it recreates the
+original file from the encrypted copy, but does **not** delete the
+encrypted version.
+
+When you re-encrypt the file, if it has not changed it is simply deleted
+since we already have an encrypted copy. If it **has** changed, it is
+re-encrypted.
+
+The purpose of this method of operation is to:
+
+- avoid the lengthy encryption process when unnecessary
+- prevent accidental double-encryption (encrypting the same file
+ twice)
+
+#### *Enter Key* Action
+
+It\'s not always convenient to enter the key at the point at which de-
+or encryption takes place. This action allows you to specify the
+passphrase for a key at a different point.
+
+If you don\'t wish to double-enter a key when encrypting, you can also
+use this action before an Encrypt action and not select *Confirm*.
+
+#### *Set Key* Action
+
+To allow full-automation of en/decryption, the passphrase for a key can
+also be set without user interaction. However, this is much less secure
+tham `Enter Key` because:
+
+- the passphrase (as part of the action) is stored in **clear text**
+ in device memory and could be read by the root user if the device OS
+ is compromised
+- although the passphrase is itself encrypted when a backup is made to
+ SD, the parameters for that encryption can be recovered from the
+ java code in the Tasker apk file
+
+#### Security
+
+##### Algorithm
+
+Tasker uses symmetric encryption, meaning the same passphrase is used
+both to encrypt and decrypt the data.
+
+The default algorithm is \"PBEWithMD5And128BitAES-CBC-OpenSSL\". PBE
+stands for password-based encryption, see [RFC
+2898](http://www.ietf.org/rfc/rfc2898.txt).
+
+A salt is combined with the passphrase several hundreds of times using
+the MD5 algorithm to produce a key which is used for the 128-bit
+(default setting) AES algorithm.
+
+The number of iterations and algorithm can be set in
+`Menu / Prefs / Action`.
+
+##### Pass Phrases
+
+The longer the passphrase, the more secure the data. Minimally 8
+characters of mixed alphabetic, numeric and punctuation characters is
+recommended.
+
+##### Clearing Keys
+
+While a key\'s ciphers are in memory, anyone can use the key for
+decryption or encryption if your device is lost or stolen, so it may be
+wise to setup a *Clear Key* action e.g. when the device is turned off
+(see Screen Off in the Event Context) or at a particular time (Time
+Context), depending on what you are using the encryption for.
+
+##### Manually Encrypting/Decrypting
+
+You can use Tasker\'s file browser (action Browse Files) to
+encrypt/decrypt files directly, via a long-click on the file.
+[]{#gestures.html}
+
+Gestures & Shaking 
+---------------------------------------
+
+#### General
+
+*Gestures* are physical movements of the phone in space, which you first
+record by creating a new Event of type *Gesture* (in the *Misc*
+category).
+
+When you later redo the gesture while using your device, Tasker will
+carry out the corresponding task(s) you have attached to its profile.
+
+Like normal events, gestures are restricted by other contexts. For
+example, if you define a profile with a Gesture (Event) and Application
+context, the gesture will only be recognized while using that particular
+application.
+
+Note: it might be a good idea to disable Tasker before setting up new
+gestures, as otherwise you are likely to trigger previously defined
+ones.
+
+#### Recording A Gesture
+
+##### Gesture Points
+
+First off, it\'s important to know that Tasker only records the
+particular points (which we\'ll call *inflection points*) of a gesture
+that you tell it to. For example, recording a gesture involving tilting
+the phone to the left and back you would record three inflection points:
+the start, the tilted left position, and the end (which is the same as
+the start in this case).
+
+You can record as many points as you like, but in general it\'s best to
+record only the points where the phone is not moving.
+
+##### Recognized Movements
+
+Tasker will only recognize changes in the **angle** of the phone i.e.
+**tilting** to left or right, backwards or forwards, or rotating
+vertically. Imagine three poles going through the device in the three
+dimensions.
+
+**Moving** the phone backwards or forwards, up or down or side to side
+cannot be recognized.
+
+##### Procedure
+
+1. create a new Gesture Event and give it a name (so you can
+ differentiate between different gestures).
+2. put the phone in the position where you want the gesture to start
+ and **press-and-hold** the **Call**, **Camera**, **Menu**,
+ **Search** or **Volume** hardware buttons to record the point. The
+ device will buzz.
+3. move to another (preferably not-moving) point on the path of your
+ gesture, and press the button again (not a long press). The device
+ will buzz.
+4. on the **final** inflection point, **press-and-hold** the button to
+ mark the end of the gesture. The device will buzz again and the
+ \"Recorded.\" message should now flash up.
+5. Press **Done**, and add a Vibrate action so you can hear when your
+ pattern matches when testing it.
+
+#### Activation
+
+##### Calibration
+
+Before trying to match a pattern, you probably need to calibrate the
+hardware in your device. Go to `Menu / Prefs / Monitor / Gestures`.
+Press the **Calibrate** button and tilt your phone around in all
+directions.
+
+Tasker now has some idea what kind of values the *accelerometer* in your
+phone produces.
+
+You only need to calibrate once.
+
+#### Matching
+
+Now exit Tasker and move your device through the points you previously
+defined when recording. You should hear the device vibrate when it
+reaches the final recorded point.
+
+If not, try playing with the values in the Gesture Settings screen. For
+instance, you could try raising the Match Radius (but be careful not to
+raise it too much or you\'ll get a lot of matches by mistake).
+
+#### Power Usage
+
+Tasker does its best to limit power usage of gesture monitoring.
+
+- monitoring for gestures only takes place when all the other contexts
+ in a profile are already active (and so the gesture might have a
+ chance of activating the profile). For example, if you combine an
+ Application and Gesture (Event) context, gesture monitoring will
+ only take place while using that particular application.
+- Gesture monitoring is by default turned off when the display is off
+ unless a power source is connected to the device, unless specified
+ otherwise in `Menu / Prefs / Monitor / Display Off Monitoring`
+- updates from the accelerometer are at the minumum rate until the
+ start of a gesture is detected.
+
+[]{#icons.html}
+
+Icons 
+--------------------------
+
+Tasker can use four categories of icons: [Application](#app),
+[Built-In](#builtin), [Ipack](#ipack), [User-Installed](#user).
+
+In some places it\'s also possible to use any image stored on local
+media as an icon.
+
+[]{#app}
+
+#### Application Icons
+
+These are taken from applications installed on the device.
+
+Minor note: if the icon of the application changes, an update of
+previously created widgets/shortcuts can be forced by creating a single
+widget with the new icon and then rebooting.
+
+[]{#builtin}
+
+#### Built-In Icons
+
+These come with Tasker and are kept in the device\'s memory. []{#ipack}
+
+#### Ipack Icon Sets
+
+[Ipack](http://ipack.dinglisch.net) is a free, open format for sharing
+of icon sets between Android applications. Ipack icon sets can be either
+installed from [Play Store](http://market.android.com/search?q=ipack) or
+from the [Ipack website](http://ipack.dinglisch.net/download.html).
+
+When setting an icon, you will notice an item labelled *Download More
+Icons*. Clicking on it will use the appropriate source depending on
+which version of Tasker you have.
+
+[]{#user}
+
+#### User-Installed Icons
+
+You can also install your own icons directly into Tasker\'s icon
+directory `/sdcard/Tasker/.icn/`. Make sure the icons are in a
+subdirectory. The subdirectory should also only be one level deep (no
+subsubdirectories).
+
+Icons must be in PNG format.
+
+Example: a two-icon set called *Christmas* would have the two files in
+these locations:
+
+> `/sdcard/Tasker/.icn/Christmas/santa.png`\
+> `/sdcard/Tasker/.icn/Christmas/snowman.png`
+
+[]{#intents.html}
+
+Intents 
+----------------------------
+
+Intents are Android\'s main method for allowing apps to communicate with
+each other and share data. Intents are for advanced users. This document
+is not intended to explain how intents work, but how to use Tasker\'s
+intent facilities.
+
+### Sending Intents
+
+You can find information about intents and details of several built-in
+Android intents on the Android SDK [Reference
+Site](#%20https://developer.android.com/reference/android/content/Intent.html).
+
+Tasker allows you to send arbitraty intents using the *Send Intent*
+action in the *Misc* category. This allows you to provoke behaviour in
+other apps, when you know the particular form of intent they are
+designed to respond to.
+
+#### Send Intent Parameters
+
+Note that any parameter specified except Extras will reduce the set of
+possible receivers of the intent.
+
+##### Action
+
+What the sender would like the receiver to do with the data.
+
+Example: `android.intent.action.VIEW`
+
+##### Cat
+
+Gives additional information about the action.
+
+##### Mime-Type
+
+From the developer reference: \"This is used to create intents that only
+specify a type and not data, for example to indicate the type of data to
+return.\"
+
+Can\'t be used together with a Data specification.
+
+##### Data
+
+The main data specification in the form of a URI.
+
+Can\'t be used together with a Mime-Type specification.
+
+##### Extras
+
+Any additional data to send with the intent.
+
+The extras must be in the form of a single **colon-separated** key and
+value.
+
+If the value can be parsed as an integer, long (integer ending in L),
+floating point number, double (float ending in D) or boolean
+(true/false) it will be treated as one.
+
+The value can also be forced to a simple type (long etc) or `Uri` via
+casting.
+
+The name of a Java object created via the Java Function action which is
+of type `Parcelable` can also be used (e.g. a `Bundle`)
+
+If none of the above apply, the value will be treated as a `String`.
+
+Examples:
+
+- have\_flowers:true\
+ (`boolean`)
+- this.is.an.integer.example:34\
+ (`int`)
+- this.is.a.double.example:34D\
+ (`int`)
+- address: (Uri) http://a.b\
+ (`Uri`)
+- bunchofvalues:mybundle (where mybundle is the name of a Java object
+ of type Bundle)\
+ (`Parcelable`)
+- simple.string.example:hello there!\
+ (`String`)
+
+##### Package, Class
+
+Allow specification of a particular package and/or class within the
+package to restrict the broadcast to.
+
+##### Target
+
+The type of Android component which should receive the intent.
+
+#### Finding App Intents
+
+Many intents that an app listens for are declared in its package
+manifest (called AndroidManifest.xml). You can view details of those
+intents using the *aapt* tool that comes with the Android SDK like this:
+
+> ` aapt dump xmltree example.apk AndroidManifest.xml`
+
+Look for Intent Filter elements.
+
+It\'s not (easily) possible to determine which intents an app listens
+for dynamically (i.e. while the app is running).
+
+### Receiving Intents
+
+Tasker allows you to receive a large range of intents, sent by apps or
+the system, using the *Intent Received* event in the *System* category.
+
+For each event you create, Tasker sets up a corresponding [Intent
+Filter](https://developer.android.com/reference/android/content/IntentFilter.html)
+object.
+
+#### Limitations
+
+- Tasker can only receive intents which are sent to **broadcast
+ receiver** components, not to activities or services.
+- some intent senders require that a corresponding intent filter is
+ specified statically (i.e. in an Android Manifest). Those intents
+ cannot be received.
+- intents which are broadcast with a specification of a particular
+ package component to receive it cannot be received.
+
+#### Send Intent Parameters
+
+##### Action
+
+If specified, the received intent must have also that action specified.
+
+##### Cat
+
+Any categories specified in the received intent must also be specified
+in the Tasker event. Note that this is logically different to the
+situation for the Action parameter.
+
+##### Scheme
+
+If any schemes are included in the filter, then an Intent\'s data must
+be either one of these schemes or a matching data type. If no schemes
+are included, then an Intent will match only if it includes no data.
+
+##### Mime Type
+
+If a type is specified, then an Intent\'s data must be the same, or
+match the Scheme parameter. If no Mime Type is specified, then an Intent
+will only match if it specifies no Data.
+
+##### Priority
+
+If the intent is part of an *ordered broadcast*, then the priority
+specified here will affect whether this event will receive the intent
+before or after other listeners.
+
+##### Stop Event
+
+If the intent is part of an *ordered broadcast*, then specifying Stop
+Event will prevent it being passed to other listeners after this one.
+
+#### Accessing Intent Data
+
+When an intent triggers an Intent Received event, the resulting task(s)
+which are executed have access to many details of the intent via local
+variables (where relevant and present):
+
+- *%intent\_data*: the data
+- *%evtprm1*: the action
+- *%evtprm2*: the first category
+- *%evtprm3*: the second category
+- *%evtprm4*: the URI scheme
+- *%evtprm5*: the MIME type
+
+In addition, any *extras* attached to the intent can be accessed under
+their name, with the following modifications to make them valid variable
+names:
+
+- all letters will be converted to lower-case, then
+- names of length less than 3 will have **var\_** prefixed
+- non-letter-or-digit characters will be converted to \_, then
+- names not starting with a letter will have **a** prefixed, then
+- names not ending with a letter or digit will have **a** affixed
+- if the result is the name of another extra, **\_dup** will be
+ affixed until that is no longer the case
+
+For example, an extra with key **%SOUND\_ON** will be available as
+**%sound\_on**, and an extra with key **package.SOUND\_ON!**, will be
+available via the local variable **%package\_sound\_on\_a**
+
+The following extra types are presented in Tasker as local arrays:
+`String [], Integer [], ArrayList, ArrayList`.
+
+Example: a string array extra \`named \'fruits\' with values \'pear\'
+and \'apple\' will result in the local variables %fruits1 (=pear) and
+%fruits2 (=apple).
+
+[]{#java.html}
+
+Java Support 
+---------------------------------
+
+- [Introduction](#intro)
+- [The `Java Function` Action](#javafunction)
+ - Using The Action
+ - Parameters
+ - Return Values
+- [Objects](#objects)
+ - Creating An Object
+ - Object Naming, Local And Global
+ - Built-in Objects
+ - Assigning Values
+ - Other Actions Supporting Objects
+- [Other Topics](#other)
+ - Casting
+ - Constants
+ - Generic Classes
+ - Permissions
+ - Service Thread
+ - Static Fields
+
+[]{#intro}
+
+### Introduction
+
+Android has hundreds of thousands of functions which apps can use. It\'s
+not possible for Tasker to present all of those to the user, so Tasker
+allows the advanced user to directly call those Java functions and work
+with Java objects themselves.
+
+It does **not** allow you to \'write Java code\'\... but the combination
+of Tasker\'s logic and flow control with direct access to the Android
+API is sufficient for most automation purposes.
+
+This page assumes you have a basic familiarity with the Java concepts of
+*objects* and *classes*.
+
+Developer information on the Android API is available from
+[Google](http://developer.google.com/develop).
+
+#### Example
+
+1. `Variable Set`, %service, wifi
+2. `Java Function`, wiman = CONTEXT.getSystemService( %service )
+3. `Java Function`, %enabled = wiman.isWifiEnabled()
+4. `Java Function`, wiman.setEnabled( true ), If %enabled eq false
+
+This example task turns wifi on if it is not already enabled.
+
+Action 2 demonstrates that Tasker variables can be used in Java function
+calls. *wiman* is a Java object resulting from the function call which
+is stored by Tasker for use in subsequent actions. *CONTEXT* is also
+such a variable but is built-in and always accessible to
+`Java Function`.
+
+Action 3 demonstrates that results of `Java Function` can also be
+assigned to Tasker variables. Since all Tasker variables are strings,
+some conversion needs to take place depending on what type of object the
+Java function returns. In this case it\'s a boolean, and so %enabled
+will be **true** or **false**.
+
+Action 4 demonstrates taking a decision based on the result of previous
+Java function call.
+
+[]{#javafunction}
+
+### The `Java Function` Action
+
+#### Using The Action
+
+1. enter an object or class (to access static functions) into the first
+ parameter.
+
+ The magnifying glass icon will show a class selector for classes
+ known in the latest Android API. Some may be coloured red, as not
+ all classes are available on all devices.
+
+ The coffee-cup icon allows quick selection of known Java objects
+
+ The question mark icon will attempt to link to the relevant Android
+ reference page for the object or class.
+
+2. click the magnifying class next to the `Function` parameter to
+ select a function to execute appropriate to the object or class from
+ step 1.
+
+ In most cases, Tasker will be able to guess which class an object
+ is, and hence which functions are available, if not, see
+ [casting](#casting) below.
+
+ Functions listed in red are private, meaning they can be used, but
+ the author didn\'t intend them to be.
+
+3. if the function returns a value, you can enter a Java [object
+ name](#names) to assign it to, or a Tasker variable, see
+ [below](#return).
+4. enter any parameters required for the function, see
+ [below](#params). The type of object the function expects for the
+ parameter is displayed above the text entry field. The magnifying
+ glass will list any fields associated with the current entry in the
+ text box, where possible.
+
+[]{#params}
+
+#### Parameters
+
+If you don\'t enter a value for a parameter, `null` will be used for
+that parameter when the function is called.
+
+If you enter the name of a variable array, Tasker will attempt to
+convert the array values into the type of object (an array or
+collection) which the function expects.
+
+Other Tasker variables will be replaced in the usual way.
+
+Here can also be entered Java objects, or their fields, either built-in
+or created by previous calls to `Java Function` (e.g. `wiman` or
+`arr[0].length`)
+
+[]{#return}
+
+#### Return Values
+
+When a Java function returns a value, it can be placed in either a
+Tasker variable or a Java object (or ignored).
+
+If it\'s placed into a Tasker variable, it\'s converted to a piece of
+text and the object itself is lost and can no longer be accessed. Note
+that if the Java object is an array or list, it will be assigned to
+multiple Tasker variables in the usual way e.g. %val1, %val2\...
+
+When the returned value is placed into a Java object, you can access the
+object at a later time in another `Java Function` and some other (see
+later) actions.
+
+Note that return value classes are inferred from the function, so object
+names can refer to different classes at different times. It\'s not
+recommended to reuse names in this way however!
+
+[]{#objects}
+
+### Objects
+
+#### Creating An Object
+
+New objects of most types can be created by filling in the class name,
+hitting the function selector and selecting a function called `new`.
+
+It\'s worth noting that many classes in the Android API have special
+static functions for getting a new object of that class called e.g.
+`getInstance` or similar.
+
+Arrays (also multidimensional) can be created by adding `[]` to the
+class name (or e.g. `[][]`).
+
+Here\'s an example of creating a 3x5 string array:
+
+1. `Java Function`, arr = new String\[\]\[\]( 3 )
+2. `For`, %rowno, 0:2
+3. `Java Function`, arr\[%rowno\] = new String\[\]( 5 )
+
+Creating an array is also possible natively via the `newInstance`
+function in the the class `Array`.
+
+Array components can be accessed as in normal Java (`arr[0][1]`)
+wherever Java objects are [supported](#support).
+
+[]{#names}
+
+#### Object Naming, Local and Global
+
+Object names can consist of any any combination of upper or lower case
+letters and underscore and, unlike Tasker variable names, may start with
+underscore. The first letter may not be upper-case, as this is a
+convention used to distinguish objects from classes.
+
+Analogous to Tasker variables, Java objects are either local to the
+current task if their name is all lower case, or global (available to
+any other task) if there are any upper-case characters in the name.
+All-upper-case names represent final (fixed) global objects which cannot
+be modified.
+
+There are three important things to remember about global Java objects:
+
+- it\'s important to delete them once they are no longer needed,
+ because they can take up a lot of memory.
+- unlike global Tasker variables, they are lost when Tasker is killed
+ e.g. because the device was restarted
+- their names can only contain upper- or lower-case letters or
+ underscore.
+
+#### Built-in Objects
+
+- **Android Context** (class `Context`)\
+ *CONTEXT*\
+ Many funtions in Android require a context object. In tasks running
+ **directly** as a result of a scene element event, this is the
+ Activity object which is displaying the scene, otherwise it\'s
+ Tasker\'s Application context.
+- **Image Buffer** (class `Bitmap`)\
+ *IBUFFER* The object manipulated by functions in Tasker\'s *Image*
+ action category.\
+
+#### Assigning Values
+
+When writing Java code, to make a name refer to the same object as
+another name, you would use something like:
+
+ String a = "hello";
+ String b = a;
+
+Now both a and b refer to the same object.
+
+To achieve that in Tasker, you use the special `assignTo` function after
+selecting the object to assign.
+
+ Java Function, a, "hello", assign (or a = "hello".assign())
+ Java Function, b, a, assign (or b = a.assign())
+
+[]{#support}
+
+#### Other Actions Supporting Objects
+
+##### If
+
+A Java object can be directly referenced in a condition. Null-value
+objects are replaced with text representation `null`.
+
+Examples:
+
+ If, arr[0][0] eq 45
+ If, arr[0].length > 3
+ If, lightlevel Equals null
+
+You cannot make function calls e.g. str.charAt( 5 )
+
+##### For
+
+The *Value* parameter in the For action can include Java object
+references as for *If*.
+
+ For, %value, arr
+
+Will repeat once for each value in the array *arr*. This will also work
+for string lists and simple objects (boolean etc)
+
+[]{#other}
+
+### Other Topics
+
+[]{#casting}
+
+#### Casting
+
+*Casting* in Tasker is used only to tell Tasker the type of a particular
+object. That can be useful so that e.g. Tasker can show functions which
+are appropriate to it.
+
+In the example at the top of the page, the `getSystemService` function
+returns an Object:
+
+ Java Function, wiman = CONTEXT.getSystemService( %service )
+
+Since the object could be one of many kinds of managers, Tasker is not
+able to list the WifiManager functions for easy selection when creating
+the next `Java Function` action in the task.
+
+You can tell Tasker the actual type by adding a cast in brackets before
+the name:
+
+ Java Function, (WifiManager) wiman = CONTEXT.getSystemService( %service )
+
+#### Constants
+
+Tasker support the usual naming conventions for Java constants.
+
+- **L** a long integer e.g. `300L`
+- **F** a floating-point number e.g. `45.6D`
+- **D** a double-length float e.g. `45.6D`
+- **double quotes** indicate a string e.g. `"hello"`, though in many
+ cases Tasker will infer that a string was intended anyway
+- **single quotes** indicate a character e.g. `'x'`
+
+Tasker will attempt to convert numbers without affixes to a Java type in
+the following order: `int, long, float, double`.
+
+#### Generic Classes
+
+Tasker only supports fully the following generic classes: ``
+
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+- ArrayList\
+
+Create them by selecting their class in the class selector, clicking the
+function selector and clicking *new*.
+
+Generic classes mixed with arrays cannot be handled by Tasker, though
+you can pass such objects around from function to function.
+
+#### Permissions
+
+For some function calls, Android requires that the calling app have
+declared a permission otherwise the call will fail. This means that a
+Java Function call will fail if the permission is not one of the ones
+pre-declared by Tasker.
+
+Unfortunately, Android does not allow permissions to be added
+dynamically, so if you wish to use a function requiring a permission
+that Tasker does not already have, the only option is to generate a
+child app to run the function (see [App Creation](#appcreation.html)).
+In the child configuration screen you can add any permissions which your
+Java Function call needs to the child app.
+
+#### Service Thread
+
+Java code is executed with a non-UI thread by a service.
+
+Some implications are:
+
+- things which require an activity will not work e.g. showing a dialog
+- sending intents will in some cases require the flag
+ `Intent.FLAG_FROM_BACKGROUND` and possibly also
+ `Intent.FLAG_ACTIVITY_NEW_TASK`
+
+#### Static Fields
+
+Static fields (e.g. `ContentResolver.EXTRA_SIZE`) are not currently
+supported by Tasker.
+
+A workaround is to use reflection to get (or set) the value:
+
+ res = CONTEXT.getContentResolver();
+ cls = res.getClass();
+ fld = cls.getField( EXTRA_SIZE );
+ %val = fld.get( null );
+
+[]{#javascript.html}
+
+JavaScript Support 
+---------------------------------------
+
+- [Introduction](#intro)
+- [Local Variables](#localvars)
+- [Global Variables](#globalvars)
+- [Arrays](#array)
+- [Settings](#settings)
+- [Execution](#exe)
+- [Working Off-Device](#offdevice)
+- [Builtin Functions](#builtin)\
+ [alarmVol](#alarmVol) [audioRecord](#audioRecord)
+ [audioRecordStop](#audioRecordStop)\
+ [btVoiceVol](#btVoiceVol) [browseURL](#browseURL) [button](#button)\
+ [call](#call) [callBlock](#callBlock) [callDivert](#callDivert)
+ [callRevert](#callRevert) [callVol](#callVol) [carMode](#carMode)
+ [clearKey](#clearKey) [composeEmail](#composeEmail)
+ [composeMMS](#composeMMS) [composeSMS](#composeSMS)
+ [convert](#convert) [createDir](#createDir)
+ [createScene](#createScene) [cropImage](#cropImage)\
+ [decryptDir](#decryptDir) [decryptFile](#decryptFile)
+ [deleteDir](#deleteDir) [deleteFile](#deleteFile)
+ [destroyScene](#destroyScene)
+ [displayAutoBright](#displayAutoBright)
+ [displayAutoRotate](#displayAutoRotate)
+ [displayTimeout](#displayTimeout) [dpad](#dpad) [dtmfVol](#dtmfVol)\
+ [elemBackColour](#elemBackColour) [elemBorder](#elemBorder)
+ [elemPosition](#elemPosition) [elemText](#elemText)
+ [elemTextColour](#elemTextColour) [elemTextSize](#elemTextSize)
+ [elemVisibility](#elemVisibility) [enableProfile](#enableProfile)
+ [encryptDir](#encryptDir) [encryptFile](#encryptFile)
+ [endCall](#endCall) [enterKey](#enterKey) [exit](#exit)\
+ [filterImage](#filterImage) [flash](#flash) [flashLong](#flashLong)
+ [flipImage](#flipImage)\
+ [getLocation](#getLocation) [getVoice](#getVoice) [global](#global)
+ [goHome](#goHome)\
+ [haptics](#haptics) [hideScene](#hideScene)\
+ [listFiles](#listFiles) [loadApp](#loadApp) [loadImage](#loadImage)
+ [local](#local) [lock](#lock)\
+ [mediaControl](#mediaControl) [mediaVol](#mediaVol)
+ [micMute](#micMute) [mobileData](#mobileData)
+ [musicBack](#musicBack) [musicPlay](#musicPlay)
+ [musicSkip](#musicSkip) [musicStop](#musicStop)\
+ [nightMode](#nightMode) [notificationVol](#notificationVol)\
+ [performTask](#performTask) [popup](#popup)
+ [profileActive](#profileActive) [pulse](#pulse)\
+ [readFile](#readFile) [reboot](#reboot) [resizeImage](#resizeImage)
+ [ringerVol](#ringerVol) [rotateImage](#rotateImage)\
+ [saveImage](#saveImage) [say](#say) [scanCard](#scanCard)
+ [sendIntent](#sendIntent) [sendSMS](#sendSMS)
+ [setAirplaneMode](#setAirplaneMode)
+ [setAirplaneRadios](#setAirplaneRadios) [setAlarm](#setAlarm)
+ [setAutoSync](#setAutoSync) [setBT](#setBT) [setBTID](#setBTID)
+ [setClip](#setClip) [setGlobal](#setGlobal) [setKey](#setKey)
+ [setLocal](#setLocal) [settings](#settings)
+ [setWallpaper](#setWallpaper) [setWifi](#setWifi) [shell](#shell)
+ [showScene](#showScene) [shutdown](#shutdown)
+ [silentMode](#silentMode) [sl4a](#sl4a)
+ [soundEffects](#soundEffects) [speakerphone](#speakerphone)
+ [statusBar](#statusBar) [stayOn](#stayOn)
+ [stopLocation](#stopLocation) [systemLock](#systemLock)
+ [systemVol](#systemVol)\
+ [takeCall](#takeCall) [takePhoto](#takePhoto)
+ [taskRunning](#taskRunning) [type](#type)\
+ [usbTether](#usbTether) [unzip](#unzip)\
+ [vibrate](#vibrate) [vibratePattern](#vibratePattern)\
+ [wait](#wait) [wifiTether](#wifiTether) [writeFile](#writeFile)\
+ [zip](#zip)
+- [Function Notes](#notes)
+
+[]{#intro}
+
+### Introduction
+
+Tasker supports running JavaScript code in tasks or
+[WebView](#element_web.html) scene elements. Most Tasker actions can be
+accessed direct from the JavaScript. JSON and XMLHTTPRequest are also
+directly available from the JavaScript code.
+
+#### JavaScript in Tasks
+
+JavaScript can be embedded inline in tasks via the *JavaScriptlet*
+(direct specification of JavaScript to run) or *JavaScript* (load script
+from file) actions.
+
+In both cases, the JavaScript executes in sequence with the other
+actions in the task and variables are transparently converted so pieces
+of JavaScript can be interwoven throughout the task.
+
+#### Embedded in HTML
+
+WebView elements allow specification of mixed HTML and JS for the
+element content.
+
+> ` ClickMeToTurnOffWifi
`
+
+This allows a single WebView to present a complete user-interface.
+
+[]{#localvars}
+
+### Local Variables
+
+In `JavaScript(let)` actions, local variables (all lower case, e.g.
+**%myvar**) are directly accessible in the JavaScript without the % sign
+(e.g. **myvar**). If the script changes the value, the new value is
+transparently used by subsequent actions in the task.
+
+The values of new (all lower case) variables declared in JavaScript
+(with the `var` keyword) are also available to subsequent actions, with
+the exception of those which are chain-declared e.g.
+`var one = 'aval', two = 'bval';`
+
+In JavaScript embedded in HTML, the functions [local](#local) and
+[setLocal](#setLocal) must be used to access variables local to the
+scene hosting the WebView.
+
+[]{#globalvars}
+
+### Global Variables
+
+Tasker global variables need to be accessed via [global()](#global) and
+set via [setGlobal()](#setGlobal). Global arrays are not supported due
+to an Android limitation. []{#array}
+
+### Arrays
+
+Local Tasker arrays are transparently available in *Javascript(let)*s
+and vice-versa. They are not available in WebViews.
+
+Arrays which are not existing Tasker arrays must be declared in the JS
+as such i.e. in this case *arr* will not be visible to the remainder of
+the task:
+
+ var arr = getSomeArray();
+
+Whereas in this case it will:
+
+ var arr = [];
+ arr = getSomeArray();
+
+Note that:
+
+- JavaScript array indices start at 0, whereas Tasker array indices
+ start at 1
+- JavaScript uses `[]` while Tasker uses `()`
+
+So, for example, `%arr(1)` (Tasker) is equivalent to `arr[0]`
+(JavaScript).
+
+[]{#settings}
+
+### Settings
+
+Unlike normal Tasker actions, settings which are changed in JavaScript
+as part of a profile\'s enter task are **not** restored when the profile
+exits. []{#exe}
+
+### Execution
+
+#### Execution Instances
+
+Only one script can execute at one time. Once a piece of JavaScript is
+executing, it cannot be interrupted by another piece. []{#offdevice}
+
+#### Working Off-Device
+
+You might wish to develop long and/or complicated tasks off-device e.g.
+on a PC. There are two strategies for that:
+
+#### 1. `JavaScript` action
+
+For off-device testing, use
+`Menu / More / Developer / Save JS Library Template` to get dummy
+definitions for the built in functions. Include that file when
+developing on your PC.
+
+To test in your JavaScript code whether you\'re on-device or not, use
+
+> ` var onAndroid = ( global( 'sdk' ) > 0 );`
+
+By using the `JavaScript` action rather than `JavaScriptlet` you can
+easily access a file synced from PC to a file on the Android device.
+
+#### 2. Using WebView
+
+If you specify a website URL as the content for your WebView, then
+testing the code on the target device is a simple matter of pushing the
+new version to your webserver and reloading the WebView on the device
+(see action [Element Web
+Control](#help/ah_scene_element_web_control.html))
+
+#### Builtin Function Execution
+
+Calls to most Tasker builtin functions (see below) are executed as
+normal single-action tasks and thus may be blocked by other executing
+tasks.
+
+They execute at the priority of the task that executed the JavaScript
+**plus two**.
+
+#### JavaScript(let): Alert,Confirm,Prompt
+
+Scripts using these functions require a \'user-interface\' and may cause
+interference with the currently running app (though in most cases they
+will not).
+
+#### JavaScript(let): Auto Exit
+
+By default, the `JavaScript(let)` action will end when the main
+execution sequence is finished.
+
+If you are using asynchronous code e.g. via *setTimeout()* or other
+callbacks, you should deselect *Auto Exit*. You are then responsible
+yourself for telling Tasker to continue the task by calling *exit()*.
+
+In any case, execution will stop when the timeout configured for the
+action is reached.
+
+#### JavaScript(let): Libraries
+
+You can specify as many libraries as you want in the *Libraries*
+parameter, separated by newlines.
+
+Several popular libraries are pre-selectable.
+
+You may wish to download them manually to your local storage and change
+the *http* URL to a *file* URL so that Internet is not required to run
+your script.
+
+Warning: library code will have access to local files, data providers
+etc. on the device
+
+Important: if you are using your own libraries developed on Windows, you
+may need to convert CRLF style line endings to Unix style LF.
+
+[]{#builtin}
+
+### Builtin Functions
+
+Tasker makes most of it\'s actions available via functions which can be
+called directly via name in `JavaScript(let)` actions and WebView
+elements.
+
+Exceptions:
+
+- in WebView content where mode is set to **URL**, the functions must
+ be prefixed by **tk** e.g. `tk.flash('Woo!')`
+- when executing code via *eval* the functions must be prefixed by
+ **tk.**
+
+[]{#alarmVol} []{#btVoiceVol} []{#callVol} []{#dtmfVol} []{#mediaVol}
+[]{#notificationVol} []{#systemVol} []{#ringerVol}
+
+##### alarmVol / btVoiceVol / callVol / dtmfVol / mediaVol / notificationVol / systemVol / ringerVol
+
+`var ok = alarmVol( int level, bool display, bool sound )`
+
+Set the relevant system volume to *level*.
+
+If *display* is true, the new level will be flashed up on-screen.
+
+If *sound* is true, a tone will sound at the new level.
+
+[]{#audioRecord}
+
+##### audioRecord
+
+`var ok = audioRecord( str destPath, str source, str codec, str format )`
+
+- *destPath*: where to put the recording. Note that a file extension
+ is not necessary, it will correspond to the selected *format*.
+- *source*: **def, mic, call, callout** or **callin**
+- *codec*: **amrn, amrw** or **aac**
+- *format*: **mp4, 3gpp, amrn** or **amrw**
+
+The JavaScript does **not** wait for the audio recording to complete.
+
+See also: [audioRecordStop()](#audioRecordStop).
+
+[]{#audioRecordStop}
+
+##### audioRecordStop
+
+`var ok = audioRecordStop()`
+
+Stop recording previously initiated by [audioRecord()](#audioRecord).
+
+[]{#browseURL}
+
+##### browseURL
+
+`var ok = browseURL( str URL )`
+
+Open the default browser at the specifed URL.
+
+[]{#button}
+
+##### button
+
+`var ok = button( str name )`
+
+Simulate a press of the named button.
+
+*name* must be one of **back, call, camera, endcall, menu, volup,
+voldown** or **search**.
+
+This function requires a rooted device.
+
+[]{#call}
+
+##### call
+
+`var ok = call( str num, bool autoDial )`
+
+Make a phone call.
+
+If *autoDial* is **false**, the phone app will be brought up with the
+number pre-inserted, if **true** the number will also be dialed.
+
+[]{#callBlock}
+
+##### callBlock
+
+`var ok = callBlock( str numMatch, bool showInfo )`
+
+Block **outgoing** calls [matching](#matching.html) *numMatch*.
+
+If *showInfo* is set, Tasker will flash a message when a call is
+blocked.
+
+[]{#callDivert}
+
+##### callDivert
+
+`var ok = callDivert( str fromMatch, str to, bool showInfo )`
+
+Divert **outgoing** calls [matching](#matching.html) *fromMatch* to the
+number *to*.
+
+If *showInfo* is set, Tasker will flash a message when a call is
+diverted.
+
+[]{#callRevert}
+
+##### callRevert
+
+`var ok = callRevert( str numMatch )`
+
+Stop blocking or diverting outgoing calls previously specified with
+[callBlock](#callBlock) or [callDivert](#callDivert).
+
+[]{#carMode}
+
+##### carMode
+
+`var ok = carMode( bool onFlag )`
+
+Turn on or off Android Car Mode.
+
+[]{#clearKey}
+
+##### clearKey
+
+`var ok = clearKey( str keyName )`
+
+Clear the passphrase for the specified *keyName*.
+
+See Also: [Encryption](#encryption.html) in the Userguide.
+
+[]{#composeEmail}
+
+##### composeEmail
+
+`var ok = composeEmail( str to, str subject, str message )`
+
+Show an email composition dialog with any specified fields pre-filled.
+
+The JavaScript does **not** wait for the email to be sent before
+continuing.
+
+[]{#composeMMS}
+
+##### composeMMS
+
+`var ok = composeMMS( str to, str subject, str message, str attachmentPath )`
+
+Show an MMS composition dialog with any specified fields pre-filled.
+
+The JavaScript does **not** wait for the MMS to be sent before
+continuing.
+
+[]{#composeSMS}
+
+##### composeSMS
+
+`var ok = composeSMS( str to, str message )`
+
+Show an SMS composition dialog with any specified fields pre-filled.
+
+The JavaScript does **not** wait for the SMS to be sent before
+continuing.
+
+[]{#convert}
+
+##### convert
+
+`var result = convert( str val, str conversionType )`
+
+Convert from one type of value to another.
+
+*conversionType* must be one of the string constants: **byteToKbyte,
+byteToMbyte, byteToGbyte, datetimeToSec, secToDatetime, secToDatetimeM,
+secToDatetimeL, htmlToText, celsToFahr, fahrToCels, inchToCent,
+metreToFeet, feetToMetre, kgToPound, poundToKg, kmToMile, mileToKm,
+urlDecode, urlEncode, binToDec, decToBin, hexToDec, decToHex,
+base64encode base64decode, toMd5, toSha1, toLowerCase, toUpperCase,
+toUpperCaseFirst**.
+
+See also: action [Variable Convert](#help/ah_convert_variable.html).
+
+[]{#createDir}
+
+##### createDir
+
+`var ok = createDir( str dirPath, bool createParent, bool useRoot )`
+
+Create the named *dirPath*. If *createParent* is specified and any
+parent directory does not exist, it will also be created.
+
+If *useRoot* is specified, the operation will be performed as the root
+user (where available).
+
+[]{#createScene}
+
+##### createScene
+
+`var ok = createScene( str sceneName )`
+
+Create the named [scene](#scenes.html) without displaying it.
+
+[]{#cropImage}
+
+##### cropImage
+
+`var ok = cropImage( int fromLeftPercent, int fromRightPercent, int fromTopPercent, int fromBottomPercent )`
+
+Crop an image in Tasker\'s image buffer previously loaded via
+[loadImage](#loadImage).
+
+[]{#decryptDir}
+
+##### decryptDir
+
+`var ok = decryptDir( str path, str key, bool removeKey )`
+
+As [decryptFile()](#decryptFile), but decrypts each file in the
+specified directory in turn.
+
+[]{#decryptFile}
+
+##### decryptFile
+
+`var ok = decryptFile( str path, str key, bool removeKey )`
+
+Decrypt the specified file using the encryption parameters specified in
+`Menu / Prefs / Action`.
+
+If *removeKey* is not set, the entered passphrase will be reapplied
+automatically to the next encryption/decryption operation with the
+specified *keyName*.
+
+See Also: [Encryption](#encryption.html) in the Userguide, [Decrypt
+File](#help/ah_decrypt_file.html) action.
+
+[]{#deleteDir}
+
+##### deleteDir
+
+`var ok = deleteDir( str dirPath, bool recurse, bool useRoot )`
+
+Delete the named *dirPath*. *recurse* must be specified if the directory
+is not empty.
+
+If *useRoot* is specified, the operation will be performed as the root
+user (where available).
+
+[]{#deleteFile}
+
+##### deleteFile
+
+`var ok = deleteFile( str filePath, int shredTimes, bool useRoot )`
+
+Delete the named *filePath*.
+
+*shredTimes* has range 0-10.
+
+If *useRoot* is specified, the operation will be performed as the root
+user (where available).
+
+See also: action [Delete File](#help/ah_delete_file.html)
+
+[]{#destroyScene}
+
+##### destroyScene
+
+`var ok = destroyScene( str sceneName )`
+
+Hide the named [scene](#scenes.html) if it\'s visible, then destroy it.
+
+[]{#displayAutoBright}
+
+##### displayAutoBright
+
+`var ok = displayAutoBright( bool onFlag )`
+
+Whether the display brightness should automatically adjust to the
+ambient light or not.
+
+[]{#displayAutoRotate}
+
+##### displayAutoRotate
+
+`var ok = displayRotate( bool onFlag )`
+
+Whether the display orientation should change based on the physical
+orientation of the device.
+
+[]{#displayTimeout}
+
+##### displayTimeout
+
+`var ok = displayTimeout( int hours, int minutes, int seconds )`
+
+How long the period of no-activity should be before the display is
+turned off.
+
+[]{#dpad}
+
+##### dpad
+
+`var ok = dpad( str direction, int noRepeats )`
+
+Simulate a movement or press of the hardware dpad (or trackball).
+
+*direction* must be one of **up, down, left, right** or **press**.
+
+This function requires a rooted device.
+
+[]{#enableProfile}
+
+##### enableProfile
+
+`var ok = enableProfile( str name, boolean enable )`
+
+Enable or disable the named Tasker profile.
+
+[]{#encryptDir}
+
+##### encryptDir
+
+`var ok = encryptDir( str path, str keyName, bool rememberKey, bool shredOriginal )`
+
+As [encryptFile()](#encryptFile), but encrypts each file in the
+specified directory in turn.
+
+[]{#elemBackColour}
+
+##### elemBackColour
+
+`var ok = elemBackColour( str scene, str element, str startColour, str endColour )`
+
+Set the background [colour](#colour) of the specified
+[scene](#scenes.html) element.
+
+See also: action [Element Back
+Colour](#help/ah_scene_element_background_colour.html).
+
+[]{#elemBorder}
+
+##### elemBorder
+
+`var ok = elemBorder( str scene, str element, int width, str colour )`
+
+Set the border [colour](#colour) and width of the specified
+[scene](#scenes.html) element.
+
+[]{#elemPosition}
+
+##### elemPosition
+
+`var ok = elemPosition( str scene, str element, str orientation, int x, int y, int animMS )`
+
+Move an element within it\'s scene.
+
+*orientation* must be one of **port** or **land**. *animMS* indicates
+the duration of the corresponding animation in MS. A zero-value
+indicates no animation.
+
+See also: action [Element
+Position](#help/ah_scene_element_position.html).
+
+[]{#elemText}
+
+##### elemText
+
+`var ok = elemText( str scene, str element, str position, str text )`
+
+Set the text of the specified [scene](#scenes.html) element.
+
+*pos* must be one of **repl** (replace existing text completely),
+**start** (insert before existing text) or **end** (append after
+existing text).
+
+See also: action [Element Text](#help/ah_scene_element_text.html).
+
+[]{#elemTextColour}
+
+##### elemTextColour
+
+`var ok = elemTextColour( str scene, str element, str colour )`
+
+Set the text [colour](#colour) of the specified [scene](#scenes.html)
+element.
+
+See also: action [Element Text
+Colour](#help/ah_scene_element_text_colour.html).
+
+[]{#elemTextSize}
+
+##### elemTextSize
+
+`var ok = elemTextSize( str scene, str element, int size )`
+
+Set the text size of the specified [scene](#scenes.html) element.
+
+See also: action [Element Text
+Size](#help/scene_element_text_size.html).
+
+[]{#elemVisibility}
+
+##### elemVisibility
+
+`var ok = elemVisibility( str scene, str element, boolean visible, int animationTimeMS )`
+
+Make the specified [scene](#scenes.html) element visible or invisible.
+
+See also: action [Element
+Visibility](#help/ah_scene_element_visibility.html).
+
+[]{#endCall}
+
+##### endCall
+
+`var ok = endCall()`
+
+Terminate the current call (if there is one).
+
+[]{#encryptFile}
+
+##### encryptFile
+
+`var ok = encryptFile( str path, str keyName, bool rememberKey, bool shredOriginal )`
+
+Encrypt the specified file using the encryption parameters specified in
+`Menu / Prefs / Action`.
+
+If *rememberKey* is set, the entered passphrase will be reapplied
+automatically to the next encryption/decryption operation with the
+specified *keyName*.
+
+If *shredOriginal* is specified, the original file will be overwritten
+several times with random bits if encryption is successful.
+
+See Also: [Encryption](#encryption.html) in the Userguide, [Encrypt
+File](#help/ah_encrypt_file.html) action.
+
+[]{#enterKey}
+
+##### enterKey
+
+`var ok = enterKey( str title, str keyName, bool showOverKeyguard, bool confirm, str background, str layout, int timeoutSecs )`
+
+Show a dialog to enter the passphrase for the specified *keyName*. The
+JavaScript waits until the dialog has been dismissed or the timeout
+reached.
+
+- *confirm*: if set, the passphrase must be entered twice to ensure it
+ is correct.
+- *background*: \[optional\] a file path or file URI to a background
+ image.
+- *layout*: the name of a user-created [scene](#scenes.html) to use in
+ place of the built-in scene.
+
+See Also: [Encryption](#encryption.html) in the Userguide
+
+[]{#filterImage}
+
+##### filterImage
+
+`bool ok = filterImage( str mode, int value )`
+
+Filter an image previously loaded into Tasker\'s image buffer via
+[loadImage()](#loadImage)
+
+Possible values of *mode* are:
+
+- **bw**: convert to black & white, using *value* as a threshold
+- **eblue**: enhance blue values by *value*
+- **egreen**: enhance green values by *value*
+- **ered**: enhance red values by *value*
+- **grey**: convert to greyscale, *value* is unused
+- **alpha**: set pixel alpha (opposite of transparency) to *value*
+
+*value* should be 1-254.
+
+[]{#flipImage}
+
+##### flipImage
+
+`bool ok = flipImage( bool horizontal )`
+
+Flip an image previously loaded into Tasker\'s image buffer via
+[loadImage()](#loadImage)
+
+If *horizontal* is false, the image is flipped vertically.
+
+[]{#exit}
+
+##### exit
+
+`exit()`
+
+Stop execution of the JavaScript.
+
+[]{#flash}
+
+##### flash
+
+`flash( str message )`
+
+Flash a short-duration Android \'Toast\' message. []{#flashLong}
+
+##### flashLong
+
+`flashLong( str message )`
+
+Flash a long-duration Android \'Toast\' message. []{#getLocation}
+
+##### getLocation
+
+`var ok = getLocation( str source, bool keepTracking, int timeoutSecs )`
+
+Try to get a fix of the current device location.
+
+*source* must be one of **gps, net** or **any**.
+
+If *keepTracking* is set, the specified source(s) will be left tracking
+with the purpose of providing a much quicker fix next time the function
+is called.
+
+Fix coordinates are stored in the global Tasker variables **%LOC** (GPS)
+and/or **%LOCN** (Net). The value can be retrieved with the
+[global](#global) function. Several other parameters of the fix are also
+available, see [Variables](#variables.html).
+
+Example
+
+
+ var lastFix = global( 'LOC' );
+ if (
+ getLocation( 'gps' ) &&
+ ( global( 'LOC' ) != lastFix )
+ ) {
+ flash( "New fix: " + global( 'LOC' ) );
+ }
+
+See also: action [Get Location](#help/ah_get_fix.html), function
+[stopLocation](#stopLocation).
+
+[]{#getVoice}
+
+##### getVoice
+
+`str result = getVoice( str prompt, str languageModel, int timeout )`
+
+Get voice input and convert to text.
+
+*result* is \'undefined\' if the voice acquisition failed, otherwise
+it\'s an array of possible matching texts.
+
+*prompt* is a label for the dialog that is shown during voice
+acquisition.
+
+*languageMode* gives the speech recognition engine a clue as to the
+context of the speech. It must be one of **web** for \'web search\' or
+**free** for \'free-form\'.
+
+[]{#goHome}
+
+##### goHome
+
+`goHome( int screenNum )`
+
+Go to the Android home screen. *screenNum* is not supported by all home
+screens.
+
+[]{#haptics}
+
+##### haptics
+
+`var ok = haptics( bool onFlag )`
+
+Enable/disable system setting Haptic Feedback.
+
+[]{#hideScene}
+
+##### hideScene
+
+`var ok = hideScene( str sceneName )`
+
+Hide the named [scene](#scenes.html) if it\'s visible.
+
+[]{#global}
+
+##### global
+
+`var value = global( str varName )`
+
+Retrieve the value of a Tasker global variable. Prefixing the name with
+% is optional.
+
+Example:
+
+ flash( global( '%DogName' ) );
+
+[]{#listFiles}
+
+##### listFiles
+
+`str files = listFiles( str dirPath, bool hiddenToo )`
+
+List all files in the specified *dirPath*.
+
+*files* is a newline-separated list of subfiles.
+
+If no files or found or an error occurs, the returned value will be
+`undef`.
+
+If *hiddenToo* is specified, files starting with period are included,
+otherwise they are not.
+
+Example:
+
+ var files = listFiles( '/sdcard' );
+ var arr = files.split( '\n' );
+ flash( 'Found ' + arr.length + ' files' );
+
+[]{#loadApp}
+
+##### loadApp
+
+`var ok = loadApp( str name, str data, bool excludeFromRecents )`
+
+Start up the named app.
+
+*Name* can be a package name or app label, it\'s tested first against
+known package names. **Note**: app label could be localized to another
+language if the script is used in an exported app.
+
+*Data* is in URI format and app-specific.
+
+When *excludeFromRecents* is true, the app will not appear in the home
+screen \'recent applications\' list.
+
+[]{#loadImage}
+
+##### loadImage
+
+`var ok = loadImage( str uri )`
+
+Load an image into Tasker\'s internal image buffer.
+
+The following uri formats are currently supported:
+
+- *file://* followed by a local file path
+
+See also [Load Image](#help/ah_load_image.html) action.
+
+[]{#lock}
+
+##### lock
+
+`var ok = lock( str title, str code, bool allowCancel, bool rememberCode, bool fullScreen, str background, str layout )`
+
+Show a lock screen, preventing user interaction with the covered part of
+the screen. The JavaScript waits until the code has been entered or the
+lock cancelled (see below).
+
+- *code*: the numeric code which must be entered for unlock
+- *allowCancel*: show a button to remove the lockscreen, which causes
+ a return to the Android home screen
+- *rememberCode*: the code will be remembered and automatically
+ entered when the lock screen is show in future, until the display
+ next turns off
+- *background*: \[optional\] a file path or file URI to a background
+ image.
+- *layout*: the name of a user-created [scene](#scenes.html) to use in
+ place of the built-in lock scene
+
+[]{#local}
+
+##### local
+
+`var value = local( str varName )`
+
+Retrieve the value of a Tasker scene-local variable. The name should
+**not** be prefixed with *%*.
+
+This function is only for use by JavaScript embedded in HTML and
+accessed via a WebView scene element.
+
+[]{#mediaControl}
+
+##### mediaControl
+
+`var ok = mediaControl( str action )`
+
+Control media via simulation of hardware buttons.
+
+Possible *action*s are **next, pause, prev, toggle, stop** or **play**.
+
+[]{#micMute}
+
+##### micMute
+
+`var ok = micMute( bool shouldMute )`
+
+Mute or unmute the device\'s microphone (if present),
+
+[]{#mobileData}
+
+##### mobileData
+
+`var ok = mobileData( bool set )`
+
+Enable or disable the system Mobile Data setting.
+
+See also: action [Mobile Data](#help/ah_mobile_data_direct.html)
+[]{#musicBack}
+
+##### musicBack
+
+`var ok = musicBack( int seconds )`
+
+Skip back by *seconds* during playback of a music file previously
+started by [musicPlay](#musicPlay).
+
+See also: [musicSkip](#musicSkip), [musicStop](#musicStop)
+
+[]{#musicPlay}
+
+##### musicPlay
+
+`var ok = musicPlay( str path, int offsetSecs, bool loop, str stream )`
+
+Play a music file via Tasker\'s internal music player.
+
+*stream* to which [audio stream](#streams) the music should be played
+
+This function does **not** not wait for completion.
+
+The last 3 arguments may be ommitted, in which case they default to
+**0**, **false** and **media** respectively.
+
+See also: [musicStop](#musicStop), [musicBack](#musicBack),
+[musicSkip](#musicSkip)
+
+[]{#musicSkip}
+
+##### musicSkip
+
+`var ok = musicSkip( int seconds )`
+
+Skip forwards by *seconds* during playback of a music file previously
+started by [musicPlay](#musicPlay).
+
+See also: [musicBack](#musicBack), [musicStop](#musicStop)
+
+[]{#musicStop}
+
+##### musicStop
+
+`var ok = musicStop()`
+
+Stop playback of a music file previously started by
+[musicPlay](#musicPlay).
+
+See also: [musicBack](#musicBack), [musicSkip](#musicSkip)
+
+[]{#nightMode}
+
+##### nightMode
+
+`var ok = nightMode( bool onFlag )`
+
+Turn on or off Android Night Mode.
+
+[]{#popup}
+
+##### popup
+
+`var ok = popup( str title, str text, bool showOverKeyguard, str background, str layout, int timeoutSecs )`
+
+Show a popup dialog. The JavaScript waits until the popup has been
+dismissed or the timeout reached.
+
+- *background*: \[optional\] a file path or file URI to a background
+ image.
+- *layout*: the name of a user-created [scene](#scenes.html) to use in
+ place of the built-in popup scene.
+
+[]{#performTask}
+
+##### performTask
+
+`var ok = performTask( str taskName, int priority, str parameterOne, str parameterTwo )`
+
+Run the Tasker task *taskName*.
+
+Note that the JavaScript does not wait for the task to complete.
+
+[]{#profileActive}
+
+##### profileActive
+
+`bool active = profileActive( str profileName )`
+
+Whether the named Tasker profile is currently active. Returns false if
+the profile name is unknown.
+
+[]{#pulse}
+
+##### pulse
+
+`bool ok = pulse( bool onFlag )`
+
+Enable or disable the Android Notification Pulse system setting.
+
+[]{#readFile}
+
+##### readFile
+
+`var contents = readFile( str path )`
+
+Read the contents of a text file.
+
+[]{#reboot}
+
+##### reboot
+
+`var ok = reboot( str type )`
+
+Reboot the device.
+
+*type* is one of **normal, recovery** or **bootloader**. It can be
+ommitted and defaults to **normal**.
+
+Requires a rooted device.
+
+See also: function [shutdown](#shutdown) []{#resizeImage}
+
+##### resizeImage
+
+`var ok = resizeImage( int width, int height )`
+
+Scale the current image in Tasker\'s image buffer to the specified
+dimensions.
+
+[]{#rotateImage}
+
+##### rotateImage
+
+`var ok = rotateImage( str dir, int degrees )`
+
+Rotate the current image in Tasker\'s image buffer.
+
+*dir* must be one of **left** or **right**. *degrees* must be one of
+**45, 90, 135** or **180**.
+
+[]{#saveImage}
+
+##### saveImage
+
+`var ok = saveImage( str path, int qualityPercent, bool deleteFromMemoryAfter )`
+
+Save the current image in Tasker\'s image buffer to the specified file
+*path*.
+
+[Save Image](#help/ah_save_image.html) action.
+
+[]{#say}
+
+##### say
+
+`var ok = say( str text, str engine, str voice, str stream, int pitch, int speed )`
+
+Cause the device to say *text* out loud.
+
+- *engine*: the speech engine e.g. **com.svox.classic** Defaults to
+ the system default (specify *undefined* for that)
+- *voice*: the voice to use (must be supported by *engine*). Defaults
+ to the current system language (specify *undefined* for that)
+- *stream*: to which [audio stream](#streams) the speech should be
+ made
+- *pitch*: 1-10
+- *speed*: 1-10
+
+The script waits for the speech to be finished.
+
+[]{#sendIntent}
+
+##### sendIntent
+
+`var ok = sendIntent( str action, str targetComp, str package, str class, str category, str data, str mimeType, str[] extras );`
+
+Send an intent. Intents are Android\'s high-level application
+interaction system.
+
+Any parameter may be specified as undefined.
+
+- *targetComp*: the type of application component to target, one of
+ **receiver, activity** or **service**. Defaults to **receiver**.
+- *package*: the application package to limt the intent to
+- *class*: the application class to limit the intent to
+- *category*: one of **none, alt, browsable, cardock, deskdock, home,
+ info, launcher, preference, selectedalt, tab** or **test**, defaults
+ to **none**
+- *extras*: extra data to pass, in the format key:value. May be
+ undefined. Maximum length 2.
+
+See also: action [Send Intent](#help/ah_send_intent.html).
+
+[]{#sendSMS}
+
+##### sendSMS
+
+`var ok = sendSMS( str number, str text, boolean storeInMessagingApp );`
+
+Send an SMS.
+
+See also: action [Send SMS](#help/ah_send_sms.html)
+
+[]{#setAirplaneMode}
+
+##### setAirplaneMode
+
+`var ok = setAirplaneMode( bool setOn )`
+
+Enable or disable Airplane Mode.
+
+Get the current value with:
+
+` var enabled = global( 'AIR' );`
+
+See also: function [setAirplaneRadios](#setAirplaneRadios)
+
+[]{#setAirplaneRadios}
+
+##### setAirplaneRadios
+
+`var ok = setAirplaneRadios( str disableRadios )`
+
+Specify the radios which will be **disabled** when the device enters
+Airplane Mode.
+
+*disableRadios* is a comma-separated list with radio names from the
+following set: **cell, nfc, wifi, wimax, bt**.
+
+Get the current value with:
+
+` var radios = global( 'AIRR' );`
+
+See also: function [setAirplaneMode](#setAirplaneMode)
+
+[]{#setAlarm}
+
+##### setAlarm
+
+`var ok = setAlarm( int hour, int min, str message, bool confirmFlag )`
+
+Create an alarm in the default alarm clock app.
+
+*confirmFlag* specifies whether the app should confirm that the alarm
+has been set.
+
+*message* is optional.
+
+Requires Android version 2.3+.
+
+[]{#setAutoSync}
+
+##### setAutoSync
+
+`var ok = setAutoSync( bool setOn )`
+
+Enable or disable the global auto-sync setting.
+
+[]{#scanCard}
+
+##### scanCard
+
+`var ok = scanCard( str path )`
+
+Force the system to scan the external storage card for new/deleted
+media.
+
+If *path* is defined, only that will be scanned.
+
+See also: action [Scan Card](#help/ah_scan_card.html)
+
+[]{#setBT}
+
+##### setBT
+
+`var ok = setBT( bool setOn )`
+
+Enable or disable the Bluetooth radio (if present).
+
+Test BT state with:
+
+` if ( global( 'BLUE' ) == "on" ) { doSomething(); }`
+
+[]{#setBTID}
+
+##### setBTID
+
+`var ok = setBTID( str toSet )`
+
+Set the bluetooth adapter ID (the name as seen by other devices).
+
+[]{#setGlobal}
+
+##### setGlobal
+
+`setGlobal( str varName, str newValue )`
+
+Set the value of a Tasker global user variable. Prefixing varName with %
+is optional.
+
+Arrays are **not** supported due to limitations of the Android JS
+interface.
+
+[]{#setKey}
+
+##### setKey
+
+`var ok = setKey( str keyName, str passphrase )`
+
+Set the passphrase for the specified *keyName*.
+
+See Also: [Encryption](#encryption.html) in the Userguide.
+
+[]{#setLocal}
+
+##### setLocal
+
+`setLocal( str varName, str newValue )`
+
+Set the value of a Tasker **scene-local** user variable. Variable names
+should **not** be prefixed with *%*.
+
+This function is only for use by JavaScript embedded in HTML and
+accessed via a WebView scene element.
+
+[]{#setClip}
+
+##### setClip
+
+`var ok = setClip( str text, bool appendFlag )`
+
+Set the global system clipboard.
+
+Test the value with:
+
+` var clip = global( 'CLIP' );`
+
+[]{#settings}
+
+##### settings
+
+`var ok = settings( str screenName )`
+
+Show an Android System Settings screen.
+
+*screenName* must be one of **all, accessibility, addacount,
+airplanemode, apn, app, batteryinfo, appmanage bluetooth, date,
+deviceinfo, dictionary, display, inputmethod, internalstorage, locale,
+location, memorycard, networkoperator, powerusage, privacy, quicklaunch,
+security, mobiledata, search, sound, sync, wifi, wifiip** or
+**wireless**.
+
+[]{#setWallpaper}
+
+##### setWallpaper
+
+`var ok = setWallpaper( str path )`
+
+Set the system home screen wallpaper.
+
+[]{#setWifi}
+
+##### setWifi
+
+`var ok = setWifi( bool setOn )`
+
+Enable or disable the Wifi radio (if present).
+
+Test wifi state with:
+
+` if ( global( 'WIFI' ) == "on" ) { doSomething(); }`
+
+[]{#shell}
+
+##### shell
+
+`var output = shell( str command, bool asRoot, int timoutSecs )`
+
+Run the shell command *command*.
+
+*asRoot* will only have effect if the device is rooted.
+
+*output* is \'undefined\' if the shell command failed. It\'s maximum
+size is restricted to around 750K.
+
+[]{#showScene}
+
+##### showScene
+
+`var ok = showScene( str name, str displayAs, int hoffset, int voffset, bool showExitIcon, bool waitForExit )`
+
+Show the named [scene](#scenes.html), creating it first if necessary.
+
+- *displayAs*: options:
+ `Overlay, OverBlocking, OverBlockFullDisplay, Dialog, DialogBlur, DialogDim, ActivityFullWindow, ActivityFullDisplay, ActivityFullDisplayNoTitle`
+- *hoffset, voffset*: percentage vertical and horizontal offset for
+ the scene -100% to 100% (not relevant for full screen/window display
+ types)
+- *showExitIcon*: display a small icon in the bottom right which
+ destroys the scene when pressed
+- *waitForExit*: whether to wait for the scene to exit before
+ continuing the script
+
+[]{#shutdown}
+
+##### shutdown
+
+`var ok = shutdown()`
+
+Shutdown the device.
+
+Requires a rooted device.
+
+See also: [reboot](#reboot)
+
+[]{#silentMode}
+
+##### silentMode
+
+`var ok = silentMode( str mode )`
+
+Set the system silent (\'ringer\') mode.
+
+*mode* must be one of **off, vibrate** or **on**
+
+[]{#sl4a}
+
+##### sl4a
+
+`var ok = sl4a( str scriptName, boolean inTerminal )`
+
+Run a previously created
+[SL4A](https://code.google.com/p/android-scripting/) script.
+
+[]{#soundEffects}
+
+##### soundEffects
+
+`var ok = soundEffects( bool setTo )`
+
+Setting the system *Sound Effects* setting (sound from clicking on
+buttons etc.
+
+[]{#speakerphone}
+
+##### speakerphone
+
+`var ok = speakerPhone( bool setFlag )`
+
+Enable or disable the speakerphone function.
+
+[]{#statusBar}
+
+##### statusBar
+
+`var ok = statusBar( bool expanded )`
+
+Expand or contract the system status bar.
+
+[]{#stayOn}
+
+##### stayOn
+
+`var ok = stayOn( str mode )`
+
+Specify whether the device should remain on when power is connected.
+
+Possible *mode*s are **never, ac, usb, any**.
+
+[]{#stopLocation}
+
+##### stopLocation
+
+`var ok = stopLocation()`
+
+Stop tracking a location provider. This is only relevant when a
+[getLocation](#getLocation) function has been previously called with the
+*keepTracking* parameter set.
+
+[]{#systemLock}
+
+##### systemLock
+
+`var ok = systemLock()`
+
+Turn off the display and activate the keyguard.
+
+Requires Tasker\'s Device Administrator to be enabled in Android
+settings.
+
+[]{#taskRunning}
+
+##### taskRunning
+
+`bool running = taskRunning( str taskName )`
+
+Whether the named Tasker task is currently running. Returns false if the
+task name is unknown.
+
+[]{#takeCall}
+
+##### takeCall
+
+`bool ok = takeCall();`
+
+Auto-accept an incoming call (if there is one).
+
+[]{#takePhoto}
+
+##### takePhoto
+
+`bool ok = takePhoto( int camera, str fileName, str resolution, bool insertGallery )`
+
+Take a photo with the builtin camera.
+
+- *camera*: 0 = rear camera, 1 = front camera
+- *resolution*: format WxH e.g. 640x840
+- *insertGallery*: whether to insert the resulting picture in the
+ Android Gallery application
+
+See also: action [Take Photo](#help/ah_take_photo.html)
+
+[]{#type}
+
+##### type
+
+`var ok = type( str text, int repeatCount )`
+
+Simulate keyboard typing.
+
+Requires a rooted device.
+
+[]{#unzip}
+
+##### unzip
+
+`boolean ok = unzip( str zipPath, bool deleteZipAfter )`
+
+Unpack a Zip archive into the parent directory of the archive.
+
+*deleteZip* causes the zip archive to be deleted after successful
+unpacking.
+
+[]{#usbTether}
+
+##### usbTether
+
+`usbTether( bool set )`
+
+Enable or disable USB tethering.
+
+See also: action [USB Tether](#help/ah_tether_usb.html)
+
+[]{#vibrate}
+
+##### vibrate
+
+`vibrate( int durationMilliseconds )`
+
+Cause the device to vibrate for the specified time.
+
+[]{#vibratePattern}
+
+##### vibratePattern
+
+`vibratePattern( str pattern )`
+
+Cause the device to vibrate following the specified *pattern*, which
+consists of a sequence of off then on millisecond durations e.g.
+
+`500,1000,750,1000`
+
+wait for 500ms, vibrates 1000ms, wait for 750ms, then vibrate for
+1000ms.
+
+[]{#wait}
+
+##### wait
+
+`wait( int durationMilliseconds )`
+
+Pause the script for the specified time.
+
+Warning: may cause some preceeding functions not to complete in some
+situations. If in doubt, use JavaScript setTimeout() instead.
+
+[]{#wifiTether}
+
+##### wifiTether
+
+`var ok = wifiTether( bool set )`
+
+Enable or disable Wifi tethering.
+
+See also: action [Wifi Tether](#help/ah_tether_wifi.html)
+
+[]{#writeFile}
+
+##### writeFile
+
+`var ok = writeFile( str path, str text, bool append )`
+
+Write *text* to file *path*.
+
+If *append* is specified, the text will be attached to the end of the
+existing file contents (if there are any).
+
+[]{#zip}
+
+##### zip
+
+`boolean ok = zip( str path, int level, bool deleteOriginalAfter )`
+
+Zip a file or directory.
+
+*level* is the desired compression level from 1-9, with 9 resulting in
+the smallest file and the longest compression time.
+
+*deleteOriginal* causes *path* to be deleted if the zip operation is
+successful.
+
+[]{#notes}
+
+### Notes
+
+[]{#streams}
+
+#### Audio Streams
+
+Must be one of **call, system, ringer, media, alarm** or
+**notification** []{#colour}
+
+#### Colours
+
+Colours are specified in *AARRGGBB* hexadecimal format, with solid white
+being **FFFFFFFF**. []{#paths}
+
+#### File Paths
+
+File paths can be specified as either absolute (start with **/**) or
+relative (don\'t start with **/**).
+
+Relative file paths are relative to the root of the internal storage
+media. So, for example, `pics/me.jpg` might resolve to
+`/sdcard/pics/me.jpg`.
+
+[]{#loctears.html}
+
+Location Without Tears 
+-------------------------------------------
+
+This is an overview guide to choosing a method for fixing your location
+with Tasker. At the end are some [advanced power-saving
+strategies](#adv).
+
+Power / Accuracy Comparison
+---------------------------
+
+ Method Power Usage Acc Network Wifi BT
+ ---------------------------------- ------------- --------------- --------- ------ ----
+ [State: Cell Near](#cell) \* \*
+ [State: BT Near](#btnear) \*\* \*\*\*\*\* Y
+ [Location: Net](#net) \*\* \*\* Y
+ [Location: Net & Wifi](#netwifi) \*\*\* \*/\*\*\*\*\* Y Y
+ [State: Wifi Near](#near) \*\*\*\* \*\*\*\*\* Y
+ [Location: GPS](#gps) \*\*\*\*\* \*\*\*\*\* Y
+
+More stars mean higher power usage or higher accuracy (Acc).
+
+Detail Comparison
+-----------------
+
+[]{#cell}
+
+### State: Cell Near
+
+##### Setup
+
+Create a **state context**, select **Phone** then **Cell Near**. Click
+Update and walk around a bit to scan for cell towers nearby.
+
+##### About
+
+Uses information about the cell towers the phone uses for telephony to
+record and match a location.
+
+When the display is off, frequency of checks is controlled by
+`Prefs / Monitor / Display Off All Checks`.
+
+If your profile keeps deactivating, go back to the Cell Near state and
+click the magnifying glass icon to check for cells you may have missed
+in your scan.
+
+##### Plus / Minus
+
+- (+) virtually no extra power on top of power needed for normal phone
+ service
+- (+) when the display is on, context updates as soon as the tower is
+ visible
+- (+) when the display is off, only one check period is needed to
+ determine context exit
+- (-) highly inaccurate
+- (-) must be physically at the location in order to record it
+
+##### Other Settings
+
+- `Monitor / General Monitoring / Use New Cell API`: if you\'re not
+ seeing any cells at all when scanning on a modern device, try
+ checking this
+- `Monitor / Display Off Monitoring / Cell Workaround`: if things
+ aren\'t working when the display is off
+- `Monitor / Display Off Monitoring / Cell Wake Screen`: second
+ possible workaround when the display is off
+
+[]{#btnear}
+
+### State: BT Near
+
+##### Setup
+
+Create a **State context**, click **BT Near** (in the Net category),
+fill in the name or address of a bluetooth device near the location you
+want to identify.
+
+##### About
+
+BT Near does regular bluetooth Scans and will activate when it
+recognizes a device you have configured is nearby. Note: you don\'t have
+to connect to the device, so it doesn\'t have to be a device you own.
+
+Frequency of checks is controlled by `Prefs / Monitor / BT Scan Seconds`
+(screen on) and `Prefs / Monitor / Display Off All Checks` (screen off).
+
+Check the **BT Toggle** box if you don\'t want bluetooth enabled all the
+time. It will then be toggled when Tasker needs to do a scan.
+
+If your target device is a low-energy device, deselect **Standard
+Devices** to reduce energy usage. If you can pair with the target
+device, you can have a major reduction in power usage and scan times by
+not selecting **Non-Paired Devices**.
+
+##### Plus / Minus
+
+- (+) very good accuracy, reliability
+- (+) modest power usage, especially for paired devices
+- (+) works indoors too
+- (-) need a known device nearby
+
+##### Other Settings
+
+- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if
+ available on your device, will need to be disabled if you wish to
+ detect a nearby BT device that may move or turn off or on
+
+[]{#net}
+
+### Location: Net
+
+##### Setup
+
+Create a location context, and deselect GPS.
+
+##### About
+
+Net location accuracy varies greatly. It\'s **very important** that you
+create a **large radius** around the spot you wish to detect.
+
+Frequency of checks is controlled by
+`Prefs / Monitor / Network Location Check` (screen on) and
+`Prefs / Monitor / Display Off All Checks`.
+
+[More Info](#loccontext.html).
+
+##### Plus / Minus
+
+- (+) extremely low (extra) power (IF network is available anyway)
+- (-) requires network and phone service
+- (-) highly inaccurate and variable fixes
+
+[]{#netwifi}
+
+### Location: Net & Wifi
+
+##### Setup
+
+Create a location context and deselect GPS. Make sure your device\'s
+Wifi is turned on when you want a more accurate location fix.
+
+##### About
+
+Net location can be assisted by nearby access points when Wifi is turned
+on (Google has a map of APs for many areas).
+
+Turn Wifi off when not needed to conserve power e.g. use a Time context
+to turn wifi off at night.
+
+##### Plus / Minus
+
+- (+) very good accuracy in built-up areas for relatively low power
+ usage
+- (-) must be physically at the location in order to record it
+
+[]{#near}
+
+### State: Wifi Near
+
+##### Setup
+
+Create a **State context**, click **Wifi Near** (in the Net category),
+fill in the SSID of an Access Point (AP) with the best signal near where
+you want to identify.
+
+##### About
+
+Wifi Near does regular Wifi Scans and will activate when it recognizes
+an AP you have configured is nearby. Note: you don\'t have to connect to
+the AP. You could configure e.g. the neighbours AP if the signal is
+strong enough.
+
+Frequency of checks is controlled by
+`Prefs / Monitor / Wifi Scan Seconds` (screen on) and
+`Prefs / Monitor / Display Off All Checks` (screen off).
+
+Check the **Wifi Toggle** box if you don\'t want wifi on all the time.
+It will then be toggled when Tasker needs to do a scan. This isn\'t
+needed in In Android 4.4+ if you select `Scanning Always Available` in
+Advanced Wifi Settings and will save power.
+
+##### Plus / Minus
+
+- (+) very good accuracy and reliability
+- (+) less power than GPS
+- (+) works indoors too
+- (-) need an AP nearby
+
+##### Other Settings
+
+- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if
+ available on your device, will need to be disabled if you wish to
+ detect an AP that may turn off and on.
+
+[]{#gps}
+
+##### Location: GPS
+
+##### Setup
+
+Create a location context, and deselect Net.
+
+##### About
+
+Frequency of GPS checks is controlled by `Prefs / Monitor / GPS Check`
+(screen on) and `Prefs / Monitor / Display Off All Checks`. Higher
+frequencies mean more battery usage but that location changes will be
+noticed more quickly.
+
+When indoors, GPS will try a long time to get a signal, using a lot of
+battery. Adjust it at `Prefs / Monitor / GPS Timeout`. Make the timeout
+as low as you can until you start losing effectiveness.
+
+[More Info](#loccontext.html).
+
+##### Plus / Minus
+
+- (+) highly accurate in the open air
+- (-) functions very poorly or not at all indoors. A bad side effect
+ is that if you enter a building e.g. office while between the check
+ times, it may never detect your new location until you leave.
+- (-) extreme power usage
+- (-) needs network to get a first fix
+
+##### Other Settings
+
+- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if
+ available on your device, will need to be disabled if you wish to
+ detect changes of location on the order of a few meters.
+
+[]{#adv}
+
+### Advanced Strategies
+
+##### Motion Detection
+
+Some devices have a low-power accelerometer that can be active while the
+rest of the device is sleeping.
+
+For such devices, Tasker will not do location checks with the display
+off unless it detects that significant movement has taken place since
+the last check, resulting in lower power usage and faster response times
+when the device does eventually move.
+
+##### Multiple Contexts
+
+Tasker does not check high-power contexts until all lower-power contexts
+in the same profile are active. You can use this to reduce power
+consumption. For instance, if you use the Wifi Near state to detect
+coming home, you could add a Location: Net context to the same profile,
+so that wifi scanning will only take place when you are in the right
+neighbourhood.
+
+##### Location Control
+
+Disable GPS/Net location when they\'re not needed by creating a separate
+profile with e.g. a Time context which disables GPS during the night.
+
+This works because Location contexts assume you are in the same location
+until there is a fix which says otherwise.
+
+[]{#matching.html}
+
+Pattern Matching 
+-------------------------------------
+
+### What\'s Pattern Matching ?
+
+With Pattern Matching, you specify a *pattern* which tells Tasker what
+text you wish to match. For instance, if you want to match any telephone
+number starting with **0135**, you can specify the simple match
+**0135\***. **\*** is a special character which *matches* any number of
+any character.
+
+Tasker has two type of matching, [Simple Matching](#simple) and more
+advanced [Regex Matching](#regex). []{#simple}
+
+### Simple Matching
+
+Simple matching is designed to be easy for non-technical people to use.
+
+#### Where\'s It Used ?
+
+Simple Matching is used in the following places:
+
+- in the **If** condition of an action, when the **\~** (match) or
+ **!\~** (not match) operators are specified.
+- in text paremeters of State and Event contexts
+- some other places :-)
+
+#### Matching Rules
+
+- if a pattern is left blank, it will match against anything
+- if it is not blank it must match the whole target text
+- **/** means \'or\', it divides up multiple possible matches
+- a **\*** will match any number of any character. It\'s not possible
+ to specifically match a **\*** character.
+- a **+** will match one or more of any character. It\'s not possible
+ to specifically match a **+** character.\
+ Beware: the condition \'%var matches +\' will be **true** if %var
+ has not been assigned a value, because Tasker does not replace
+ variables which do not have a value.
+- matching is case-insensitive (*magic* will match with *MagiC*)
+ **unless** the pattern contains an upper-case letter e.g. *Magic\**
+ will not match against *magically*, but it will match against *Magic
+ Roundabout*
+- a **!** at the very start of a match means **not** e.g.
+ *!\*Magic\*/\*Yellow\** matches anything **not** containing the
+ words *Magic* or *Yellow*
+- it is not possible to specifically match a **!** character at the
+ start of a target (but you could use **\*!**
+
+Examples
+
+- *help* matches *help* but not *helper*.
+- *help\** matches *helper*
+- *\*the\** matches *the* (anywhere)
+- *123+* matches *123* and minimally one more character
+- *+* matches anything with at least one character (non-empty)
+- *the\*way* matches *the other way* and *the first way*, amongst
+ others
+- *Help/\*shell* matchs *Help* or anything ending with *shell*,
+ case-sensitively
+
+[]{#caller}
+
+#### Caller Matching
+
+Caller matching (some events and states e.g. *Call*) is handled slightly
+differently.
+
+- *C:ANY* matches the telephone number of any contact
+- *C:FAV* matches the telephone number of any favourite (starred)
+ contact
+- *CG:`groupmatch`* matches the telephone number of a contact in a
+ group which matches `groupmatch`
+- *Otherwise:* otherwise a match is attempted using the general
+ matching rules against **both** the caller phone number and the
+ associated contact\'s name (if there is one).
+
+Examples:
+
+- *!C:ANY* matches a number **not** belonging to a contact
+- *077\*/Geoff\** matches a number starting with *077* or belonging to
+ a contact whose names starts with *Geoff*
+- *C:FAV/0123456789* matches any favourite contact or the telephone
+ number *0123456789*
+- *CG:\*Family\*/CG:Business* matches any contact in the contact
+ groups *Family Members*, *My Family* or *Business*
+
+[]{#regex}
+
+### Regular Expression Matching
+
+Regular expressions are similar to simple matching patterns but have
+many more features and are much harder for non-technical people.
+
+#### Where\'s It Used ?
+
+Regex Matching is available:
+
+- in the **If** condition of an action, when the **\~R** or **!\~R**
+ operators are specified.
+- in the *Variable Search Replace* action
+- in the condition of a *Variable Value* state
+- wherever a Simple Match is possible, by preceding the regex with
+ **\~R** or **!\~R**
+
+#### Matching Rules
+
+Standard Java regular expression matching is applied. The Android
+Developer site has a [reference
+page](http://developer.android.com/reference/java/util/regex/Pattern.html).
+[]{#maths.html}
+
+Maths 
+--------------------------
+
+#### Where Is Maths Used ?
+
+- When you do `Variable Set` and click the *Do Maths* checkbox
+- With the `If` action, if you select a mathematical comparison like
+ **\<** or **=**
+- With individual action conditions when a mathematical comparison is
+ selected
+
+#### What\'s Available
+
+Tasker uses the [MathEval](http://www.softwaremonkey.org/Code/MathEval)
+library by Lawrence PC Dol.
+
+#### Operators
+
+- **+ - \* /** - the basic operators
+- **%** - modulus
+- **\^** - power
+
+##### Constants
+
+- **E** - the base of the natural logarithms
+- **EUL** - Euler\'s Constant
+- **LN2** - log of 2 base e
+- **LN10** - log of 10 base e
+- **LOG2E** - log of e base 2
+- **LOG10E** - log of e base 10
+- **PHI** - the golden ratio
+- **PI** - the ratio of the circumference of a circle to its diameter
+
+##### Functions
+
+Trigonometric functions expect a value in radians.
+
+Functions take their argument in parenthesis e.g. sin(torad((90))
+
+- **abs** - absolute value
+- **acos** - arc cosine; the returned angle is in the range 0.0
+ through pi
+- **asin** - arc sine; the returned angle is in the range -pi/2
+ through pi/2
+- **atan** - arc tangent; the returned angle is in the range -pi/2
+ through pi/2
+- **cbrt** - cube root
+- **ceil** - smallest value that is greater than or equal to the
+ argument and is an integer
+- **cos** - trigonometric cosine
+- **cosh** - hyperbolic cosine
+- **exp** - Euler\'s number e raised to the power of the value
+- **expm1** - *e*x-1
+- **floor** - largest value that is less than or equal to the argument
+ and is an integer
+- **getExp** - unbiased exponent used in the representation of val
+- **log** - natural logarithm (base e)
+- **log10** - base 10 logarithm
+- **log1p** - natural logarithm of (val+1)
+- **nextup** - floating-point value adjacent to val in the direction
+ of positive infinity
+- **round** - closest 64 bit integer to the argument
+- **roundhe** - double value that is closest in value to the argument
+ and is equal to a mathematical integer, using the half-even rounding
+ method.
+- **signum** - signum function of the argument; zero if the argument
+ is zero, 1.0 if the argument is greater than zero, -1.0 if the
+ argument is less than zero
+- **sin** - trigonometric sine
+- **sinh** - hyperbolic sine
+- **sqrt** - correctly rounded positive square root
+- **tan** - trigonometric tangent
+- **tanh** - hyperbolic tangent
+- **todeg** - converts an angle measured in radians to an
+ approximately equivalent angle measured in degrees
+- **torad** - converts an angle measured in degrees to an
+ approximately equivalent angle measured in radians
+- **ulp** - size of an ulp of the argument
+
+[]{#power.html}
+
+Power 
+--------------------------
+
+Internally, Tasker does its best to keep power usage down. Following are
+some macro-strategies to achieve this.
+
+#### Context Monitoring
+
+When a profile contains multiple contexts, power is saved by only
+monitoring for changes in order of the least-power-hungry first. For
+example, in a profile with a Time and App context, Tasker will not
+decide that it needs to monitor for a changing application unless the
+Time context is active (because the profile cannot become active until
+both contexts are active).
+
+Tasker rates contexts for power-hungriness in the following (ascending)
+order:
+
+- Other State
+- Day / Time
+- Calendar Entry State
+- Cell Near State
+- App
+- BT Near State
+- Network Location
+- Wifi Near State
+- GPS Location
+- Temperature / Humidity / Proximity / Pressure / Magnetic Field /
+ Light Sensor / Gesture Event / Orientation State (accelerometer
+ activation)
+
+Items at the bottom of the list won\'t become eligible for monitoring
+until all items further up the list are active.
+
+#### Display-Off Checks
+
+When the display is off, all necessary \'active\' checks (GPS/Net
+Location, Wifi Near, App) are done at the same time so that the device
+is awake for as short a time as possible. See *Display Off Timings* in
+`Menu / Prefs / Monitor` for the frequency and maximum duration of these
+checks. []{#settings.html}
+
+Settings 
+-----------------------------
+
+#### What\'s A Setting ?
+
+Settings are actions like *Display Brightness* and *Ringer Volume* whose
+effects are reversed by Tasker when the profile(s) which applied them
+are no longer active.
+
+Settings have a cog icon next to them. Normal actions have a lightning
+bolt.
+
+#### Single Profile
+
+When a setting is applied by the profile\'s Enter Task, its value is
+restored after the profile becomes inactive again. For example, if the
+ringer volume is at 7 and is set to 0 in the Enter Task, when the
+profile becomes inactive it is automatically set back to 7.
+
+In other words, settings are only valid for the lifetime of their
+profiles.
+
+#### Multiple Profiles
+
+When multiple profiles that affect a setting are active simultaneously:
+
+1. the setting has the value from the **most recently activated**
+ profile
+2. when **all** profiles are inactive, the setting has the value from
+ before **any** profile was active
+
+#### Special Cases
+
+- if a setting is changed by the Exit Task the profile will never save
+ the setting\'s initial value.
+- settings changed in an *instant profile* (one with an event context
+ or repeating/non-ranged time context) remain changed after the
+ event. The reasoning is that there is no point in changing the
+ setting for the half-second that the event lasts.
+
+#### Notes
+
+- settings are not *actively* maintained. If something else changes
+ the setting once the Enter task has run, it\'s not the case that
+ this is detected and the Enter task value automatically reapplied.
+
+Complicated, huh ? []{#variables.html}
+
+Variables 
+------------------------------
+
+#### General
+
+A variable is a named value which changes over time e.g. the level of
+the battery, the time of day.
+
+When Tasker encounters a variable name in a text, it replaces the name
+with the current value of the relevant variable before carrying out the
+action.
+
+The main purposes of variables are:
+
+- *dynamic binding*: doing something with an action with data which
+ is unknown when the task is created e.g. respond to an SMS; the
+ sender is not known until the SMS is received.
+- allow [flow control](#flowcontrol.html) within and between tasks
+- record data for some future use e.g. passing data between tasks
+
+#### Global vs. Local Variables
+
+Variables which have an **all-lower-case** name (e.g. %fruit\_bar) are
+*local*, meaning that their value is specific to the task or scene in
+which they are used.
+
+Variables which have one or more capital letters in their name (e.g.
+%Car, %WIFI) are *global*, meaning that wherever they are accessed from
+the same value is returned.
+
+#### Built-In Variables
+
+The values of built-In variables are updated automatically by Tasker.
+
+##### Local Built-In Variables
+
+- **Action Error**\
+ *%err*\
+ Is set to an integer if an error occurred when running the last
+ action. The actual number can signify the error which occurred, but
+ is usually 1 for most Tasker actions (notable exception: `Run Shell`
+ and plugins).
+- **Action Error Description**\
+ *%errmsg*\
+ A description of the error which **last resulted in %err being
+ set**. Currently never set by Tasker but possibly by some plugin
+ actions.
+- **Task Priority**\
+ *%priority*\
+ The priority of the running task. The priority determines which task
+ executes its next action when several tasks are running together.\
+ See also: [Task Scheduling](#scheduling)
+- **Task Queue Time**\
+ *%qtime*\
+ How long (seconds) the running task has been running.\
+ Note that tasks can be interrupted by higher priority tasks, so this
+ number is not necessarily the total run-time of the task.\
+- **Task Caller**\
+ *%caller*\
+ A variable array tracing the origin of the current running task.
+ *%caller1* gives the origin of the current task, *%caller2* the
+ origin of *%caller1* etc.
+
+ Example: if task A uses action `Perform Task` to start task B, then
+ when task A is run by pressing the Play button in the task edit
+ screen, *%caller1* in task B will show **task=A**, *%caller2* will
+ show **ui**.
+
+ The format of each entry in the array is
+ *callertype*(**=***callername*(**:***subcallername*))
+
+ Caller types ares detailed below:
+
+ - **profile**\
+ a profile (when it\'s state changes). *callername* is either
+ **enter** or **exit** depending on whether the profile activated
+ or deactivated. *subcallername* is the name of the profile, if
+ it has one, otherwise **anon**
+ - **scene**\
+ a scene event, with *callername* being the scene name. For
+ element events, *subcallername* is the element name. For action
+ bar button presses, *subcallername* is the label if one was
+ given. For scene-global events (e.g. Key), *subcallername* is
+ event type
+ - **ui**\
+ the Play button in the task edit screen in the Tasker UI
+ - **launch**\
+ clicking a child application icon in the launcher
+ - **nbutton**\
+ a notification action button, either from Tasker\'s permanent
+ notification or one created with one of the Notify actions.
+ *callername* specifies the label of the button if present.
+ - **external**\
+ an external application
+ - **qstile**\
+ a Quick Settings tile. *callername* specifies the label of the
+ tile.
+ - **appshort**\
+ an app shortcut (accessed via long-click on the Tasker icon).
+ *callername* specifies the label of the tile.
+ - **task**\
+ another task, from a Perform Task action. *subcallername* is the
+ task name, if it has one, otherwise **anon**
+
+##### Global Built-In Variables
+
+- **Airplane Mode Status**\
+ `(dynamic)`\
+ *%AIR*\
+ Whether Airplane Mode is **on** or **off**
+- **Airplane Radios**\
+ *%AIRR*\
+ A comma-separated list of the radios which will be **disabled** when
+ entering Airplane Mode.\
+ Common radio names are: *bluetooth, cell, nfc, wifi, wimax*.
+- **Battery Level**\
+ *%BATT*\
+ Current device battery level from 0-100.
+- **Bluetooth Status** `(dynamic)`\
+ *%BLUE* Whether Bluetooth is **on** or in some other state
+ (**off**).\
+- **Calendar List**\
+ *%CALS*\
+ Newline-separated list of calendars available on the device.\
+ Each entry is in the format *calendarprovider:calendarname*.\
+ Example usage:
+
+ Variable Set, %newline, \n
+ Variable Split, %CALS, %newline
+ Flash, %CALS(#) calendars, first one is %CALS(1)
+
+ For the sign *\\n*, press carriage-return on the keyboard.
+
+- **Calendar Event Title / Descr / Location** *%CALTITLE / %CALDESCR /
+ %CALLOC*\
+ The title, description and location of the **current** calendar
+ event, if there is one. If there are multiple current calendar
+ events the variables refer to the **shortest**.\
+ Tip: find other details about the current event(s) using the
+ `Misc / Test` action, specifying %TIMES for the data.
+- **Call Name / Number/ Date / Time (In)** `(dynamic, monitored)`\
+ *%CNAME / %CNUM / %CDATE / %CTIME*\
+ The caller name, number, date and time of the current (if a call is
+ in progress) or last call received.\
+ Caller number is **0** if it\'s unknown.\
+ Caller name is **?** if it\'s unknown (probably because the caller
+ number was blocked) and set to the caller number if the contact
+ couldn\'t be looked up. It\'s unavailable on Android versions prior
+ to 2.0.
+- **Call Name / Number/ Date / Time / Duration
+ (Out)**`(dynamic, monitored)`\
+ *%CONAME / %CONUM / %CODATE / %COTIME / %CODUR*\
+ The called name, number, date and time of the last (**not** the
+ current) outgoing call made.\
+ Called Name is set to the called number if the contact couldn\'t be
+ looked up. It\'s unavailable on Android versions prior to 2.0.
+- **Cell ID** `(dynamic,monitored)`\
+ *%CELLID*\
+ The current cell tower ID if known.\
+ If you are using a Cell Near state, note that sometimes the Cell
+ Near state will stay active even though %CELLID reports that the
+ tower ID is unknown or invalid; that is because Cell Near only
+ responds to valid IDs to prevent the state becoming inactive e.g.
+ due to a service interruption.\
+ For backwards compatibility, UMTS cells are reported with a GSM
+ prefix.\
+ From Android 4.2, Tasker version 4.3+, cells could be found from 2
+ different network types simultaneously. In that case, the value is
+ reported with preference for the network type leftmost on the list:
+ GSM, CDMA, UMTS, LTE.
+- **Cell Signal Strength** `(dynamic,monitored)`\
+ *%CELLSIG*\
+ The current phone signal level from 0-8 inclusive on a rougly linear
+ scale. On some phones, the level will rise in steps of 2
+ (0,2,4,6,8). The value is -1 if the value is unknown or there is
+ e.g. no service.\
+ From Android 4.2, Tasker version 4.3+, cells could be found from 2
+ different network types simultaneously. In that case, the value is
+ reported with preference for the network type leftmost on the list:
+ GSM, CDMA, UMTS, LTE.\
+ There is a bug with some Android versions that the reported signal
+ strength is not updated until the device is turned off and on.
+- **Cell Service State** `(dynamic,monitored)`\
+ *%CELLSRV*\
+ The current phone service state. One of *unknown, service,
+ noservice, emergency, nopower*.
+- **Clipboard Contents**\
+ `(dynamic,monitored)` *%CLIP*\
+ The current contents of the system clipboard.
+- **CPU Frequency**\
+ *%CPUFREQ*\
+ The current frequency CPU 0 is running at. See also: [CPU
+ Control](#cpu.html).
+- **CPU Governor**\
+ *%CPUGOV*\
+ The current governor controlling the frequency of CPU 0. See also:
+ [CPU Control](#cpu.html).
+- **Date**\
+ *%DATE*\
+ Current human-readable date.
+- **Day of the Month**\
+ *%DAYM*\
+ Current Day of the Month, starting at 1.
+- **Day of the Week**\
+ *%DAYW*\
+ Current Day of the Week starting with Sunday.
+- **Device ID / Manufacturer / Model / Product**\
+ *%DEVID / %DEVMAN / %DEVMOD / %DEVPROD*\
+ The ID, manufacturer, model and product name of the device.\
+ Note: ID is **not** a unique identifier for the device, but rather
+ for the hardware of the device. See also: %DEVTID.
+- **Device Telephony ID**\
+ *%DEVTID*\
+ Returns the unique telephony-based ID for the device (e.g. for GSM
+ the IMEI, for CDMA the MEID or ESN).\
+ Not available on all devices.
+- **Display Brightness** *%BRIGHT* Current screen brightness, 0-255.
+ On some devices, if the Android setting Auto Brightness is enabled,
+ the value will always be 255.
+- **Display Timeout** *%DTOUT* Current system screen timeout
+ (seconds).
+- **Email From / Cc / Subject / Date / Time** `(dynamic)`\
+ *%EFROM / %ECC / %ESUBJ / %EDATE / %ETIME*\
+ The From, Cc, Subject, Received Date and Received Time of the last
+ email received by the K9 email agent.
+- **Free Memory**\
+ *%MEMF*\
+ System free memory remaining in MB.
+- **GPS Status**\
+ (monitored,dynamic Gingerbread+) *%GPS*\
+ Whether the system GPS receiver is **on** or **off**.
+- **Heart Rate** `(monitored,dynamic)`\
+ *%HEART*\
+ The current detected heart rate in beats per minute.\
+ See also: state *Heart Rate*.\
+ The value will be negative for no contact (-1), accuracy unreliable
+ (-2) or some other problem (-3)
+- **HTTP Response Code / Data / Content Length**\
+ `(dynamic)`) *%HTTPR / %HTTPD / %HTTPL*\
+ Values from the last HTTP POST/GET action.\
+ If the server doesn\'t return a content length, %HTTPL will be
+ calculated from the returned data where possible.
+- **Input Method**\
+ *%IMETHOD*\
+ The current active input method. Consists of 4 parts separated by
+ commas: Method Name, SubType Name, Mode, Locale.\
+ To access particular parts, use the *Variable Split* action.
+- **Interrupt Mode** `(dynamic)`\
+ *%INTERRUPT*\
+ Only available on Android 5.0+, **requires Tasker\'s notification
+ access service to be enabled**, see Android\'s Sound & Notification
+ settings.\
+ \
+ Android 5.0+: the current state of interruptions mode on the device:
+ **none**, **priority** or **all**\
+ See Also: action *Interrupt Mode*\
+ \
+ Android 6.0+: the current state of Do Not Disturb mode on the
+ device: **none**, **priority**, **all** or **alarms**\
+ See Also: action *Do Not Disturb*
+- **Keyguard Status**\
+ *%KEYG*\
+ Whether the Keyguard is **on** or **off**
+- **Last Application**\
+ *%LAPP*\
+ The name of the application that was in the foreground before the
+ current one e.g. Maps.
+- **Last Photo**\
+ *%FOTO*\
+ The filesystem path to the last photo taken by Tasker or the
+ standard system camera application.
+- **Light Level** `(dynamic,monitored)`\
+ *%LIGHT*\
+ The last recorded light level in lux.\
+ Note that Android does not return a value until the light level
+ changes, so to test the sensor is working you should put it near a
+ bright light initially.\
+ May not change when the device display is off, see
+ `Menu / Prefs / More / Display Off Monitoring / Light Sensor`.
+- **Location** `(dynamic)`\
+ *%LOC*\
+ The latitude and longitude of the last GPS fix.\
+ [See note](#locnote).
+- **Location Accuracy** `(dynamic)`\
+ *%LOCACC*\
+ The accuracy in metres of the last GPS fix.\
+ [See note](#locnote).
+- **Location Altitude** `(dynamic)`\
+ *%LOCALT*\
+ The altitude in metres of the last GPS fix, or 0 if unavailable.\
+ [See note](#locnote).
+- **Location Speed** `(dynamic)`\
+ *%LOCSPD*\
+ The speed in metres/second at the last GPS position fix or 0 if
+ unavailable.\
+ [See note](#locnote).
+- **Location Fix Time Seconds** `(dynamic)`\
+ *%LOCTMS*\
+ The time in seconds of the last GPS fix. To get age of fix, take
+ this away from %TIMES.\
+ This value is not set until an offset of the GPS time from the fixed
+ time has been calculated (should be after the first GPS fix) because
+ the value is meaningless until that point.\
+ [See note](#locnote).
+- **Location (Net)** `(dynamic)`\
+ *%LOCN*\
+ The latitude and longitude of the last network location fix.\
+ [See note](#locnote).
+- **Location Accuracy (Net)** `(dynamic)`\
+ *%LOCNACC*\
+ The accuracy in metres of the last network location fix.\
+ [See note](#locnote).
+- **Location Fix Time (Net)** `(dynamic)`\
+ *%LOCNTMS*\
+ The time in seconds of the last net location fix. To get age of fix,
+ take this away from %TIMES.\
+ [See note](#locnote).
+- **Magnetic Field Strength** `(monitored,dynamic)`\
+ *%MFIELD*\
+ The total magnitudes in micro-Teslas of the magnetic fields acting
+ on all three axis of the devices sensor.\
+ Updated once per second.\
+ See Also: state `Magnetic Field`.
+- **Music Track** `(dynamic,monitored))`)\
+ *%MTRACK*\
+ The current playing music track, supported for:
+ - Tasker actions *Music Play* and *Music Play Dir*
+ - Built-in Android music-player, probably not on all devices
+ however
+ - Power AMP
+ - BeyondPod (Tasker v1.2.1+)
+ - Phantom Music Control Pro
+ - Media Utilities
+
+ Priority: if both Tasker and one of the other supported apps are
+ playing simultaneously, the non-Tasker track will be shown. If more
+ than one of the other supported apps is playing simultaneuosly,
+ behaviour is unspecified.\
+ Notes:
+ - if you don\'t have a supported player, you could try Phantom
+ Music Control Pro or Media Utilities, which support a lot of
+ players and should pass the info on to Tasker
+ - pausing a track clears the variable, unpausing sets it again
+ - your music player may need an option enabled in order to
+ broadcast the track information, or the broadcast may only be
+ available in a \'pro\' version
+
+- **Muted**\
+ *%MUTED*\
+ Whether the microphone is currently muted (**on**) or not (**off**).
+- **Night Mode**\
+ *%NIGHT*\
+ The current Android Night Mode.\
+ One of **on**, **off** or **auto**.\
+ If **auto**, Android will decide whether it should be in Night Mode
+ itself.
+- **Notification Title** `(monitored, dynamic)`\
+ *%NTITLE*\
+ The title of the last notification shown in the status bar. Prior to
+ KitKat, requires Tasker\'s accessibility server to be running (see
+ Android Accessibility Settings). From KitKat, requires Tasker\'s
+ Notification Listener service to be running instead.\
+ In a task running as a result of a `Notification` or
+ `Notification Removed` event, use variable %evtprm2 instead of
+ %NTITLE. This is much more reliable and you have access to other
+ parts of the notification (%evtprm3 etc)\
+ Notifications generated by Tasker are not shown.
+- **Phone Number**\
+ *%PNUM*\
+ The current phone number of the device, if it\'s in service.\
+ On some phones it doesn\'t work (Android limitation), seems related
+ to the type of SIM.
+- **Pressure** `(monitored,dynamic)`\
+ *%PRESSURE*\
+ The current air pressure on the device in millibars.\
+ May not change when the device display is off, see
+ `Menu / Prefs / Monitor / Display Off Monitoring / Pressure Sensor`.
+- **Profiles Active** `(dynamic)`\
+ *%PACTIVE*\
+ A comma-separated list of the currently active, named profiles in
+ activation order. Duplicate names will appear on the list only once.
+ The list always starts and ends with a comma to make matching
+ easier, if it\'s not empty.
+- **Profiles Enabled** `(dynamic)`\
+ *%PENABLED*\
+ A comma-separated list of the currently enabled, named profiles in
+ creation order. Duplicate names will appear on the list only once.
+ The list always starts and ends with a comma to make matching
+ easier, if it\'s not empty.
+- **Roaming**\
+ *%ROAM*\
+ **on** if device is roaming on the current telephone network,
+ otherwise **off**.
+- **Root Available**\
+ *%ROOT*\
+ **yes** if root functions are available on this device, otherwise
+ **no**.
+- **Screen** `(dynamic)`\
+ *%SCREEN*\
+ Whether the screen is on (value **on**) or off (value **off**).
+- **SDK Version**\
+ *%SDK*\
+ The numeric Android [SDK
+ version](http://developer.android.com/reference/android/os/Build.VERSION_CODES.html)
+ of the device.
+- **Silent Mode** `(dynamic)`\
+ *%SILENT*\
+ The current state of silent mode: **off**, **vibrate** or **on**.\
+ From Android 5.0+ this variable is intended to only reflect whether
+ the device is in vibrate mode (**vibrate**) or not (any other
+ value), but the **on** value is included for backwards compatibility
+ and set when the device is not in vibrate mode and the interrupt
+ mode is **none** or **priority**.\
+ See Also: variable *%INTERRUPT*, actions *Silent Mode* and
+ *Interrupt Mode*.
+- **SIM Serial Number**\
+ *%SIMNUM*\
+ The serial number of the SIM card, if one is present and
+ accessible.\
+ If the SIM has not been unlocked it will not be available.
+- **SIM State**\
+ *%SIMSTATE*\
+ The current state of the SIM card.\
+ One of **unknown**, **absent**, **pinrequired**, **pukrequired**,
+ **netlocked** or **ready**.
+- **Speakerphone**\
+ *%SPHONE*\
+ Whether the speakerphone is **on** or **off**
+- **Speech** `(dynamic)`\
+ *%SPEECH*\
+ The current utterance as a result of a *Say* or *Say File* action,
+ if applicable.
+- **Tasks Running** `(dynamic)`\
+ *%TRUN*\
+ A comma-separated list of any named tasks which are currently
+ running. The list always starts and ends with a comma to make
+ matching easier, if it\'s not empty.
+- **Telephone Network** `(dynamic, monitored)`\
+ *%TNET*\
+ The current telephony network operator the device is using.\
+ May be unreliable on CDMA networks
+- **Temperature** `(monitored,dynamic)`\
+ *%TEMP*\
+ The current ambient temperature in degrees Celsius.\
+ May not change when the device display is off, see
+ `Menu / Prefs / Monitor / Display Off Monitoring / Temp. Sensor`.\
+ See also: state *Temperature*.
+- **Text From/Date/Subject/Time** `(monitored)`\
+ *%SMSRF / %SMSRN / %SMSRB / %MMSRS / %SMSRD / %SMSRT*\
+ The sender address, name, body, subject, date and time of the last
+ text (SMS or MMS) received.\
+ These variables will be empty until the first time a text is
+ received after they have been referenced because Tasker does not
+ monitor texts unless it\'s needed.\
+ *Name* is set to sender address of no contact could be looked up.
+ It\'s unavailable on Android versions prior to 2.0.\
+ *Body* (%SMSRB) is only set for SMSs.\
+ *Subject* (%MMSRS) is only set for MMSs.
+- **Time**\
+ *%TIME*\
+ Current human-readable time separated by a period e.g. 10.59
+- **Tether** (dynamic)\
+ *%TETHER*\
+ A comma-separated list of enabled tethering forms i.e. connections
+ over which another device can connect to this one in order to use
+ its internet connection.\
+ The possible forms are **wifi**, **usb** or **bt**.\
+ BT will only be present when an actual client is connected via BT
+ for using the devices network connection, whereas the others will be
+ present as soon as the functionality is enabled (Android
+ bug/limitation).
+- **Time MilliSeconds**\
+ *%TIMEMS*\
+ The current time in milliseconds.\
+ (milliseconds since some time in January, 1970, if you must know).
+- **Time Seconds**\
+ *%TIMES*\
+ The current time in seconds.\
+ (seconds since some time in January, 1970, if you must know).
+- **UI Mode** `(dynamic,monitored)`\
+ *%UIMODE*\
+ The current Android UI mode.\
+ One of **car**, **desk**, **appliance**, **tv** (television),
+ **watch**, **undef** (undefined) or **normal**.
+- **Uptime Seconds**\
+ *%UPS*\
+ The number of seconds since the device last booted.
+- **Volume - Alarm/Call/DTMF/Media/Notification/Ringer/System**
+ `(dynamic)`\
+ *%VOLA / %VOLC / %VOLD / %VOLM / %VOLN / %VOLR / %VOLS*\
+ Current audio channel volume level.\
+ On some devices, volume changes are not picked up dynamically, on
+ others not when using the phone app.
+- **WiFi Info**\
+ *%WIFII*\
+ When connected to an Access Point (AP), shows human-readable data
+ about the AP. When not connected, show details of the most recent
+ Wifi scan results for nearby APs.
+- **WiFi Status** `(dynamic)`\
+ *%WIFI*\
+ Whether WiFi is **on** or **off**. Note: if WiFi is enabling or
+ disabled, in fact anything but enabled, it\'s classed as off.
+- **Wimax Status**\
+ *%WIMAX*\
+ Whether Wimax is **on** or **off**. Note: if Wimax is enabling or
+ disabled, in fact anything but enabled, it\'s classed as off.
+- **Window Label** `(monitored)`\
+ *%WIN*\
+ The label of the current window, which could be a full-screen
+ activity or a dialog.\
+ Not set if the label is unknown.\
+ For some windows, the label might be that of the first item in the
+ window e.g. a menu entry or even a button.
+
+##### General Notes
+
+Variables marked `dynamic` in the list above trigger changes in
+*Variable Value* states and *Variable Set* events whenever their value
+changes.
+
+Variables marked `monitored` will cause the relevant monitor to startup
+to track their state when they are used in contexts or tasks which are
+used by widgets or **enabled** profiles. For instance, %CELLID used in a
+Flash action will cause cell location to be tracked.
+
+Limitation: monitored variables cannot be detected in anonymous
+shortcuts.
+
+[]{#locnote}
+
+##### Note On Location Variables
+
+When the relevant provider (Net or GPS) of a location context is active,
+these variables report the values from the provider, which may be more
+recent than Tasker has seen if other applications are asking for
+location.
+
+When the relevant provider is **not** active, these variables report the
+last values **seen by Tasker**, which could be the result of a
+`Get Location` action or of monitoring for a `Location Context`.
+
+That means the the reported fix times could **go backwards**, if you
+turn off the location provider between two uses of the variables.
+
+Location variables can also be manually updated by running the
+`Get Location` action.
+
+#### User Variables
+
+The action *Variable Set* (and several others) can be used to create new
+variables. Variable names have the following restrictions:
+
+- they must start with the **%** character
+- they are case-sensitive
+- then must at least a further **3** alphanumeric characters
+- they can also contain the underscore character (\_) but not start or
+ end with it
+
+In general, it\'s best to use local variables wherever possible because:
+
+- you know they won\'t be interfered with by other tasks or scenes
+- they are more efficient in several ways
+
+Note: multiple copies of the same task running at the same time each
+have their own separate copy of their local variables.
+
+###### Scene-Local Variables
+
+Each scene has its own set of local variables which it shares with the
+task that created it; both the scene and task see changes to the
+variables made by either.
+
+Any task which starts as a result of a scene event (e.g. a tap on an
+element) also shares the variables of the scene (and thus of the
+original task which created the scene).
+
+As a consequence, a task started by a scene event (e.g. Tap on an
+element) which shows a new scene e.g. via the *Show Scene* action, will
+result in the second scene sharing the variables of the first scene.
+
+When a task shows a scene that was created by a different task (or a
+different copy of the same task) and subsequently hidden, the task\'s
+variables are **copied** to the scene variables (overriding values of
+variables which already exist) but the task does **not share** the scene
+variables and cannot see changes to them.
+
+##### Escaping Variable Names
+
+If you want to prevent a variable name being replaced, put a **\\** in
+front of it e.g.
+
+> `Variable Set, %new, \%old`
+
+Will set the value of *%new* to *%old*, **not** the **value** of *%old*.
+
+In order to precede a variable name with a **\\** you can escape the
+backslash e.g.
+
+> `Variable Set, %new, \\%old`
+
+Will set the value of *%new* to **\\** followed by the **value** of
+*%old*.
+
+##### Variable References
+
+It\'s possible to indirectly refer to variables by preceeding one or
+more extra **%** signs to the start of the variable name. For example:
+
+> ` Variable Set, %colour, red Variable Set, %varname, colour Flash %%varname`
+
+\... will flash **red**.
+
+Using this notation it\'s possible to assign variables whose name is not
+known beforehand:
+
+> ` Read File, variablename.txt, To Var, %varname Variable Set, %%varname, red`
+
+This will set the variable whose name is stored in the file
+`variablename.txt` to **red**.
+
+You can nest references as deeply as you like (e.g. `%%%%var`) but
+mental stress and bugs are sure to follow.
+
+If any part of the chain has an invalid variable name then the original
+reference will be returned. In the first example, if `%varname` is set
+to `!!!`, then **%%varname** will be flashed instead of **red**.
+
+##### Variable Lifetime
+
+The value a **global** variable holds lasts until Tasker is uninstalled
+if it is not changed by any task.
+
+**Local** variables are lost at the end of the task they were created
+in, or when the parent scene is destroyed in the case of tasks called
+from scenes.
+
+##### Uninitialized Variables
+
+User-variables which have not had a value assigned do not have
+replacements carried out e.g. in the expression *I love %fruit*, if
+%fruit is uninitialized, the expression remains as it is, otherwise
+%fruit is replaced with the value.
+
+Exception: uninitialized variables used in mathematical expressions are
+replaced with 0.
+
+#### Variables In Plugins
+
+Plugin developers can tell Tasker to replace variables it finds in
+plugin strings with their current Tasker value. If you have a plugin
+which doesn\'t support this, send the developer this URL
+
+>
+
+which has the relevant details.
+
+[]{#arrays}
+
+#### Variable Arrays
+
+Tasker supports pseudo-arrays.
+
+They are especially useful when used with the `For` action, since you
+can perform a set of actions on each element in turn e.g. list a set of
+files then test each one.
+
+##### Examples
+
+If the four variables **%arr1, %arr2, %arr3, %arr4** hold respectively
+**a, b, c** and **d** then we have an array with 4 *elements*. These
+variables can be used just like any other, however it is also possible
+to access them in special ways. Here are some examples:
+
+- **%arr(\#)**\
+ The number of defined array elements (**4** in this case)
+- **%arr(\#\>)**\
+ The index of the first defined array element, or **0** if none are
+ defined (**1**).
+- **%arr(\#\<)**\
+ The index of the last defined array element, or **0** if none are
+ defined (**4**)
+- **%arr(\#?b/c)**\
+ A comma-separated list of the array indices (lowest to highest) with
+ matching values, or **0** if none match (**2,3** in the example)
+- **%arr(\>)**\
+ The contents of the first defined array element (**a**)
+- **%arr(\<)**\
+ The contents of the last defined array element (**d**)
+- **%arr()** or **%arr(:)**\
+ All of the array elements separated by commas (**a,b,c,d**)
+- **%arr(2)** or just **%arr2**\
+ The content of the element with index 2 (**b**)
+- **%arr(2:4)**\
+ Contents of defined elements with indices 2 to 4 (**b,c,d**)
+- **%arr(:3)**\
+ All the defined elements with indices up to 3 (**a,b,c**)
+- **%arr(3:)**\
+ All the defined elements with indices starting from 3 (**c,d**)
+- **%arr(1:2)**\
+ All the defined elements with indices from 1 to 2 (**a,b**)
+
+Notes:
+
+- arrays will virtually always have all their elements defined so e.g.
+ %arr(\>) will be the same as %arr(1), %arr(\#) will be the same as
+ %arr(\#\<)
+- index specifiers can themselves be variables (e.g. %arr(1:%MAX) or
+ %arr(\#?%FINDME)) but **not** variable arrays
+
+##### Creating An Array
+
+1. using `Array Set`:\
+ **Array Set, %arr, a b c d**
+2. using `Variable Split` on an existing (simple) variable:\
+ **Variable Set %arr a b c d**\
+ **Variable Split %arr**\
+3. by assigning individual elements with `Variable Set`:\
+ **Variable Set, %arr3, c**.
+4. using `Array Push` to add an initial element
+5. some other actions also create arrays for their results e.g.
+ `List Files`.
+
+##### Inserting Elements
+
+Use the `Array Push` action.
+
+The *Fill Spaces* parameter might need more explanation. It is only
+relevant if one or more of the array elements are undefined. As an
+example, if we have the array elements %arr1 and %arr3 containing
+**apple** and **banana**:
+
+- **Array Push %arr1, 1, pear**\
+ leaves %arr1, %arr2 and %arr4 containing **pear**, **apple** and
+ **banana**.\
+- but **Array Push %arr2, 1, pear, Fill Spaces**\
+ leaves %arr1, %arr2 and %arr3 containing **pear**, **apple** and
+ **banana**.
+
+##### Removing Elements
+
+Use the `Array Pop` action. Note the difference between `Array Pop` and
+`Variable Clear`: `Pop` reduces the number of elements in the array,
+while `Clear` merely changes elements to undefined.
+
+Example: if we have the array elements %arr1, %arr2, %arr3 containing
+**apple**,**pear** and **banana**:
+
+- **Variable Clear %arr2**\
+ leaves %arr1 and %arr3 containing **apple** and **banana**.\
+- but **Array Pop %arr2**\
+ leaves %arr1 and %arr2 containing **apple** and **banana**.
+
+##### Deleting An Array
+
+Use `Array Clear`.
+
+In most cases you could also use **Variable Clear %arr\*** with Pattern
+Matching checked, but that would also delete variables called e.g.
+%arrTOODEETOO so `Array Clear` is safer.
+
+##### Sorting
+
+The `Array Process` action offers various sorting options, amongst other
+things.
+
+##### Array Efficiency
+
+Arrays are intended for convenience when processing high-level data, not
+for e.g. processing astronomical data. Doing thousands of array actions
+will likely take several seconds (although mostly due to the
+housekeeping work done by Tasker in-between each action rather than due
+to the array operations themselves).
+
+In terms of storage efficiency, they are also fairly hopeless. You
+probably do not want to store tens of thousands of items in an array.
+
+FAQ: How Do I\... / Can I\... ?  
+-------------------------------------------------------------------------
+
+- How can I contact the developer ?
+- How can I send the developer a bug report ?
+- How can I send the developer a long-term log ?
+- [Can I change an app\'s settings / press it\'s buttons ?](#a)
+- [Can I control / respond to events in application X with Tasker
+ ?](#o)
+- [How can I stop Tasker restoring a setting ?](#cx)
+- [Can Tasker detect volume button presses ?](#c)
+- [Can Tasker be used from an external SD card ?](#d)
+- [Can I use Tasker to turn the screen on and off ?](#e)
+- [How do I create my default settings ?](#f)
+- [How can I run more than one task when a profile goes active ?](#g)
+- [Can I hide the notification list entry when Tasker is running
+ ?](#h)
+- [Can I change or remove the status bar icon when Tasker is running
+ ?](#h2)
+- [What if I want a repeating time context, but I need to do something
+ that takes a while ?](#i)
+- [How can I do something every minute ?](#j)
+- [How do I specify *9:30AM on Monday* and *10AM on Tuesday* with the
+ same profile ?](#k)
+- [How do I specify weekend night-times ?](#k2)
+- [How do I stop the screen dimming when I have the display Stay On
+ set to e.g. \'With AC\' ?](#l)
+- [How can I stop Wifi Near toggling wifi on-off when the phone is in
+ Airplane Mode ?](#m)
+- [Can I divert incoming calls ?](#n)
+- [How can I detect if Wifi is connected (not just enabled) ?](#p)
+- [How can I import/export individual profiles, tasks or scenes ?](#q)
+- [How do I turn off the flashing notification LED ?](#s)
+- [How do I put my phone in Silent or Vibrate mode ?](#t)
+- [Can I automate sending of an SMS / Call through Google Voice ?](#u)
+- [Can I change/remove the notification sounds for particular apps
+ ?](#v)
+- Can I silence all notifications except from particular applications
+ ?
+- [Can I change the input method ?](#w)
+- [How do I test whether I can reach the Internet (ping) ?](#y)
+- [How can I use whitespace (newline, tab etc) in action parameters
+ ?](#y2)
+- [How can I run a task from a terminal login ?](#y3)
+- [How can I silence the camera shutter sound ?](#y4)
+
+------------------------------------------------------------------------
+
+[]{#z}
+
+#### How can I contact the developer ?
+
+There is a contact email given at **Menu / Info / Support**. In general,
+this is intended for order and validation help, which is often
+confidential, and other private issues.
+
+Please post Tasker usage queries/problems in the [Tasker
+Forum](http://groups.google.com/group/tasker) where the developer is
+very active.
+
+Advantages:
+
+- the user community has more experience than the developer with using
+ Tasker
+- other people can benefit if your problem is solved
+- the developer has more time for fixing bugs and adding features,
+ which benefits everyone
+
+[]{#x}
+
+#### How can I send the developer a bug report ?
+
+- go to *Android Settings* then **About Phone**
+- tap 10 or more times on the **Build Version** entry
+- go back one screen
+- select **Developer Options**
+- check the **USB Debugging** option if it\'s not already checked
+- do whatever it is that causes the problem
+- go back to **Developer Options** and tap **Take Bug Report** (the
+ first entry)
+- wait a short while until the bug report is ready (a notification
+ will appear)
+- share using an email application
+- the destination email address is listed in **Menu / Info / Support**
+ in Tasker
+- include at the top of the email a brief description of the problem
+ that the email concerns
+- disable **USB Debugging** and **Developer Options** (switch at top)
+
+Try to make the log as soon as possible after the problem occurs.
+
+[]{#x2}
+
+#### How can I send the developer a long-term log ?
+
+If your problem covers a longer time-frame, you\'ll need an SD card log
+because the system log fills up very quickly:
+
+- you\'ll need an SD card inserted
+- deselect **Menu / Prefs / UI / Beginner Mode** in Tasker
+- enable **Menu / Prefs / Misc / Debug to SD Card** in Tasker
+- when the problem has occured, email the file
+ */sdcard/Tasker/log/tasker.txt* to the developer email listed at
+ **Menu / Info / Support**
+- include at the top a brief description of the problem that the log
+ concerns
+
+[]{#a}
+
+#### Can I change an app\'s settings / press it\'s buttons ?
+
+Standard Android doesn\'t allow an app to change, poke, prod or peek at
+anything within another app, including simulating keypresses and screen
+taps.
+
+On a rooted device, you can use some of the actions in the `Input`
+category to navigate around an app, click on UI elements and enter text
+automatically.
+
+[]{#o}
+
+#### Can I control / respond to events in application X with Tasker ?
+
+If a Tasker user wants to automate some aspect of another program they
+use, they just need to point the developer of the other app at the
+[Tasker Developer Page](#/developers.html) and nag at him/her a bit.
+
+[]{#cx}
+
+#### How can I stop Tasker restoring a setting ?
+
+Tasker will restore any setting which is changed in the Enter task of a
+profile. There are four ways to prevent this:
+
+1. deselect the *Restore Settings* in the Profile Properties of the
+ relevant profile.
+2. if you set the same setting in the Exit task of the profile Tasker
+ will take that as a hint that the previous value shouldn\'t be
+ restored.
+3. create a separate task to run the settings actions and in the Enter
+ task of the profile do a Perform Task action (from the category
+ *Tasker*) on that separate task. This trick is known as Stefan\'s
+ Setting Sidestep.
+4. you can use the corresponding Javascriptlet function instead of the
+ setting action. Settings made in Javascriptlets are not restored.
+
+[]{#c}
+
+#### Can Tasker detect volume button presses ?
+
+No, sorry, that\'s not possible ATM.
+
+The closest you can get is to detect changes in a volume variable (e.g.
+%VOLR for the ringer volume) via event Variable Set.
+
+[]{#d}
+
+#### Can Tasker be used from an external SD card ?
+
+Prior to Android 6.0, that is not possible, even using apps2SD.
+
+With Android 6.0+ if the external SD is being used as \'adoptable\',
+\'flex\' or \'internal\' (the wording varies) storage, there should be
+no issue.
+
+[]{#e}
+
+#### Can I use Tasker to turn the screen on and off ?
+
+Turning on, use the Display / Turn On action. Unfortunately, that action
+is inaccessible with Android 2.3+.
+
+For turning off, you can use the Display / System Lock action with
+Android 2.0+.
+
+For Android 1.6, you can set the Display Timeout to it\'s minimum
+(around 7 seconds) and then set it back to normal in response to a
+Display Off event.
+
+[]{#f}
+
+#### How do I create my default settings ?
+
+You don\'t have to configure \'default\' settings in Tasker. The
+\'default\' settings are how your device is configured before any Tasker
+profile becomes active. This \'default\' is automatically restored as
+profiles become inactive.
+
+Exception: changes to settings made in *Exit* tasks are not restored.
+
+[]{#g}
+
+#### How can I run more than one task when a profile goes active ?
+
+Add an action *Perform Task* from the category *Tasker* for each task
+that you want to run (don\'t click the Stop button).
+
+**Warning:**: settings in the called tasks will not be restored by
+Tasker, only settings changed directly within the Enter task.
+
+[]{#h}
+
+#### Can I hide the notification list entry when Tasker is running ?
+
+If the notification is very annoying, it can be removed on many devices
+by setting the icon transparent at **Menu / Prefs / Monitor /
+Notification Icon**.
+
+If that doesn\'t work, disable the Run In Foreground setting which can
+be found at **Menu / Prefs / Monitor / Run In Foreground**
+
+Please read the help text associated with this option first.
+
+[]{#h2}
+
+#### Can I change or remove the status bar icon when Tasker is running ?
+
+You can change it with **Menu / Prefs / Monitor / Notification Icon**.
+
+You can remove it with **Menu / Prefs / Monitor / Show Notification
+Icon**.
+
+[]{#i}
+
+#### What if I want a repeating time context, but I need to do something that takes a while ?
+
+- GPS On
+- Wait 3 minutes
+- GPS Off
+
+[]{#j}
+
+#### How can I do something every minute ?
+
+Set a repeat period of 2 minutes (the minumum allowed) and specify a
+task like this:
+
+- Perform Task, TaDa
+- Wait 1 Minute
+- Perform Task, TaDa
+
+[]{#k}
+
+#### How do I specify 9:30AM on Monday and 10AM on Tuesday with the same profile ?
+
+You can\'t, because the Time and Day subcontexts operate completely
+independent of each other. You have to specify two profiles and run the
+same Task(s) with each of them (by giving the task a name).
+
+[]{#k2}
+
+#### How do I specify weekend night-times ?
+
+It\'s tempting to say:
+
+> ` Time: 23 - 09 Day: Friday or Saturday`
+
+But that won\'t work, because on Sunday at e.g. 3am the Day context (and
+hence the whole profile) won\'t be active.
+
+For this kind of situation, you need to specify a profile for which
+morning you want to be active and another for which evenings. In the
+example, you want Friday and Saturday night plus Saturday or Sunday
+morning:
+
+> ` Time: 23 - 24 Day: Friday or Saturday`
+
+> ` Time: 00 - 09 Day: Saturday or Sunday`
+
+[]{#l}
+
+#### How do I stop the screen dimming when I have the display Stay On set to e.g. \'With AC\' ?
+
+The screen dims around 10 seconds before the current Screen Off Timeout
+value is reached. You can set Screen Timeout (for the relevant context
+e.g. \'while docked\') to **Never** (set all sliders to maximum) if you
+don\'t like that behaviour. []{#m}
+
+#### How can I stop Wifi Near toggling wifi on-off when the phone is in Airplane Mode ?
+
+Add a state **Airplane Mode** to your profile and click the **Invert**
+button, which means *if Airplane Mode is off*. []{#n}
+
+#### Can I divert incoming calls ?
+
+It\'s not possible to divert incoming calls via Android, but most Mobile
+Carriers accept special dialled sequences to do it before the call
+reaches your phone.
+
+You can then use Tasker\'s *Phone / Call* action (with *Auto Dial*
+checked) to setup and cancel incoming call diversions.
+
+The [Wikipedia page on Call
+Forwarding](http://en.wikipedia.org/wiki/Call_forwarding) is a good
+starting point.
+
+[]{#p}
+
+#### How can I detect if Wifi is connected (not just enabled) ?
+
+The \'standard\' way is to use State *Wifi Connected* to set and clear
+your own variable with an enter and exit task respectively.
+
+An alternative trick is to match the word `connected` or `connection` in
+the %WIFII variable (the actual word and lower/upper case changes with
+Android version).
+
+[]{#q}
+
+#### How can I import/export individual profiles, tasks or scenes ?
+
+Import:
+
+Go to the main screen, long click on the tab for the type of thing you
+want to import.
+
+Export:
+
+- ensure that `Menu / Prefs / UI / Beginner Mode` is **un**checked
+- go to the main screen
+- long-click on the thing you want to export
+
+[]{#s}
+
+#### How do I turn off the flashing notification LED ?
+
+Use the Audio / Notification Pulse action.
+
+If you\'re wondering what a flashing light is doing in the Audio
+section: ask Google, that\'s where they put it in Android Settings.
+
+[]{#t}
+
+#### \>How do I put my phone in Silent or Vibrate mode ?
+
+Use action *Audio / Silent Mode*.
+
+Do not try to do it with *Volume Ringer* or *Vibrate on Ringer*.
+
+[]{#u}
+
+#### Can I automate sending of an SMS / Call through Google Voice ?
+
+Not directly through Tasker. However, [Steelgirder
+Developments](http://sites.google.com/site/steelgirderdevelopmentsite/home)
+have (non-free) plugins which you can easily use with Tasker to
+accomplish this.
+
+Steelgirder and the author of Tasker are agreed on working together
+wherever further integration of these plugins and Tasker is needed e.g.
+support for Tasker variables.
+
+[]{#v}
+
+#### Can I change/remove the notification sounds for particular apps ?
+
+Yes, but it\'s a little complicated, please see the [relevant forum
+post](http://groups.google.com/group/tasker/browse_thread/thread/4a6b6ea8b4e4cc86).
+[]{#v2}
+
+#### Can I silence all notifications except from particular applications ?
+
+With Tasker versions from 1.0.10, you can try turning off all
+notifications (e.g. via Silent Mode or setting the Notification Volume
+to 0) and then using Tasker to do alerts for particular app
+notifications using the `Notification` event in the UI category. []{#w}
+
+#### Can I change the input method ?
+
+On a rooted phone, yes, using the free Secure Settings plugin.
+
+Consider also starring this [feature
+request](http://code.google.com/p/android/issues/detail?id=11677) with
+Google.
+
+[]{#y}
+
+#### How do I test whether I can reach the Internet (ping) ?
+
+
+ HTTP Get URL (a known webpage), Continue Task On Error
+ If [ %HTTPR = 200 ]
+ ...
+ Endif
+
+[]{#y2}
+
+#### How can I use whitespace (newline, tab etc) in action parameters ?
+
+Tasker trims the start and end of all parameters to prevent whitespace
+causing problems. The only exception is the `Variable Set` action.
+
+Therefore, if you want to use whitespace you should first assign it to a
+variable and then use the variable where you want the whitespace to
+appear:
+
+> ` Variable Set, %white, THISISANEWLINE Flash, Here's a newline: %white`
+
+[]{#y3}
+
+#### How can I run a task from a terminal login ?
+
+ am broadcast -a net.dinglisch.android.tasker.ACTION_TASK -e task_name YOUR_TASK_NAME
+
+That\'s only possible on a rooted phone because otherwise there will be
+a permission problem.
+
+[]{#y4}
+
+#### How can I silence the camera shutter sound ?
+
+This varies per device.
+
+Try creating a new profile with an **App** context and select the Camera
+app. When asked to create a task, add the following actions:
+
+1. *Task / Wait*, **2 seconds**
+2. *Audio / Sound Effects*, **off**
+3. *Audio / Media Volume*, **0**
+4. *Audio / System Volume*, **0**
+5. *Audio / Notification Volume*, **0**
+6. *Audio / Silent Mode*, **on**
+
+Then go to the Camera app, wait a couple of seconds and try taking a
+picture.
+
+If you still hear the shutter sound, go back to the Tasker UI, click on
+the task that you created and hit the **Play** button bottom-left to run
+the task manually. Then go back to the Camera app. If you still hear the
+shutter sound, then it\'s not going to be possible for Tasker to disable
+it on your device.
+
+Some manufacturers deliberately prevent disabling of the shutter sound,
+perhaps for legal reasons.
+
+Addendum
+
+A user has reported that setting DTMF volume to 0 removes the **focus**
+sound in the camera app.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+FAQ: Usage Problems  
+-------------------------------------------------------------
+
+- [Why won\'t Android let me uninstall Tasker ?](#0)
+- [Why doesn\'t the Kill App action work in Android 2.2 like it used
+ to ?](#a)
+- [Why isn\'t GPS coming on for my profile with Time And GPS Location
+ contexts ?](#c)
+- [Why can\'t I select Tasker for an application context ?](#d)
+- [Why does it take my Wifi Near state so long to exit ?](#e)
+- [Why isn\'t Tasker detecting when my Location Context changes ?](#f)
+- [Why does Tasker mess up the app launching when I have an
+ Application Context for it ?](#g)
+- [Why does my profile not do anything ?](#h)
+- [Why aren\'t my settings restored ?](#w)
+- Why does nothing happen when I click a Tasker widget ?
+- [Why does Tasker crash when I try to create a Location Context
+ ?](#j)
+- [Why can\'t I see any Tasker widgets in the home screen widget
+ selector ?](#k)
+- [Why doesn\'t my repeating Time Context work ?](#l)
+- [Why aren\'t my exit tasks run / settings restored before the device
+ shuts down ?](#m)
+- [Why does my location exit task fire multiple times ?](#n)
+- [Why does my Cell Near state keep going inactive ?](#o)
+- [Why doesn\'t Notify LED work ?](#p)
+- [Why do Tasker widgets disappear after a reboot on my Wildfire
+ ?](#q)
+- [Why isn\'t my docking station detected ?](#r)
+- [Why aren\'t I getting any cell data for the Cell Near state ?](#s)
+- [Why isn\'t there a green light for the On/Off radio button on the
+ main screen ?](#t)
+- [Why does the action Display Brightness cause my keyboard or
+ application to close ?](#u)
+- [Why is the date in Tasker\'s notification list completely wrong
+ ?](#v)
+- [Why won\'t Tasker install on my custom ROM ?](#w)
+- [Why doesn\'t my `Perform Task` action work when I Test it ?](#x)
+- [Why doesn\'t my App Context work ?](#app)
+- [Why doesn\'t the Keyguard action work properly ?](#keyguard)
+- [Why doesn\'t Tasker think my device is rooted ?](#root)
+
+------------------------------------------------------------------------
+
+[]{#0}
+
+#### Why won\'t Android let me uninstall Tasker ?
+
+It\'s probably because you\'re using an action which needs Tasker\'s
+device administrator function (e.g. `Display / System Lock`).
+
+You can disable it by going to
+`Android Settings / Location & Security / Device Administration`.
+
+[]{#a}
+
+#### Why doesn\'t the Kill App action work in Android 2.2 like it used to ?
+
+Google decided that the feature was being abused and causing more
+problems than it solved and it was therefore watered down.
+
+From Tasker version 1.0.21 it\'s more effective again if you have a
+rooted device.
+
+[]{#c}
+
+#### Why isn\'t GPS coming on for my profile with Time And GPS Location contexts ?
+
+In order to save power, Tasker only activates context detection as it is
+needed. Therefore it will not attempt to fix your GPS location unless
+the Time context is active.
+
+See the [Power Usage](#userguide/en/power.html) section of the userguide
+for more details.
+
+[]{#d}
+
+#### Why can\'t I select Tasker for an application context ?
+
+This is considered too dangerous. A mistake could easily result in being
+unable to enter Tasker and therefore being unable to rectify the
+mistake. []{#e}
+
+#### Why does it take my Wifi Near state so long to exit ?
+
+Wifi Near requires **two** check periods to pass without seeing the
+Access Point before the profile exits. This is intended to avoid the
+context activating and deactivating if the AP is briefly not visible.
+
+Note also that there are different check periods for when the device is
+on or off, and by default the off-period is much longer than the
+on-period. See Menu / Preferences / Monitor/ Display On/Off Timings.
+
+[]{#f}
+
+#### Why isn\'t Tasker detecting when my Location Context changes ?
+
+Your radius is probably too small.
+
+As an example, if you are not using GPS the accuracy of your fixes is
+probably around += 2km, so your radius should be also minimally 2km.
+
+If you \*are\* using GPS, the accuracy may still be only +-400m in
+built-up areas.
+
+Here\'s a good way to create a location context:
+
+- go to the geographical location you want a context for
+- make a new location context
+- deselect GPS if you don\'t want to use it
+- press Grab Fix, and wait till it\'s done
+
+This will set your radius appropriate to the accuracy of the location
+providers at that spot.
+
+If there\'s still nothing happening:
+
+- check GPS is on in Android Settings, if you\'re using GPS.
+- check your device has a view of the sky, if you\'re using GPS
+- network connectivity is often needed to get GPS started, and always
+ needed for a Net location context.
+- realize that location is only checked every 10 minutes by default
+ when the Display is off (to save power). You can check more often by
+ changing `Menu / Prefs / Monitor / Display Off Timings / All Checks`
+- try the [general \'nothing happens\'](#h) tips
+- look at [other possibilities for detecting your
+ location](#userguide/en/loctears.html)
+
+[]{#g}
+
+#### Why does Tasker mess up the app launching when I have an Application Context for it ?
+
+Some applications are sensitive like this. Probably all you have to do
+is put as the first action in the **Enter** task the action *Wait* and
+give as a parameter e.g. 300ms. If that doesn\'t work keep increasing
+the value until it does.
+
+That gives the application time to finish initializing before messing
+around with the screen brightness etc.
+
+[]{#w}
+
+#### Why aren\'t my settings restored ?
+
+Some possibilities:
+
+- if your profile sets setting x to *on*, then if x is already *on*
+ when the profile goes active, it will be left at *1* when the
+ profile exits. Test for this by putting an Alert / Notify action in
+ the enter task to see what the original value was.
+- some other apps installed on the system can cause Tasker to be
+ killed and therefore the original settings being forgotten e.g. this
+ has been reported to be a problem with Titanium Backup.
+- similarly, if the system is rebooted suddenly, some devices aren\'t
+ fast enough to save all the settings before the system turns off.
+
+[]{#h}
+
+#### Why does my profile not do anything ?
+
+Firstly, if are you using any of these other apps which have been
+reported as interfering try disabling or temporarily uninstalling them:
+
+- \'Task Killers\'
+- Quick System Info
+- Autostarts
+
+After that:
+
+- is the profile enabled ? It should have a green tick next to it.
+- have you clicked the *On* button in the [Profile List
+ screen](#userguide/en/activity_summary.html) before leaving Tasker ?
+ It should be showing a **green light**.
+- is the profile shown as active in the status bar pulldown ? If so,
+ it\'s probably your task that\'s not working.
+- make sure the Monitor service running in the foreground (see
+ `Menu / Prefs / Monitor`)
+- how\'s your available memory, see
+ `Android Settings / Application / Running Services / Available Memory`.
+ Are you maybe getting Tasker\'s low-memory notifications ?
+
+If your profile is activating but the task doesn\'t seem to do anything:
+
+- perhaps you are running a pirated version of Tasker ?
+- try enabling **Menu / Prefs / More / Popup Warning/Errors** to see
+ if any errors are occuring (they may not be shown till you go back
+ to the Tasker UI)
+- look in **Menu / More / Run Log** to see if the task is being
+ carried out.
+- try a simple task like *Alert / Vibrate* or *Alert / Flash*
+- perhaps another profile is interfering: do **Menu / Data / Backup**,
+ then delete all other profiles except the one that\'s not working
+
+[]{#i}
+
+#### Why does nothing happen when I click a Tasker widget ?
+
+Usually this is due to Tasker not being enabled, see the *On/Off* button
+in the first UI screen. []{#j}
+
+#### Why does Tasker crash when I try to create a Location Context ?
+
+The likely cause is that you are running a non-standard Android ROM
+which doesn\'t contain the correct (or maybe any) Google Maps library.
+[]{#k}
+
+#### Why can\'t I see any Tasker widgets in the home screen widget selector ?
+
+This is almost always because you have Tasker installed on the SD card,
+which is just not possible due to several reasons related to how Tasker
+works. []{#l}
+
+#### Why doesn\'t my repeating Time Context work ?
+
+It\'s important to understand that a repeating time context is a
+**series of instant events**.
+
+Trying to combine a repeating time context with another context that
+does active monitoring usually won\'t work e.g.
+
+> ` Time: Repeating Every 5 Minutes Task: Enable Wifi (no toggle)`
+
+> ` State: Wifi Near Task: XXX`
+
+Wifi Near is checked on a static schedule. You currently can\'t change
+the schedule dynamically, so the above two profiles will only do XXX
+when the 5 minute repeat happens to coincide with when Tasker is doing
+it\'s Wifi Near check.
+
+[]{#m}
+
+#### Why aren\'t my exit tasks run / settings restored before the device shuts down ?
+
+Android gives an app very little time to perform cleanup during
+shutdown, this is especially a problem on slow devices.
+
+Therefore (as of 1.0.9), Tasker only attempts to run *Variable Set,
+Clear, Add* and *Subtract* actions when the device shuts down, since
+they take relatively little time.
+
+In the future, Tasker will have some concept of default values which
+will then be restored when it starts after the device has booted again.
+
+On Android 1.5 devices, Tasker cannot do anything at shutdown because
+the system does not send a notification.
+
+[]{#n}
+
+#### Why does my location exit task fire multiple times ?
+
+Probably the location Android reports is *bouncing* between a point
+inside your location radius and one outside. This is relatively unusual
+because Tasker has some built-in mechanisms to try and prevent it.
+
+A quick fix is to add a *Cooldown* to your profile. Click on a context,
+select Profile then Properties and slide the Cooldown Time to 30
+minutes.
+
+The profile is then prevented from going active more than once every 30
+minutes.
+
+[]{#o}
+
+#### Why does my Cell Near state keep going inactive ?
+
+Even when your phone is motionless, it will probably still often switch
+between different cell towers. Going to a different room in your house
+may involve a whole different set of cell towers.
+
+When you notice your Cell Near state going inactive at your location
+(and assuming you still have a signal), launch Tasker, click on the Cell
+Near context and edit it. Click **Scan** and you should immediately see
+a new Cell added to the list. Click **Done** and then **Apply** and your
+context should go active again.
+
+Sometimes the new cell will only be visible for a few seconds and will
+not appear when you press scan. In that case, press the **Recent**
+button and select it manually from the list.
+
+[]{#p}
+
+#### Why doesn\'t Notify LED work ?
+
+From the action help (hint hint):
+
+- not all devices support all colours. Many devices will only support
+ red and green. In general, colours near the top of the list are more
+ likely to be supported.
+- some devices will only flash the LED when the device is off at the
+ time the notification is received.
+
+[]{#q}
+
+#### Why do Tasker widgets disappear after a reboot on my Wildfire ?
+
+This is a bug on some Wildfire firmware version.
+
+It\'s not possible for the Tasker developer to work around, but is
+reported as fixed in version 1.25.405.1 of the firmware.
+
+[]{#r}
+
+#### Why isn\'t my docking station detected ?
+
+Some docking stations just aren\'t recognized as such (Android doesn\'t
+indicate that a docking station has been connected).
+
+Depending on other things you connect your device to, you might be able
+to use one of the following as a workaround:
+
+- State: USB connected
+- State: Power
+- State: BT Connected (if it\'s a BT dock)
+
+[]{#s}
+
+#### Why aren\'t I getting any cell data for the Cell Near state ?
+
+A user reports being able to fix this issue as follows:
+
+ I was able to fix this issue by going into the EPST menues using
+ ##DATA# on the keypad and changing the EVDO Preferred mode from HDR to
+ Automatic.
+
+It\'s possible that you will only be able to receive, not make, phone
+calls as another symptom of this problem.
+
+[]{#t}
+
+#### Why isn\'t there a green light for the On/Off radio button on the main screen ?
+
+A user discovered that this happens when the DPI value of the Android
+build is set to particulart values (e.g. 200,240 is OK, 220 the light
+disappears). []{#u}
+
+#### Why does the action Display Brightness cause my keyboard or application to close ?
+
+Normally Android does not effect changes to brightness immediately, so
+Tasker has to use a trick to make it happen. That trick can sometimes
+have the side effect that e.g. some dialogs like the soft keyboard may
+close.
+
+To avoid that, you can deselect the Immediate Effect checkbox in the
+Display Brightness action.
+
+[]{#v}
+
+#### Why is the date in Tasker\'s notification list completely wrong ?
+
+This occurs if you select a transparent *Notification Icon* at
+`Menu / Prefs / Monitor`, but don\'t specify a *Custom Notification
+Layout*.
+
+Changing to a non-transparent icon or a custom layout will fix the
+problem.
+
+[]{#w}
+
+#### Why won\'t Tasker install on my custom ROM ?
+
+The most likely reason is that you don\'t have Google Maps installed on
+the device. With several custom ROMs that comes as a separate package.
+[]{#x}
+
+#### Why doesn\'t my `Perform Task` action work when I Test it ?
+
+When task (a) runs a `Perform Task` action to start task (b), the order
+in which the two tasks are executed depends on their relative
+priorities.
+
+A feature of the Test button is that the tested task (a) runs at
+extremely high priority to ensure that the task runs even if other tasks
+are running in the background.
+
+So testing `Perform Task` with the Test button will only work as
+expected if in actual usage task (a) will always have higher priority
+than task (b) or the `Perform Task` action has **Stop** specified.
+
+[]{#app}
+
+#### Why doesn\'t my App Context work ?
+
+If you are using Android 5.0+, make sure Tasker\'s Accessibility Service
+is enabled in Android Settings (Accessibility section).
+
+If you are using Nova Launcher, set
+`Settings / App & Widget Drawer / Advanced / Automatically Close` to
+**off**.
+
+Some apps (very few) aren\'t detected by Tasker, usually due to their
+internal structure.
+
+Some custom Android ROMs also have special configurations which prevent
+Tasker\'s app detection working.
+
+For the latter problem, there are a few things you can try:
+
+- look for special settings in your ROM that relate to \'keeping the
+ launcher in memory\'. They should be **disabled**.
+- change the build properties file. Look in `/system/build.prop` (or
+ possibly `/system/local.prop` or `/data/local.prop`) for a line
+ like:
+
+ > ro.HOME\_APP\_ADJ=-17
+
+ Change it in a terminal program to look like this:
+
+ > ro.HOME\_APP\_ADJ=1
+
+ If you didn\'t find an existing line, just add the new line as
+ above.
+
+ Note: you will first need to make `/system` writeable. You can do
+ that e.g. with Tasker\'s `Remount` action. Remember to make it
+ not-writeable again after making the change.
+
+- try detecting apps with a state using the **%WIN** (*window title*)
+ variable; create a new state
+
+ > `Variable Value, %WIN, Matches, TITLE`
+
+ where TITLE is the title of the window of the app you are interested
+ in. For this solution to work, you also need to enable Tasker\'s
+ *Accessibility Service* in Android Settings.
+
+ You can check what %WIN shows for the app you are interested in with
+ this profile:
+
+ > Event: Variable Set, %WIN\
+ > Alert / Flash, Win is now %WIN
+
+[]{#keyguard}
+
+#### Why doesn\'t the Keyguard action work properly ?
+
+Android does not officially support toggling of the Keyguard by an app.
+The Keyguard action was introduced in an early version of Tasker when a
+reliable workaround was possible.
+
+In more recent Android versions, the workaround is no longer so reliable
+due to internal changes made within Android. If Keyguard works at all,
+there may be disturbing side-effects.
+
+The Keyguard action will likely be most reliablewhen the display is on
+and and the Keyguard is already unlocked.
+
+Some people have more luck with the same functionality provided by the
+[Secure Settings
+plugin](https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin).
+After install, you can find the Secure Settings plugin in the **Plugin**
+action category. Note that a rooted device is **not** needed to use this
+part of Secure Settings.
+
+[]{#root}
+
+#### Why doesn\'t Tasker think my device is rooted ?
+
+Tasker requires two things before root functionality is enabled:
+
+1. the `su` program must be in your path
+2. **one** of the following must be found:
+ - a superuser package
+ - the word *modversion* somewhere in the file `/system/build.prop`
+
+If root is not being detected on your device but you are sure that root
+can be used by Tasker, you can therefore probably fix that by adding a
+line like:
+
+> `# modversion this line enables Tasker root support`
+
+to the top of the file `/system/build.prop`.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+FAQ: Why\... ?  
+--------------------------------------------------------
+
+- [Why am I an idiot if I use a pirated copy of Tasker ?](#f)
+- [Why is GPS often scanning when I unlock my device ?](#a)
+- [Why does Tasker need so many permissions ?](#b)
+- [Why does Tasker need the INTERNET permission ?](#c)
+- [Why isn\'t Tasker shown in the Application Context list ?](#d)
+- [Why does Tasker have it\'s own music player **and** controls for
+ the system music player ?](#e)
+- [Why does a Cell Near context not become inactive when I turn on
+ Airplane Mode ?](#g)
+- [Why can\'t I use a downloaded icon for my shortcut task / Notify
+ action ?](#h)
+- [Why does my profile have 2 enter tasks ? Why can\'t I add an exit
+ task ?](#i)
+
+------------------------------------------------------------------------
+
+[]{#f}
+
+#### Why am I an idiot if I use a pirated copy of Tasker ?
+
+The hacker can do virtually anything with your phone. Record your calls
+and upload them to a website, SMS your location and all your contacts,
+make calls automatically, wipe your SD card, secretely record from your
+microphone any time etc etc []{#a}
+
+#### Why is GPS often scanning when I unlock my device ?
+
+When the device wakes up, Tasker switches from a low-frequency GPS check
+schedule to a higher-frequency one. Android\'s GPS software always does
+an immediate scan when switching the check frequency.
+
+It\'s not because Tasker is constantly scanning while the device is off
+
+You can change the frequency in Menu / Prefs / Monitor.
+
+[]{#b}
+
+#### Why does Tasker need so many permissions ?
+
+Because it can do so much!
+
+Unfortunately, Android requires that an app specify it\'s permissions
+even if they are never used, which means that permissions for all of the
+things which the user could **potentially** ask Tasker to do need to be
+specified.
+
+If you are still concerned, consider that Tasker has over 25,000
+downloads at the time of writing and any abuse taking place would
+quickly be discovered.
+
+[]{#c}
+
+#### Why does Tasker need the INTERNET permission ?
+
+The INTERNET permission is used solely for:
+
+- google maps downloading map data, only for setting up a Location
+ context
+- to carry out HTTP Post/Get actions and other actions that require an
+ Internet connection by their nature
+- to verify the order number, and only until it has been successfully
+ verified
+- to check whether a new Tasker version is available, if configured in
+ Preferences
+
+Tasker never directly uses Internet access for **anything** else.
+
+[]{#d}
+
+#### Why isn\'t Tasker shown in the Application Context list ?
+
+Because it\'s easy to get into trouble firing tasks in Tasker. For
+example, if a profile is setup with a Tasker Application Context and a
+task with Load App Calculator, it will not be possible to enter Tasker
+anymore. []{#e}
+
+#### Why does Tasker have it\'s own music player **and** controls for the system music player ?
+
+- the system music player is not guaranteed to be present or the same
+ on all systems.
+- finer control can be exercised over the Tasker player e.g. starting
+ the track from a preset seek point
+- Tasker\'s player is more discrete, there is no notification bar
+ icon.
+- by having two players available you can do things like alternating
+ audio from different music sources or even playing simiultaneously.
+
+[]{#g}
+
+#### Why does a Cell Near context not become inactive when I turn on Airplane Mode ?
+
+Cell Near is *sticky*. That means that once active it stays active until
+a non-matching Cell ID is seen. In Airplane Mode no Cell IDs are seen
+and so the context stays active.
+
+Many people use Airplane Mode at night e.g. to save battery. If you also
+have a Cell Near profile that detects when you are home, it would become
+inactive at night if Cell Near wasn\'t sticky.
+
+A couple of points:
+
+- the Cell radio isn\'t being turned on by Tasker in Airplane Mode.
+- if you want a profile to become inactive for Airplane Mode, just add
+ an Inverted state Airplane Mode to it.
+
+[]{#h}
+
+#### Why can\'t I use a downloaded icon for my shortcut task / `Notify` action ?
+
+Some things just weren\'t meant to be (i.e. Android doesn\'t allow it).
+
+To solve the shortcut problem, you can always use a widget though.
+
+For notifications:
+
+- if you would like this to be possible one day, please star this
+ [Android feature
+ request](http://code.google.com/p/android/issues/detail?id=12302)
+- it would be technically possible to create \'icon pack\' APKs and
+ that might happen one day
+
+[]{#i}
+
+#### Why does my profile have 2 enter tasks ? Why can\'t I add an exit task ?
+
+That\'s because it\'s an [instant](#instant) profile.
+
+As a convenience, the Exit task with such profiles is replaced by an
+extra Enter task in case you have a lot to do with that profile.
+
+Note that the tasks you specify execute in the order they are specified,
+their actions do not alternate.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+FAQ: App Creation  
+-----------------------------------------------------------
+
+- [Does app creation support profiles and scenes ?](#c)
+- [Why is the app always shown as running ?](#a)
+- [How do I do initialization on the first launch ?](#b)
+- [How can my task tell if it is running in Tasker or a child app
+ ?](#h)
+- [Why isn\'t my app detecting background events ?](#d)
+- [How can I send the developer a short-term App Factory log ?](#e)
+- [How can I send the developer a long-term App Factory log ?](#e2)
+- [Can I include Google Play\'s licencing service in my app ?](#f)
+- [Can I get the java source code from my created app ?](#g)
+
+[]{#c}
+
+#### Does app creation support profiles and scenes ?
+
+Sure. You can export projects as apps and projects can contain profiles,
+tasks and scenes.
+
+For help accessing projects, see `Menu / Info / Help This Screen` in the
+main screen.
+
+[]{#a}
+
+#### Why is the app always shown as running ?
+
+Tasker tries to detect when it\'s monitor service is no longer needed
+but that is not always possible. You can put a `Disable` action from the
+`Tasker` category at the end of your launch task to ensure that it
+happens.
+
+The monitor will be started again automatically each time the app is
+lauched from the home screen.
+
+[]{#b}
+
+#### How do I do initialization on the first launch ?
+
+Setup your launch task something like this:
+
+ If %LaunchCount = 0
+ ...initialization actions...
+ Else
+ ...normal actions...
+ Elsif
+ Variable Add, %LaunchCount, 1
+
+[]{#h}
+
+#### How can my task tell if it is running in Tasker or a child app ?
+
+Use the **Test App** action and select the mode **This Package**.
+
+The resulting variable will contain the package identifier you specified
+in the App Configuration screen if the task is running in a child app,
+otherwise it will contain one of *net.dinglisch.android.tasker* or
+*net.dinglisch.android.taskerm*.
+
+[]{#d}
+
+#### Why isn\'t my app detecting background events ?
+
+One possible cause is: when an app has just been installed on Android it
+is in a \'frozen\' state until there is some user interaction with it
+(usually clicking the home screen icon at least once). []{#e}
+
+#### How can I send the developer a short-term App Factory log ?
+
+- download aLogcat, free from Android Market
+- disable Tasker in the main screen bottom-left
+- in the App Config screen, check *Advanced Properties* and then
+ *Debug*
+- create and install the new app \*twice\*
+- launch the new app from the home screen
+- reproduce whatever conditions cause the problem
+- go to aLogCat, click **Menu / Pause** then **Menu / Send**
+- the destination email is listed in **Menu / Info / User Support** in
+ Tasker
+- include at the top a brief description of the problem that the email
+ concerns
+
+Try to make the log as soon as possible after the problem occurs.
+
+[]{#e2}
+
+#### How can I send the developer a long-term App Factory log ?
+
+- disable Tasker by long-clicking the icon top-left in the main screen
+- in the App Config screen, check *Advanced Properties* and then
+ *Debug*
+- create and install the new app \*twice\*
+- enable the **Storage** permission for the app in Android Settings if
+ necessary
+- launch the new app from the home screen
+- reproduce whatever conditions cause the problem
+- send the developer the log files in the directory NAMEOFAPP in the
+ root directory of the SD card
+- the destination email is listed in **Menu / Info / User Support** in
+ Tasker
+- include at the top a brief description of the problem that the email
+ concerns
+
+Try to make the log as soon as possible after the problem occurs.
+
+[]{#f}
+
+#### Can I include Google Play\'s licencing service in my app ?
+
+No, this is not possible.
+
+Tasker\'s code does not include the licencing service because of
+continual problems it caused. In any case, the licensing service is
+ineffectual for preventing unauthorized code distribution.
+
+If you really want to include licensing in your app, you could e.g.
+require the user to enter their order code and check via the *HTTP Get*
+action on your server if that is a valid number.
+
+Setting up such a server to download Google order details and accept
+verification requests is a lot of effort and requires some technical
+knowledge, however.
+
+[]{#g}
+
+#### Can I get the java source code from my created app ?
+
+Short answer: no.
+
+Long answer: when a new app is created, Tasker doesn\'t create new java
+code to implement the things in your task or project configuration.
+Instead, the existing Tasker code is used with the new app and executed
+similarly to how it\'s executed in Tasker, but in the shell of a new
+APK.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+FAQ: Other  
+----------------------------------------------------
+
+- [Do you plan to include feature X ?](#a)
+- [Should I worry about using Tasker\'s Accessibility service ?](#b)
+- [What\'s the difference between a Widget and a Shortcut ?](#diff)
+- [What\'s an *Instant Profile* ?](#instant)
+
+[]{#a}
+
+#### Do you plan to include feature X ?
+
+The developer has a large list of potential features and works through
+it according to a mystical method based on star configurations. It\'s
+difficult to say what will be done in advance, sorry. []{#b}
+
+#### Should I worry about using Tasker\'s Accessibility service ?
+
+Not at all.
+
+Although the Android warning says Tasker might read passwords, in fact:
+
+- Android doesn\'t allow apps to see the contents of fields labelled
+ *Password*
+- Tasker doesn\'t even ask Android for data about text fields, only
+ buttons, windows and notifications
+
+[]{#instant}
+
+#### What\'s an *Instant Profile* ?
+
+Most profiles have a duration. Their enter task fires, they are active
+for a while, then they go inactive and settings may be restored or an
+exit task fired. However, profiles with
+
+- an Event context, **or**
+- a Time context where the From parameter is the same as the To
+ parameter, **or**
+- a Time context with a repeat value specified
+
+are only active for an instant and hence it does not make sense to talk
+about an exit task and restoration of settings.
+
+There\'s no point setting brightness from 200 to 30, and then a
+millisecond later back to 200, therefore settings made by an instant
+profile stay at whatever value is specified.