from.simultaneous

simultaneous manipulates keys which are pressed simultaneously in 50 milliseconds.

Example

This json defines manipulator which changes a+s+d to mission_control.

{
    "description": "Pressing the a,s,d keys simultaneously launches Mission Control",
    "manipulators": [
        {
            "type": "basic",
            "from": {
                "simultaneous": [
                    { "key_code": "a" },
                    { "key_code": "s" },
                    { "key_code": "d" }
                ],
                "modifiers": { "optional": ["any"] }
            },
            "to": [{ "apple_vendor_keyboard_key_code": "mission_control" }]
        }
    ]
}

Manipulated input #1

  • Input:
    1. a key_down
    2. s key_down
    3. d key_down
  • Output:
    1. mission_control

Manipulated input #2

  • Input:
    1. s key_down
    2. a key_down
    3. d key_down
  • Output:
    1. mission_control

Not manipulated input #1

a is released before all input events are pressed.

  • Input:
    1. a key_down
    2. s key_down
    3. a key_up
    4. d key_down
  • Output:
    1. a key_down
    2. s key_down
    3. a key_up
    4. d key_down

Not manipulated input #2

Another key (f) is pressed before all input events are pressed.

  • Input:
    1. a key_down
    2. s key_down
    3. f key_down
    4. d key_down
  • Output:
    1. a key_down
    2. s key_down
    3. f key_down
    4. d key_down

About key_up

The key_up event is posted when you release any from events.

For example, changing tab+q to mission_control works as follows.

Input Output
tab key_down
q key_down mission_control key_down
tab key_up mission_control key_up
q key_up

Change threshold milliseconds

You can adjust threshold on Karabiner-Elements Settings > Parameters.

karabiner-elements-simultaneous_threshold_milliseconds@2x.png

It is same as adjusting basic.simultaneous_threshold_milliseconds parameter in json.