This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
action:Switch_or_Case [2016/06/21 23:25] peternlewis |
action:Switch_or_Case [2017/09/26 01:16] peternlewis |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | The //Switch or Case action// lets you read a string from the System Clipboard, from a Named Clipboard, from a variable, or from a file and then match it against various other strings to choose which set of actions to do. | + | {{:action:switch-icon.png?nolink|}} |
+ | ====== Switch/Case Action ====== | ||
- | The action contains a sequence of conditional segments, each of which tests the source string and then conditionally executes the corresponding set of actions. | + | **The //Switch/Case action// is used to perform different actions based on different values of a common _parameter_.** It is very similar to the [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch|JavaScript Switch]] statement. |
- | The condition can test the source and see if: | + | The _Switch_ Action is a good alternative to using multiple, nested, [[action:If_Then_Else|If/Then]] Actions. |
- | * has text of some sort. | + | ===== Parameters ===== |
- | * does not have text. | + | |
- | * has an image of some sort. | + | |
- | * does not have an image. | + | |
- | * is exactly (case insensitively) a specified string. | + | |
- | * is not exactly (case insensitively) a specified string. | + | |
- | * is alphabetically before a specified string. (v7.2+) | + | |
- | * is alphabetically after a specified string. (v7.2+) | + | |
- | * contains (case insensitively) a specified string. | + | |
- | * does not contain (case insensitively) a specified string. | + | |
- | * matches a specified regular expression. | + | |
- | * does not match a specified regular expression. | + | |
- | * has some flavor that conforms to the specified [Uniform Type Identifier](https://en.wikipedia.org/wiki/Uniform_Type_Identifier). | + | |
- | * does not have a flavor that conforms to the specified Uniform Type Identifier. | + | |
- | * otherwise (aka always). | + | |
- | In all cases at most one sequence will execute, and the conditions are evaluated in order - the first one that matches will execute. So don't put an "otherwise" clause in the middle of your switch statement. | + | **The Switch _parameter_ may be any of the following:** |
+ | * [[:Clipboards|System Clipboard]] | ||
+ | * [[:Clipboards#Named_Clipboards|Named Clipboard]] | ||
+ | * [[manual:Variables|Keyboard Maestro Variable]] | ||
+ | * Text (which can use [[:Tokens|Tokens]]) | ||
- | ===== See Also ===== | + | ===== Default Configuration ===== |
+ | |||
+ | When you insert the _Switch_ Action, it is configured to switch based on the _System Clipboard_, but can be easily changed to other parameters. It initially looks like this: | ||
+ | |||
+ | {{:action:km-7.3-switch.png?nolink|}} | ||
+ | |||
+ | For each _Condition_ that you add, you can enter zero or more _Actions_ that will be executed when that _Condition_ is met. After those _Action(s)_ are executed, or if no _Conditions_ are met, the _Switch_ Action is exited. | ||
---- | ---- | ||
+ | ===== Example ===== | ||
+ | See this Forum Topic for a downloadable example:\\ | ||
+ | [ACTION: Switch Case Based on FrontMost App](https://forum.keyboardmaestro.com/t/action-switch-case-based-on-frontmost-app/7294) | ||
+ | |||
+ | ===== Conditions ===== | ||
+ | |||
+ | The _Conditions_ available depend on the _Parameter_ that is chosen: | ||
+ | {{:action:km-7.3-switch-conditions.png?nolink|}} | ||
+ | |||
+ | The _Conditions_ are defined as follows: | ||
+ | |||
+ | ^Condition^Definition^ | ||
+ | |has text |Clipboard has at least one item containing text of some sort.| | ||
+ | |does not have text |Clipboard does not have any text items.| | ||
+ | |has image |Clipboard has one or more images.| | ||
+ | |does not have image |Clipboard does not have any images.| | ||
+ | |is |is exactly (case insensitive) the specified string.| | ||
+ | |is not |is not exactly (case insensitive) the specified string.| | ||
+ | |is before |is alphabetically before the specified string. (v7.2+)| | ||
+ | |is after |is alphabetically after the specified string. (v7.2+)| | ||
+ | |contains |contains (case insensitive) the specified string.| | ||
+ | |does not contain |does not contain (case insensitive) the specified string.| | ||
+ | |matches |matches the specified regular expression.| | ||
+ | |does not match |does not match the specified regular expression.| | ||
+ | |conforms to |Clipboard has an item with the UTI class that conforms to the specified [Uniform Type Identifier](https://en.wikipedia.org/wiki/Uniform_Type_Identifier).| | ||
+ | |does not conform to |Clipboard does not have an item with the UTI class that conforms to the specified Uniform Type Identifier.| | ||
+ | |otherwise |will execute if none of the Conditions in the Switch, that are entered above _otherwise_, are met.| | ||
+ | |||
+ | |||
+ | The _Otherwise_ _Condition_ will execute if none of the above _Conditions_ are met. The _Switch_ Action will then exit. So, the _Otherwise_ _Condition_ should always be placed as the last _Condition_ in the _Switch_ Action. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ===== See Also ===== | ||
=== Actions === | === Actions === | ||
* [[action:If Then Else|If Then Else]] | * [[action:If Then Else|If Then Else]] | ||
- | * [[action:Pause|Pause Until Conditions Met]] | + | * [[action:Pause_Until|Pause Until Conditions Met]] |
* [[action:Until|Execute Action Until Conditions Met]] | * [[action:Until|Execute Action Until Conditions Met]] | ||
* [[action:While|Execute Action While Conditions Met]] | * [[action:While|Execute Action While Conditions Met]] | ||
Line 38: | Line 70: | ||
* [[:Conditions|See all Conditions]] | * [[:Conditions|See all Conditions]] | ||
- | |||
- | ---- | ||
==== Forum ==== | ==== Forum ==== | ||
- | - [[https://www.google.fr/search?q=site:forum.keyboardmaestro.com+Switch+action|Keyboard Maestro Forum topics about Switch or Case action]] | + | - [[https://forum.keyboardmaestro.com/search?q=Switch%20action|Keyboard Maestro Forum topics about Switch or Case action]] |