Karabiner-elements: KE 12.1.0, OSX 10.12.6: caps_lock sent by to_if_alone is not recognized

Created on 29 Jun 2018  路  3Comments  路  Source: pqrs-org/Karabiner-Elements

Here is the rule. It's the only rule I have while I'm testing. The problem also occurs when , "lazy": true is removed.

{
    "description": "Interrupted caps_lock sends fn",
    "manipulators": [
        {
            "from": {
                "key_code": "caps_lock",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "fn",
                    "lazy": true
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "caps_lock"
                }
            ],
            "type": "basic"
        }
    ]
}

It generates reasonable events when I chord caps_lock + a:

eventType:key_down        code:0x10002    name:fn              misc:
eventType:key_down        code:0x4        name:a               misc:
eventType:key_up          code:0x4        name:a               misc:
eventType:key_up          code:0x10002    name:fn              misc:

It also generates reasonable events when I tap caps_lock:

eventType:key_down        code:0x10002    name:fn              misc:
eventType:key_up          code:0x10002    name:fn              misc:
eventType:key_down        code:0x39       name:caps_lock       misc:
eventType:key_up          code:0x39       name:caps_lock       misc:

However, the Caps Lock state never turns on.

When I disable the keyboard in Karabiner-Elements' Devices preferences, tapping caps_lock successfully toggles the Caps Lock state.

If I leave Caps Lock on and re-enable the device, tapping caps_lock turns Caps Lock off. Tapping it again will not turn it back on.

Most helpful comment

I just now discovered the solution. It's a problem in my rule. Adding "hold_down_milliseconds": 100 to the "to_if_alone" block solved it.

All 3 comments

I just installed the 12.1.3 beta and can confirm the problem still exists.

I uninstalled 12.1.3 and deleted karabiner.json.
I installed 12.1.0 from a fresh download.
caps_lock worked, it toggled the Caps Lock state on and off.
I added the troublesome rule (without "lazy": true), and caps_lock stopped working.
Event Viewer still sees caps_lock, but the system does not recognize it.

In case it helps, more details from the Event Viewer:

{
    "frontmost_application": {
        "bundle_identifier": "org.mozilla.firefox",
        "file_path": "/Users/troc/Applications/Firefox.app/Contents/MacOS/firefox"
    },
    "input_source_identifiers": {
        "input_mode_id": "",
        "input_source_id": "com.apple.keylayout.US",
        "language": "en"
    },
    "keyboard_type": "ansi",
    "variables": {}
}

[
    {
        "is_keyboard": true,
        "is_pointing_device": false,
        "location_id": 103809024,
        "manufacturer": "Apple Inc.",
        "product": "Apple Internal Keyboard / Trackpad",
        "product_id": 566,
        "registry_entry_id": 4294969135,
        "transport": "USB",
        "vendor_id": 1452
    },
    {
        "is_keyboard": false,
        "is_pointing_device": true,
        "location_id": 103809024,
        "manufacturer": "Apple Inc.",
        "product": "Apple Internal Keyboard / Trackpad",
        "product_id": 566,
        "registry_entry_id": 4294969145,
        "transport": "USB",
        "vendor_id": 1452
    },
    {
        "is_keyboard": true,
        "is_pointing_device": false,
        "location_id": 605159424,
        "manufacturer": "Apple, Inc",
        "product": "Apple Keyboard",
        "product_id": 544,
        "registry_entry_id": 4295080964,
        "transport": "USB",
        "vendor_id": 1452
    },
    {
        "is_keyboard": false,
        "is_pointing_device": true,
        "location_id": 605093888,
        "manufacturer": "Tablet",
        "product": "PTZ-630",
        "product_id": 177,
        "registry_entry_id": 4295080961,
        "transport": "USB",
        "vendor_id": 1386
    }
]

I just now discovered the solution. It's a problem in my rule. Adding "hold_down_milliseconds": 100 to the "to_if_alone" block solved it.

Was this page helpful?
0 / 5 - 0 ratings