@@ -33,12 +33,14 @@ describe('KittyKeyboard', () => {
3333 describe ( 'modifier encoding (value = 1 + modifiers)' , ( ) => {
3434 const flags = KittyKeyboardFlags . DISAMBIGUATE_ESCAPE_CODES ;
3535
36- it ( 'shift=2 (1+1)' , ( ) => {
37- const result = evaluateKeyboardEventKitty ( createEvent ( { key : 'a' , shiftKey : true } ) , flags ) ;
38- assert . strictEqual ( result . key , '\x1b[97;2u' ) ;
36+ it ( 'shift+letter sends plain character in DISAMBIGUATE mode' , ( ) => {
37+ // Kitty spec: DISAMBIGUATE only encodes keys ambiguous in legacy encoding
38+ // Shift+a → "A" is not ambiguous, so send plain "A"
39+ const result = evaluateKeyboardEventKitty ( createEvent ( { key : 'A' , shiftKey : true } ) , flags ) ;
40+ assert . strictEqual ( result . key , 'A' ) ;
3941 } ) ;
4042
41- it ( 'alt=3 (1+2)' , ( ) => {
43+ it ( 'alt=3 (1+2) still uses CSI u ' , ( ) => {
4244 const result = evaluateKeyboardEventKitty ( createEvent ( { key : 'a' , altKey : true } ) , flags ) ;
4345 assert . strictEqual ( result . key , '\x1b[97;3u' ) ;
4446 } ) ;
@@ -598,9 +600,10 @@ describe('KittyKeyboard', () => {
598600 describe ( 'edge cases' , ( ) => {
599601 const flags = KittyKeyboardFlags . DISAMBIGUATE_ESCAPE_CODES ;
600602
601- it ( 'always uses lowercase codepoint for letters' , ( ) => {
603+ it ( 'shift+letter sends plain character in DISAMBIGUATE mode' , ( ) => {
604+ // Shift+A produces printable "A", not ambiguous, so send plain character
602605 const result = evaluateKeyboardEventKitty ( createEvent ( { key : 'A' , shiftKey : true } ) , flags ) ;
603- assert . strictEqual ( result . key , '\x1b[97;2u ' ) ;
606+ assert . strictEqual ( result . key , 'A ' ) ;
604607 } ) ;
605608
606609 it ( 'ctrl+shift+a sends lowercase codepoint 97' , ( ) => {
0 commit comments