{"version":3,"names":["kittyKeyMap","fromKittyMods","mod","shift","alt","ctrl","super","hyper","meta","capsLock","numLock","functionalKeyMap","A","B","C","D","H","F","E","P","Q","S","tildeKeyMap","specialKeyRe","parseKittySpecialKey","sequence","match","exec","keyNumOrOne","modifierStr","eventTypeStr","terminator","keyName","undefined","key","name","option","number","raw","eventType","source","modifierMask","parseInt","Number","isNaN","mods","repeated","kittyRe","parseKittyKeyboard","specialResult","params","fields","split","length","text","field1","codepointStr","codepoint","shiftedCodepoint","baseCodepoint","shifted","base","knownKey","code","char","String","fromCodePoint","baseCode","field2","codepoints","cpStr","cp","isPrintable","toLocaleUpperCase"],"sources":["parse-keypress-kitty.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noControlCharactersInRegex: intentional ESC/CSI pattern matching in kitty keyboard protocol */\n// Kitty Keyboard Protocol parser\n// Based on https://sw.kovidgoyal.net/kitty/keyboard-protocol/\n\nimport type { ParsedKey } from \"./parse-keypress.ts\";\n\nconst kittyKeyMap: Record<number, string> = {\n\t// Standard keys\n\t27: \"escape\",\n\t9: \"tab\",\n\t13: \"return\",\n\t127: \"backspace\",\n\n\t// Arrow keys\n\t57344: \"escape\",\n\t57345: \"return\",\n\t57346: \"tab\",\n\t57347: \"backspace\",\n\t57348: \"insert\",\n\t57349: \"delete\",\n\t57350: \"left\",\n\t57351: \"right\",\n\t57352: \"up\",\n\t57353: \"down\",\n\t57354: \"pageup\",\n\t57355: \"pagedown\",\n\t57356: \"home\",\n\t57357: \"end\",\n\t57358: \"capslock\",\n\t57359: \"scrolllock\",\n\t57360: \"numlock\",\n\t57361: \"printscreen\",\n\t57362: \"pause\",\n\t57363: \"menu\",\n\n\t// Function keys\n\t57364: \"f1\",\n\t57365: \"f2\",\n\t57366: \"f3\",\n\t57367: \"f4\",\n\t57368: \"f5\",\n\t57369: \"f6\",\n\t57370: \"f7\",\n\t57371: \"f8\",\n\t57372: \"f9\",\n\t57373: \"f10\",\n\t57374: \"f11\",\n\t57375: \"f12\",\n\t57376: \"f13\",\n\t57377: \"f14\",\n\t57378: \"f15\",\n\t57379: \"f16\",\n\t57380: \"f17\",\n\t57381: \"f18\",\n\t57382: \"f19\",\n\t57383: \"f20\",\n\t57384: \"f21\",\n\t57385: \"f22\",\n\t57386: \"f23\",\n\t57387: \"f24\",\n\t57388: \"f25\",\n\t57389: \"f26\",\n\t57390: \"f27\",\n\t57391: \"f28\",\n\t57392: \"f29\",\n\t57393: \"f30\",\n\t57394: \"f31\",\n\t57395: \"f32\",\n\t57396: \"f33\",\n\t57397: \"f34\",\n\t57398: \"f35\",\n\n\t// Keypad\n\t57399: \"kp0\",\n\t57400: \"kp1\",\n\t57401: \"kp2\",\n\t57402: \"kp3\",\n\t57403: \"kp4\",\n\t57404: \"kp5\",\n\t57405: \"kp6\",\n\t57406: \"kp7\",\n\t57407: \"kp8\",\n\t57408: \"kp9\",\n\t57409: \"kpdecimal\",\n\t57410: \"kpdivide\",\n\t57411: \"kpmultiply\",\n\t57412: \"kpminus\",\n\t57413: \"kpplus\",\n\t57414: \"kpenter\",\n\t57415: \"kpequal\",\n\t57416: \"kpseparator\",\n\t57417: \"kpleft\",\n\t57418: \"kpright\",\n\t57419: \"kpup\",\n\t57420: \"kpdown\",\n\t57421: \"kppageup\",\n\t57422: \"kppagedown\",\n\t57423: \"kphome\",\n\t57424: \"kpend\",\n\t57425: \"kpinsert\",\n\t57426: \"kpdelete\",\n\t57427: \"clear\",\n\n\t// Media keys\n\t57428: \"mediaplay\",\n\t57429: \"mediapause\",\n\t57430: \"mediaplaypause\",\n\t57431: \"mediareverse\",\n\t57432: \"mediastop\",\n\t57433: \"mediafastforward\",\n\t57434: \"mediarewind\",\n\t57435: \"medianext\",\n\t57436: \"mediaprev\",\n\t57437: \"mediarecord\",\n\n\t// Volume keys\n\t57438: \"volumedown\",\n\t57439: \"volumeup\",\n\t57440: \"mute\",\n\n\t// Modifiers\n\t57441: \"leftshift\",\n\t57442: \"leftctrl\",\n\t57443: \"leftalt\",\n\t57444: \"leftsuper\",\n\t57445: \"lefthyper\",\n\t57446: \"leftmeta\",\n\t57447: \"rightshift\",\n\t57448: \"rightctrl\",\n\t57449: \"rightalt\",\n\t57450: \"rightsuper\",\n\t57451: \"righthyper\",\n\t57452: \"rightmeta\",\n\n\t// Special\n\t57453: \"iso_level3_shift\",\n\t57454: \"iso_level5_shift\",\n};\n\nfunction fromKittyMods(mod: number): {\n\tshift: boolean;\n\talt: boolean;\n\tctrl: boolean;\n\tsuper: boolean;\n\thyper: boolean;\n\tmeta: boolean;\n\tcapsLock: boolean;\n\tnumLock: boolean;\n} {\n\treturn {\n\t\tshift: !!(mod & 1),\n\t\talt: !!(mod & 2),\n\t\tctrl: !!(mod & 4),\n\t\tsuper: !!(mod & 8),\n\t\thyper: !!(mod & 16),\n\t\tmeta: !!(mod & 32),\n\t\tcapsLock: !!(mod & 64),\n\t\tnumLock: !!(mod & 128),\n\t};\n}\n\n// Map functional key CSI codes to key names\nconst functionalKeyMap: Record<string, string> = {\n\tA: \"up\",\n\tB: \"down\",\n\tC: \"right\",\n\tD: \"left\",\n\tH: \"home\",\n\tF: \"end\",\n\tE: \"clear\",\n\tP: \"f1\",\n\tQ: \"f2\",\n\tS: \"f4\",\n};\n\n// Map tilde key numbers to key names (CSI number ~ format)\nconst tildeKeyMap: Record<string, string> = {\n\t\"1\": \"home\",\n\t\"2\": \"insert\",\n\t\"3\": \"delete\",\n\t\"4\": \"end\",\n\t\"5\": \"pageup\",\n\t\"6\": \"pagedown\",\n\t\"7\": \"home\", // rxvt\n\t\"8\": \"end\", // rxvt\n\t\"11\": \"f1\",\n\t\"12\": \"f2\",\n\t\"13\": \"f3\",\n\t\"14\": \"f4\",\n\t\"15\": \"f5\",\n\t\"17\": \"f6\",\n\t\"18\": \"f7\",\n\t\"19\": \"f8\",\n\t\"20\": \"f9\",\n\t\"21\": \"f10\",\n\t\"23\": \"f11\",\n\t\"24\": \"f12\",\n\t\"29\": \"menu\",\n\t\"57427\": \"clear\",\n};\n\n/**\n * Parse Kitty keyboard protocol special keys (functional and tilde) with event type\n * Formats:\n *   Functional: CSI 1;modifiers:event_type LETTER (e.g., \\x1b[1;1:1A = up arrow press)\n *   Tilde: CSI number;modifiers:event_type ~ (e.g., \\x1b[5;1:1~ = pageup press)\n */\nconst specialKeyRe = /^\\x1b\\[(\\d+);(\\d+):(\\d+)([A-Z~])$/;\n\nfunction parseKittySpecialKey(sequence: string): ParsedKey | null {\n\tconst match = specialKeyRe.exec(sequence);\n\n\tif (!match) return null;\n\n\tconst keyNumOrOne = match[1];\n\tconst modifierStr = match[2];\n\tconst eventTypeStr = match[3];\n\tconst terminator = match[4];\n\n\t// Determine key name based on terminator\n\tlet keyName: string | undefined;\n\tif (terminator === \"~\") {\n\t\t// Tilde key: lookup by number\n\t\tkeyName = keyNumOrOne ? tildeKeyMap[keyNumOrOne] : undefined;\n\t} else {\n\t\t// Functional key: must have \"1\" as first param, lookup by letter\n\t\tif (keyNumOrOne !== \"1\") return null;\n\t\tkeyName = terminator ? functionalKeyMap[terminator] : undefined;\n\t}\n\n\tif (!keyName) return null;\n\n\tconst key: ParsedKey = {\n\t\tname: keyName,\n\t\tctrl: false,\n\t\tmeta: false,\n\t\tshift: false,\n\t\toption: false,\n\t\tnumber: false,\n\t\tsequence,\n\t\traw: sequence,\n\t\teventType: \"press\",\n\t\tsource: \"kitty\",\n\t\tsuper: false,\n\t\thyper: false,\n\t\tcapsLock: false,\n\t\tnumLock: false,\n\t};\n\n\t// Parse modifiers\n\tif (modifierStr) {\n\t\tconst modifierMask = parseInt(modifierStr, 10);\n\t\tif (!Number.isNaN(modifierMask) && modifierMask > 1) {\n\t\t\tconst mods = fromKittyMods(modifierMask - 1);\n\t\t\tkey.shift = mods.shift;\n\t\t\tkey.ctrl = mods.ctrl;\n\t\t\tkey.meta = mods.alt || mods.meta;\n\t\t\tkey.option = mods.alt;\n\t\t\tkey.super = mods.super;\n\t\t\tkey.hyper = mods.hyper;\n\t\t\tkey.capsLock = mods.capsLock;\n\t\t\tkey.numLock = mods.numLock;\n\t\t}\n\t}\n\n\t// Parse event type: 1 = press, 2 = repeat, 3 = release\n\tif (eventTypeStr === \"1\" || !eventTypeStr) {\n\t\tkey.eventType = \"press\";\n\t} else if (eventTypeStr === \"2\") {\n\t\tkey.eventType = \"press\";\n\t\tkey.repeated = true;\n\t} else if (eventTypeStr === \"3\") {\n\t\tkey.eventType = \"release\";\n\t}\n\n\treturn key;\n}\n\nconst kittyRe = /^\\x1b\\[([^\\x1b]+)u$/;\n\nexport function parseKittyKeyboard(sequence: string): ParsedKey | null {\n\t// Try special key format (functional letters or tilde keys with event type)\n\tconst specialResult = parseKittySpecialKey(sequence);\n\tif (specialResult) return specialResult;\n\n\t// Kitty keyboard protocol: CSI unicode-key-code:alternate-key-codes ; modifiers:event-type ; text-as-codepoints u\n\tconst match = kittyRe.exec(sequence);\n\n\tif (!match) return null;\n\n\tconst params = match[1];\n\tif (!params) return null;\n\tconst fields = params.split(\";\");\n\n\tif (fields.length < 1) return null;\n\n\tconst key: ParsedKey = {\n\t\tname: \"\",\n\t\tctrl: false,\n\t\tmeta: false,\n\t\tshift: false,\n\t\toption: false,\n\t\tnumber: false,\n\t\tsequence,\n\t\traw: sequence,\n\t\teventType: \"press\",\n\t\tsource: \"kitty\",\n\t\tsuper: false,\n\t\thyper: false,\n\t\tcapsLock: false,\n\t\tnumLock: false,\n\t};\n\n\tlet text = \"\";\n\n\t// Parse field 1: unicode-key-code:shifted_codepoint:base_layout_codepoint\n\tconst field1 = fields[0]?.split(\":\") || [];\n\tconst codepointStr = field1[0];\n\tif (!codepointStr) return null;\n\n\tconst codepoint = parseInt(codepointStr, 10);\n\tif (Number.isNaN(codepoint)) return null;\n\n\tlet shiftedCodepoint: number | undefined;\n\tlet baseCodepoint: number | undefined;\n\n\t// Parse shifted and base codepoints\n\tif (field1[1]) {\n\t\tconst shifted = parseInt(field1[1], 10);\n\t\tif (!Number.isNaN(shifted) && shifted > 0 && shifted <= 0x10ffff) {\n\t\t\tshiftedCodepoint = shifted;\n\t\t}\n\t}\n\tif (field1[2]) {\n\t\tconst base = parseInt(field1[2], 10);\n\t\tif (!Number.isNaN(base) && base > 0 && base <= 0x10ffff) {\n\t\t\tbaseCodepoint = base;\n\t\t}\n\t}\n\n\tconst knownKey = kittyKeyMap[codepoint];\n\tif (knownKey) {\n\t\tkey.name = knownKey;\n\t\tkey.code = `[${codepoint}u`;\n\t} else if (codepoint === 0) {\n\t\tkey.name = \"\";\n\t} else {\n\t\t// It's a Unicode character\n\t\tif (codepoint > 0 && codepoint <= 0x10ffff) {\n\t\t\tconst char = String.fromCodePoint(codepoint);\n\t\t\tkey.name = char;\n\n\t\t\t// Store base layout codepoint for keyboard layout disambiguation\n\t\t\tif (baseCodepoint) {\n\t\t\t\tkey.baseCode = baseCodepoint;\n\t\t\t}\n\t\t} else {\n\t\t\treturn null; // Invalid codepoint\n\t\t}\n\t}\n\n\t// Parse field 2: modifier_mask:event_type\n\tif (fields[1]) {\n\t\tconst field2 = fields[1].split(\":\");\n\t\tconst modifierStr = field2[0];\n\t\tconst eventTypeStr = field2[1];\n\n\t\tif (modifierStr) {\n\t\t\tconst modifierMask = parseInt(modifierStr, 10);\n\t\t\tif (!Number.isNaN(modifierMask) && modifierMask > 1) {\n\t\t\t\tconst mods = fromKittyMods(modifierMask - 1); // Kitty modifiers start from 1\n\t\t\t\tkey.shift = mods.shift;\n\t\t\t\tkey.ctrl = mods.ctrl;\n\t\t\t\tkey.meta = mods.alt || mods.meta;\n\t\t\t\tkey.option = mods.alt;\n\t\t\t\tkey.super = mods.super;\n\t\t\t\tkey.hyper = mods.hyper;\n\t\t\t\tkey.capsLock = mods.capsLock;\n\t\t\t\tkey.numLock = mods.numLock;\n\t\t\t}\n\t\t}\n\n\t\t// Parse event type: 1 = press (default), 2 = repeat, 3 = release\n\t\tif (eventTypeStr === \"1\" || !eventTypeStr) {\n\t\t\tkey.eventType = \"press\";\n\t\t} else if (eventTypeStr === \"2\") {\n\t\t\tkey.eventType = \"press\";\n\t\t\tkey.repeated = true;\n\t\t} else if (eventTypeStr === \"3\") {\n\t\t\tkey.eventType = \"release\";\n\t\t} else {\n\t\t\tkey.eventType = \"press\";\n\t\t}\n\t}\n\n\t// Parse field 3: text_as_codepoint[:text_as_codepoint]\n\tif (fields[2]) {\n\t\tconst codepoints = fields[2].split(\":\");\n\t\tfor (const cpStr of codepoints) {\n\t\t\tconst cp = parseInt(cpStr, 10);\n\t\t\tif (!Number.isNaN(cp) && cp > 0 && cp <= 0x10ffff) {\n\t\t\t\ttext += String.fromCodePoint(cp);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Handle text generation for printable characters\n\tif (text === \"\") {\n\t\t// Check if this is a printable character (not a key name like \"up\", \"f1\", etc.)\n\t\tconst isPrintable = key.name.length > 0 && !kittyKeyMap[codepoint];\n\t\tif (isPrintable) {\n\t\t\t// Use shifted codepoint if shift is active and we have one\n\t\t\tif (key.shift && shiftedCodepoint) {\n\t\t\t\ttext = String.fromCodePoint(shiftedCodepoint);\n\t\t\t} else if (key.shift && key.name.length === 1) {\n\t\t\t\t// When shift is pressed but terminal didn't provide shifted codepoint,\n\t\t\t\t// convert the character to uppercase (works for Unicode including Cyrillic)\n\t\t\t\ttext = key.name.toLocaleUpperCase();\n\t\t\t} else {\n\t\t\t\ttext = key.name;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Special case: shift + space should produce a space\n\tif (key.name === \" \" && key.shift && !key.ctrl && !key.meta) {\n\t\ttext = \" \";\n\t}\n\n\tif (text) {\n\t\tif (codepoint === 0) {\n\t\t\tkey.name = text;\n\t\t}\n\t\tkey.sequence = text;\n\t}\n\n\tif (codepoint === 0 && text === \"\") {\n\t\treturn null;\n\t}\n\n\treturn key;\n}\n"],"mappings":"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","ignoreList":[]}