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.

{
    "type": "basic",
    "from": {
        "simultaneous": [
            {
                "key_code": "a"
            },
            {
                "key_code": "s"
            },
            {
                "key_code": "d"
            }
        ],
        "modifiers": {
            "optional": ["any"]
        }
    },
    "to": [
        {
            "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 Preferences > Complex Modifications > Parameters.

karabiner-elements-simultaneous_threshold_milliseconds@2x.png

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