{"record":{"id":"c43e5d0f3c6bfe5a","repo":"kovidgoyal/kitty","slug":"ignoring-invalid-mouse-action-val","errorCode":null,"errorMessage":"Ignoring invalid mouse action: {val}","messagePattern":"Ignoring invalid mouse action: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"kitty/options/utils.py","lineNumber":1599,"sourceCode":"                log_error(f'Shortcut: {sc} has unknown key, ignoring')\n            return\n    if is_sequence:\n        if trigger is not None:\n            yield KeyDefinition(True, trigger, rest, definition=action, options=options)\n    else:\n        assert key is not None\n        yield KeyDefinition(False, SingleKey(mods, is_native, key), definition=action, options=options)\n\n\ndef parse_mouse_map(val: str) -> Iterable[MouseMapping]:\n    parts = val.split(maxsplit=3)\n    if len(parts) == 4:\n        xbutton, event, modes, action = parts\n    elif len(parts) > 2:\n        xbutton, event, modes = parts\n        action = ''\n    else:\n        log_error(f'Ignoring invalid mouse action: {val}')\n        return\n    kparts = xbutton.split('+')\n    if len(kparts) > 1:\n        mparts, obutton = kparts[:-1], kparts[-1].lower()\n        mods = parse_mods(mparts, obutton)\n        if mods is None:\n            return\n    else:\n        obutton = parts[0].lower()\n        mods = 0\n    try:\n        b = mouse_button_map.get(obutton, obutton)[1:]\n        button = getattr(defines, f'GLFW_MOUSE_BUTTON_{b}')\n    except Exception:\n        log_error(f'Mouse button: {xbutton} not recognized, ignoring')\n        return\n    try:\n        count = mouse_trigger_count_map[event.lower()]","sourceCodeStart":1581,"sourceCodeEnd":1617,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/options/utils.py#L1581-L1617","documentation":"A mouse_map line must split into at least 3 parts (button event [modes [action]]). With fewer than 3 tokens kitty logs this and ignores the mapping.","triggerScenarios":"mouse_map with only 1-2 tokens, e.g. 'mouse_map left click' missing modes, or 'mouse_map right press grabbed' where modes is present but action missing is still 3 tokens (valid); under 3 tokens fails.","commonSituations":"Omitting the modes ('grabbed'/'ungrabbed') argument; writing action-only lines; broken multi-line paste.","solutions":["Use the full form: mouse_map <button(+mods)> <event> <modes> [action].","Example: mouse_map left click ungrabbed mouse_handle_click selection link prompt","Ensure at least 3 whitespace-separated fields."],"exampleFix":"# before\nmouse_map right click\n\n# after\nmouse_map right click ungrabbed paste","handlingStrategy":"validation","validationCode":"def valid_mouse_map_line(val: str) -> bool:\n    return len(val.split()) >= 3","typeGuard":"def is_mouse_map_armed(val: str) -> bool:\n    return len(val.split()) >= 3","tryCatchPattern":null,"preventionTips":["Always include modes field (grabbed/ungrabbed)","Use full documented mouse_map syntax"],"tags":["kitty","config","mouse","mouse-map"],"backgroundTag":"config-value-validation-failed","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}