# 2.3 Independent Software

Independent software can be used to create layers, macros, and automation scripts. Additionally, unlike keyboard specific software, independent software is application aware. This means the software can detect the front most application and then trigger scripts or hotkeys. This means a hotkey like shift+ctrl+alt/option+a can have different mappings defined for each application allowing one keyboard layer to map to multiple layers or a one-to-many keyboard layer. I'll talk more about implementing application layers in [categorizing layers](https://jonny-wamsley.gitbook.io/the-ultimate-guide-to-keyboard-layers/ch-5-advance-layer-patterns/5.5-categorizing-layers).

### Keyboard Maestro

For mac, Keyboard Maestro lets you automate applications or web sites, text or images, simple or complex, on command or scheduled. I use keyboard maestro for context switching between applications and for complex macros. When I first got my mac, I created all my layers in keyboard maestro before I had an ergokeyboard.

![Keyboard Maestro application layer for chrome move left one tab](https://3776368646-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKoZa1xwxAlOy01IlxMgW%2Fuploads%2FJfHuoncHuFt3o5WATN2H%2FScreen%20Shot%202022-06-11%20at%206.13.33%20PM.png?alt=media\&token=f1e93e9c-4fd2-426e-8fcf-171518dec2e8)

Keyboard Maestro is an application aware program. When a hot key is pressed, then the frontmost application it checked. If the front most application is google chrome, then the hot key to move left one tab is executed.

### Karabiner-Elements

For mac, [Karabiner-Elements](https://karabiner-elements.pqrs.org/) is a powerful and stable keyboard customizer. I use Karabiner-Elements for my mouse and as my application aware program.

Karabiner-Elements is an application aware program by including a conditional option to trigger. For example, below is a snippet that identifies the front most application, and if the application is goole Chrome, then key codes can be activated.

```
"conditions": [
    {
        "bundle_identifiers": [
            "^com\\.google\\.Chrome"
        ],
        "type": "frontmost_application_if"
    }
],
```

### Auto Hotkeys

For windows, [Auto Hotkeys](https://www.autohotkey.com/) is a free and powerful automation scripting language. You can easily create scripts that remap keys and key combinations to macros. This is how I first started my layer journey on a laptop computer.

Auto Hotkeys is an application aware program that can detect the [last found window](https://www.autohotkey.com/docs/misc/WinTitle.htm#LastFoundWindow) which can be used as a condition for triggering specific application layers.

### Keyboard Layout Editor

If you do not have layer editing firmware and/or keyboard specific software, then you can still edit your layout depending on your OS.

* [Ukelele](https://software.sil.org/ukelele/) for mac
* [Microsoft windows Layout Creator](https://www.microsoft.com/en-us/download/details.aspx?id=102134)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://jonny-wamsley.gitbook.io/the-ultimate-guide-to-keyboard-layers/ch-2-setup/2.3-software.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
