diff --git a/go.mod b/go.mod index 37ad8c2..441bec0 100644 --- a/go.mod +++ b/go.mod @@ -11,14 +11,14 @@ require ( ) require ( - github.com/charmbracelet/x/ansi v0.1.2 // indirect - github.com/charmbracelet/x/input v0.1.0 // indirect + github.com/charmbracelet/x/ansi v0.1.4 // indirect + github.com/charmbracelet/x/input v0.1.3 // indirect github.com/charmbracelet/x/term v0.1.1 // indirect - github.com/charmbracelet/x/windows v0.1.0 // indirect + github.com/charmbracelet/x/windows v0.1.2 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/go.sum b/go.sum index 9f55f60..c2792e6 100644 --- a/go.sum +++ b/go.sum @@ -2,14 +2,14 @@ github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s= github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk= -github.com/charmbracelet/x/ansi v0.1.2 h1:6+LR39uG8DE6zAmbu023YlqjJHkYXDF1z36ZwzO4xZY= -github.com/charmbracelet/x/ansi v0.1.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= -github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= -github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= +github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM= +github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/charmbracelet/x/input v0.1.3 h1:oy4TMhyGQsYs/WWJwu1ELUMFnjiUAXwtDf048fHbCkg= +github.com/charmbracelet/x/input v0.1.3/go.mod h1:1gaCOyw1KI9e2j00j/BBZ4ErzRZqa05w0Ghn83yIhKU= github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw= -github.com/charmbracelet/x/windows v0.1.0 h1:gTaxdvzDM5oMa/I2ZNF7wN78X/atWemG9Wph7Ika2k4= -github.com/charmbracelet/x/windows v0.1.0/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ= +github.com/charmbracelet/x/windows v0.1.2 h1:Iumiwq2G+BRmgoayww/qfcvof7W/3uLoelhxojXlRWg= +github.com/charmbracelet/x/windows v0.1.2/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -21,8 +21,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= @@ -47,8 +47,8 @@ github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavM github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/exp v0.0.0-20230105202349-8879d0199aa3 h1:fJwx88sMf5RXwDwziL0/Mn9Wqs+efMSo/RYcL+37W9c= -golang.org/x/exp v0.0.0-20230105202349-8879d0199aa3/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/vendor/github.com/charmbracelet/x/ansi/truncate.go b/vendor/github.com/charmbracelet/x/ansi/truncate.go index 03d0a12..11ee112 100644 --- a/vendor/github.com/charmbracelet/x/ansi/truncate.go +++ b/vendor/github.com/charmbracelet/x/ansi/truncate.go @@ -12,6 +12,10 @@ import ( // This function is aware of ANSI escape codes and will not break them, and // accounts for wide-characters (such as East Asians and emojis). func Truncate(s string, length int, tail string) string { + if sw := StringWidth(s); sw <= length { + return s + } + tw := StringWidth(tail) length -= tw if length < 0 { diff --git a/vendor/github.com/charmbracelet/x/ansi/width.go b/vendor/github.com/charmbracelet/x/ansi/width.go index 4da3959..119f193 100644 --- a/vendor/github.com/charmbracelet/x/ansi/width.go +++ b/vendor/github.com/charmbracelet/x/ansi/width.go @@ -69,5 +69,35 @@ func StringWidth(s string) int { if s == "" { return 0 } - return uniseg.StringWidth(Strip(s)) + + var ( + gstate = -1 + pstate = parser.GroundState // initial state + cluster string + width int + ) + + for i := 0; i < len(s); i++ { + state, action := parser.Table.Transition(pstate, s[i]) + switch action { + case parser.PrintAction: + if utf8ByteLen(s[i]) > 1 { + var w int + cluster, _, w, gstate = uniseg.FirstGraphemeClusterInString(s[i:], gstate) + width += w + i += len(cluster) - 1 + pstate = parser.GroundState + continue + } + width++ + fallthrough + default: + // Reset uniseg state when we're not in a printable state. + gstate = -1 + } + + pstate = state + } + + return width } diff --git a/vendor/github.com/charmbracelet/x/input/driver.go b/vendor/github.com/charmbracelet/x/input/driver.go index 8339f1f..5492b34 100644 --- a/vendor/github.com/charmbracelet/x/input/driver.go +++ b/vendor/github.com/charmbracelet/x/input/driver.go @@ -28,6 +28,10 @@ type Driver struct { // up button events. prevMouseState coninput.ButtonState // nolint: unused + // lastWinsizeEvent keeps track of the last window size event to prevent + // multiple size events from firing. + lastWinsizeEvent coninput.WindowBufferSizeEventRecord // nolint: unused + flags int // control the behavior of the driver. } @@ -70,7 +74,7 @@ func (d *Driver) readEvents() (e []Event, err error) { // Lookup table first if bytes.HasPrefix(buf, []byte{'\x1b'}) { if k, ok := d.table[string(buf)]; ok { - e = append(e, KeyDownEvent(k)) + e = append(e, KeyPressEvent(k)) return } } @@ -92,7 +96,7 @@ func (d *Driver) readEvents() (e []Event, err error) { case UnknownCsiEvent, UnknownSs3Event, UnknownEvent: // If the sequence is not recognized by the parser, try looking it up. if k, ok := d.table[string(buf[i:i+nb])]; ok { - ev = KeyDownEvent(k) + ev = KeyPressEvent(k) } case PasteStartEvent: d.paste = []byte{} diff --git a/vendor/github.com/charmbracelet/x/input/driver_windows.go b/vendor/github.com/charmbracelet/x/input/driver_windows.go index 63eaf9b..bba13e8 100644 --- a/vendor/github.com/charmbracelet/x/input/driver_windows.go +++ b/vendor/github.com/charmbracelet/x/input/driver_windows.go @@ -45,7 +45,7 @@ func (d *Driver) handleConInput( var evs []Event for _, event := range events { - if e := parseConInputEvent(event, &d.prevMouseState); e != nil { + if e := parseConInputEvent(event, &d.prevMouseState, &d.lastWinsizeEvent); e != nil { evs = append(evs, e) } } @@ -64,7 +64,7 @@ func (d *Driver) detectConInputQuerySequences(events []Event) []Event { loop: for i, e := range events { switch e := e.(type) { - case KeyDownEvent: + case KeyPressEvent: switch e.Rune { case ansi.ESC, ansi.CSI, ansi.OSC, ansi.DCS, ansi.APC: // start of a sequence @@ -85,7 +85,7 @@ loop: var seq []byte for i := start; i <= end; i++ { switch e := events[i].(type) { - case KeyDownEvent: + case KeyPressEvent: seq = append(seq, byte(e.Rune)) } } @@ -107,7 +107,7 @@ loop: return events } -func parseConInputEvent(event coninput.InputRecord, ps *coninput.ButtonState) Event { +func parseConInputEvent(event coninput.InputRecord, ps *coninput.ButtonState, ws *coninput.WindowBufferSizeEventRecord) Event { switch e := event.Unwrap().(type) { case coninput.KeyEventRecord: event := parseWin32InputKeyEvent(e.VirtualKeyCode, e.VirtualScanCode, @@ -115,9 +115,9 @@ func parseConInputEvent(event coninput.InputRecord, ps *coninput.ButtonState) Ev var key Key switch event := event.(type) { - case KeyDownEvent: + case KeyPressEvent: key = Key(event) - case KeyUpEvent: + case KeyReleaseEvent: key = Key(event) default: return nil @@ -131,35 +131,29 @@ func parseConInputEvent(event coninput.InputRecord, ps *coninput.ButtonState) Ev return event } - // Get active keyboard layout - fgWin := windows.GetForegroundWindow() - fgThread, err := windows.GetWindowThreadProcessId(fgWin, nil) - if err != nil { - return event - } - - layout, err := termwindows.GetKeyboardLayout(fgThread) - if layout == windows.InvalidHandle || err != nil { - return event - } + // Always use US layout for translation + // This is to follow the behavior of the Kitty Keyboard base layout + // feature :eye_roll: + // https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-language-pack-default-values?view=windows-11 + const usLayout = 0x409 // Translate key to rune var keyState [256]byte var utf16Buf [16]uint16 const dontChangeKernelKeyboardLayout = 0x4 - ret, err := termwindows.ToUnicodeEx( + ret := termwindows.ToUnicodeEx( uint32(e.VirtualKeyCode), uint32(e.VirtualScanCode), &keyState[0], &utf16Buf[0], int32(len(utf16Buf)), dontChangeKernelKeyboardLayout, - layout, + usLayout, ) // -1 indicates a dead key // 0 indicates no translation for this key - if ret < 1 || err != nil { + if ret < 1 { return event } @@ -169,17 +163,20 @@ func parseConInputEvent(event coninput.InputRecord, ps *coninput.ButtonState) Ev return event } - key.BaseRune = runes[0] + key.baseRune = runes[0] if e.KeyDown { - return KeyDownEvent(key) + return KeyPressEvent(key) } - return KeyUpEvent(key) + return KeyReleaseEvent(key) case coninput.WindowBufferSizeEventRecord: - return WindowSizeEvent{ - Width: int(e.Size.X), - Height: int(e.Size.Y), + if e != *ws { + *ws = e + return WindowSizeEvent{ + Width: int(e.Size.X), + Height: int(e.Size.Y), + } } case coninput.MouseEventRecord: mevent := mouseEvent(*ps, e) @@ -213,16 +210,16 @@ func mouseEventButton(p, s coninput.ButtonState) (button MouseButton, isRelease return } - switch { - case btn == coninput.FROM_LEFT_1ST_BUTTON_PRESSED: // left button + switch btn { + case coninput.FROM_LEFT_1ST_BUTTON_PRESSED: // left button button = MouseLeft - case btn == coninput.RIGHTMOST_BUTTON_PRESSED: // right button + case coninput.RIGHTMOST_BUTTON_PRESSED: // right button button = MouseRight - case btn == coninput.FROM_LEFT_2ND_BUTTON_PRESSED: // middle button + case coninput.FROM_LEFT_2ND_BUTTON_PRESSED: // middle button button = MouseMiddle - case btn == coninput.FROM_LEFT_3RD_BUTTON_PRESSED: // unknown (possibly mouse backward) + case coninput.FROM_LEFT_3RD_BUTTON_PRESSED: // unknown (possibly mouse backward) button = MouseBackward - case btn == coninput.FROM_LEFT_4TH_BUTTON_PRESSED: // unknown (possibly mouse forward) + case coninput.FROM_LEFT_4TH_BUTTON_PRESSED: // unknown (possibly mouse forward) button = MouseForward } @@ -233,13 +230,13 @@ func mouseEvent(p coninput.ButtonState, e coninput.MouseEventRecord) (ev Event) var mod KeyMod var isRelease bool if e.ControlKeyState.Contains(coninput.LEFT_ALT_PRESSED | coninput.RIGHT_ALT_PRESSED) { - mod |= Alt + mod |= ModAlt } if e.ControlKeyState.Contains(coninput.LEFT_CTRL_PRESSED | coninput.RIGHT_CTRL_PRESSED) { - mod |= Ctrl + mod |= ModCtrl } if e.ControlKeyState.Contains(coninput.SHIFT_PRESSED) { - mod |= Shift + mod |= ModShift } m := Mouse{ X: int(e.MousePositon.X), @@ -269,8 +266,8 @@ func mouseEvent(p coninput.ButtonState, e coninput.MouseEventRecord) (ev Event) if isWheel(m.Button) { return MouseWheelEvent(m) } else if isRelease { - return MouseUpEvent(m) + return MouseReleaseEvent(m) } - return MouseDownEvent(m) + return MouseClickEvent(m) } diff --git a/vendor/github.com/charmbracelet/x/input/key.go b/vendor/github.com/charmbracelet/x/input/key.go index cbf4395..3161734 100644 --- a/vendor/github.com/charmbracelet/x/input/key.go +++ b/vendor/github.com/charmbracelet/x/input/key.go @@ -179,49 +179,97 @@ const ( // Key represents a key event. type Key struct { - Sym KeySym - Rune rune - AltRune rune - BaseRune rune + // Sym is a special key, like enter, tab, backspace, and so on. + Sym KeySym + + // Rune is the actual character received. If the user presses shift+a, the + // Rune will be 'A'. + Rune rune + + // AltRune is the actual, unshifted key pressed by the user. For example, + // if the user presses shift+a, or caps lock is on, the AltRune will be + // 'a'. + // + // In the case of non-latin keyboards, like Arabic, AltRune is the + // unshifted key on the keyboard. + // + // This is only available with the Kitty Keyboard Protocol or the Windows + // Console API. + AltRune rune + + // baseRune is the key pressed according to the standard PC-101 key layout. + // On internaltional keyboards, this is the key that would be pressed if + // the keyboard was set to US layout. + // + // For example, if the user presses 'q' on a French AZERTY keyboard, the + // baseRune will be 'q'. + // + // This is only available with the Kitty Keyboard Protocol or the Windows + // Console API. + baseRune rune + + // Mod is a modifier key, like ctrl, alt, and so on. + Mod KeyMod + + // IsRepeat indicates whether the key is being held down and sending events + // repeatedly. + // + // This is only available with the Kitty Keyboard Protocol or the Windows + // Console API. IsRepeat bool - Mod KeyMod } -// KeyDownEvent represents a key down event. -type KeyDownEvent Key +// KeyPressEvent represents a key press event. +type KeyPressEvent Key -// String implements fmt.Stringer. -func (k KeyDownEvent) String() string { +// String implements fmt.Stringer and is quite useful for matching key +// events. For details, on what this returns see [Key.String]. +func (k KeyPressEvent) String() string { return Key(k).String() } -// KeyUpEvent represents a key up event. -type KeyUpEvent Key +// KeyReleaseEvent represents a key release event. +type KeyReleaseEvent Key -// String implements fmt.Stringer. -func (k KeyUpEvent) String() string { +// String implements fmt.Stringer and is quite useful for matching complex key +// events. For details, on what this returns see [Key.String]. +func (k KeyReleaseEvent) String() string { return Key(k).String() } -// String implements fmt.Stringer. +// String implements fmt.Stringer and is used to convert a key to a string. +// While less type safe than looking at the individual fields, it will usually +// be more convenient and readable to use this method when matching against +// keys. +// +// Note that modifier keys are always printed in the following order: +// - ctrl +// - alt +// - shift +// - meta +// - hyper +// - super +// +// For example, you'll always see "ctrl+shift+alt+a" and never +// "shift+ctrl+alt+a". func (k Key) String() string { var s string - if k.Mod.IsCtrl() && k.Sym != KeyLeftCtrl && k.Sym != KeyRightCtrl { + if k.Mod.HasCtrl() && k.Sym != KeyLeftCtrl && k.Sym != KeyRightCtrl { s += "ctrl+" } - if k.Mod.IsAlt() && k.Sym != KeyLeftAlt && k.Sym != KeyRightAlt { + if k.Mod.HasAlt() && k.Sym != KeyLeftAlt && k.Sym != KeyRightAlt { s += "alt+" } - if k.Mod.IsShift() && k.Sym != KeyLeftShift && k.Sym != KeyRightShift { + if k.Mod.HasShift() && k.Sym != KeyLeftShift && k.Sym != KeyRightShift { s += "shift+" } - if k.Mod.IsMeta() && k.Sym != KeyLeftMeta && k.Sym != KeyRightMeta { + if k.Mod.HasMeta() && k.Sym != KeyLeftMeta && k.Sym != KeyRightMeta { s += "meta+" } - if k.Mod.IsHyper() && k.Sym != KeyLeftHyper && k.Sym != KeyRightHyper { + if k.Mod.HasHyper() && k.Sym != KeyLeftHyper && k.Sym != KeyRightHyper { s += "hyper+" } - if k.Mod.IsSuper() && k.Sym != KeyLeftSuper && k.Sym != KeyRightSuper { + if k.Mod.HasSuper() && k.Sym != KeyLeftSuper && k.Sym != KeyRightSuper { s += "super+" } @@ -232,10 +280,10 @@ func (k Key) String() string { } return string(r) } - if k.BaseRune != 0 { - // If a BaseRune is present, use it to represent a key using the standard + if k.baseRune != 0 { + // If a baseRune is present, use it to represent a key using the standard // PC-101 key layout. - s += runeStr(k.BaseRune) + s += runeStr(k.baseRune) } else if k.AltRune != 0 { // Otherwise, use the AltRune aka the non-shifted one if present. s += runeStr(k.AltRune) @@ -248,7 +296,8 @@ func (k Key) String() string { return s } -// String implements fmt.Stringer. +// String implements fmt.Stringer and prints the string representation of a of +// a Symbol key. func (k KeySym) String() string { s, ok := keySymString[k] if !ok { diff --git a/vendor/github.com/charmbracelet/x/input/kitty.go b/vendor/github.com/charmbracelet/x/input/kitty.go index e9edbfb..22920f3 100644 --- a/vendor/github.com/charmbracelet/x/input/kitty.go +++ b/vendor/github.com/charmbracelet/x/input/kitty.go @@ -170,28 +170,28 @@ const ( func fromKittyMod(mod int) KeyMod { var m KeyMod if mod&kittyShift != 0 { - m |= Shift + m |= ModShift } if mod&kittyAlt != 0 { - m |= Alt + m |= ModAlt } if mod&kittyCtrl != 0 { - m |= Ctrl + m |= ModCtrl } if mod&kittySuper != 0 { - m |= Super + m |= ModSuper } if mod&kittyHyper != 0 { - m |= Hyper + m |= ModHyper } if mod&kittyMeta != 0 { - m |= Meta + m |= ModMeta } if mod&kittyCapsLock != 0 { - m |= CapsLock + m |= ModCapsLock } if mod&kittyNumLock != 0 { - m |= NumLock + m |= ModNumLock } return m } @@ -236,7 +236,7 @@ func parseKittyKeyboard(csi *ansi.CsiSequence) Event { // PC-101 key layout codepoint. // This is useful to create an unambiguous mapping of keys // when using a different language layout. - key.BaseRune = b + key.baseRune = b } fallthrough case 2: @@ -275,7 +275,7 @@ func parseKittyKeyboard(csi *ansi.CsiSequence) Event { // } // } if isRelease { - return KeyUpEvent(key) + return KeyReleaseEvent(key) } - return KeyDownEvent(key) + return KeyPressEvent(key) } diff --git a/vendor/github.com/charmbracelet/x/input/mod.go b/vendor/github.com/charmbracelet/x/input/mod.go index 1040d2f..3c91aa5 100644 --- a/vendor/github.com/charmbracelet/x/input/mod.go +++ b/vendor/github.com/charmbracelet/x/input/mod.go @@ -5,66 +5,66 @@ type KeyMod uint16 // Modifier keys. const ( - Shift KeyMod = 1 << iota - Alt - Ctrl - Meta + ModShift KeyMod = 1 << iota + ModAlt + ModCtrl + ModMeta // These modifiers are used with the Kitty protocol. // XXX: Meta and Super are swapped in the Kitty protocol, // this is to preserve compatibility with XTerm modifiers. - Hyper - Super // Windows/Command keys + ModHyper + ModSuper // Windows/Command keys // These are key lock states. - CapsLock - NumLock - ScrollLock // Defined in Windows API only + ModCapsLock + ModNumLock + ModScrollLock // Defined in Windows API only ) -// IsShift reports whether the Shift modifier is set. -func (m KeyMod) IsShift() bool { - return m&Shift != 0 +// HasShift reports whether the Shift modifier is set. +func (m KeyMod) HasShift() bool { + return m&ModShift != 0 } -// IsAlt reports whether the Alt modifier is set. -func (m KeyMod) IsAlt() bool { - return m&Alt != 0 +// HasAlt reports whether the Alt modifier is set. +func (m KeyMod) HasAlt() bool { + return m&ModAlt != 0 } -// IsCtrl reports whether the Ctrl modifier is set. -func (m KeyMod) IsCtrl() bool { - return m&Ctrl != 0 +// HasCtrl reports whether the Ctrl modifier is set. +func (m KeyMod) HasCtrl() bool { + return m&ModCtrl != 0 } -// IsMeta reports whether the Meta modifier is set. -func (m KeyMod) IsMeta() bool { - return m&Meta != 0 +// HasMeta reports whether the Meta modifier is set. +func (m KeyMod) HasMeta() bool { + return m&ModMeta != 0 } -// IsHyper reports whether the Hyper modifier is set. -func (m KeyMod) IsHyper() bool { - return m&Hyper != 0 +// HasHyper reports whether the Hyper modifier is set. +func (m KeyMod) HasHyper() bool { + return m&ModHyper != 0 } -// IsSuper reports whether the Super modifier is set. -func (m KeyMod) IsSuper() bool { - return m&Super != 0 +// HasSuper reports whether the Super modifier is set. +func (m KeyMod) HasSuper() bool { + return m&ModSuper != 0 } // HasCapsLock reports whether the CapsLock key is enabled. func (m KeyMod) HasCapsLock() bool { - return m&CapsLock != 0 + return m&ModCapsLock != 0 } // HasNumLock reports whether the NumLock key is enabled. func (m KeyMod) HasNumLock() bool { - return m&NumLock != 0 + return m&ModNumLock != 0 } // HasScrollLock reports whether the ScrollLock key is enabled. func (m KeyMod) HasScrollLock() bool { - return m&ScrollLock != 0 + return m&ModScrollLock != 0 } diff --git a/vendor/github.com/charmbracelet/x/input/mouse.go b/vendor/github.com/charmbracelet/x/input/mouse.go index 0e6eea9..99e6de5 100644 --- a/vendor/github.com/charmbracelet/x/input/mouse.go +++ b/vendor/github.com/charmbracelet/x/input/mouse.go @@ -65,13 +65,13 @@ type Mouse struct { // String implements fmt.Stringer. func (m Mouse) String() (s string) { - if m.Mod.IsCtrl() { + if m.Mod.HasCtrl() { s += "ctrl+" } - if m.Mod.IsAlt() { + if m.Mod.HasAlt() { s += "alt+" } - if m.Mod.IsShift() { + if m.Mod.HasShift() { s += "shift+" } @@ -85,19 +85,19 @@ func (m Mouse) String() (s string) { return s } -// MouseDownEvent represents a mouse button down event. -type MouseDownEvent Mouse +// MouseClickEvent represents a mouse button click event. +type MouseClickEvent Mouse // String implements fmt.Stringer. -func (e MouseDownEvent) String() string { +func (e MouseClickEvent) String() string { return Mouse(e).String() } -// MouseUpEvent represents a mouse button up event. -type MouseUpEvent Mouse +// MouseReleaseEvent represents a mouse button release event. +type MouseReleaseEvent Mouse // String implements fmt.Stringer. -func (e MouseUpEvent) String() string { +func (e MouseReleaseEvent) String() string { return Mouse(e).String() } @@ -153,11 +153,11 @@ func parseSGRMouseEvent(csi *ansi.CsiSequence) Event { if isWheel(m.Button) { return MouseWheelEvent(m) } else if !isMotion && release { - return MouseUpEvent(m) + return MouseReleaseEvent(m) } else if isMotion { return MouseMotionEvent(m) } - return MouseDownEvent(m) + return MouseClickEvent(m) } const x10MouseByteOffset = 32 @@ -191,9 +191,9 @@ func parseX10MouseEvent(buf []byte) Event { } else if isMotion { return MouseMotionEvent(m) } else if isRelease { - return MouseUpEvent(m) + return MouseReleaseEvent(m) } - return MouseDownEvent(m) + return MouseClickEvent(m) } // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Extended-coordinates @@ -212,13 +212,13 @@ func parseMouseButton(b int) (mod KeyMod, btn MouseButton, isRelease bool, isMot // Modifiers if b&bitAlt != 0 { - mod |= Alt + mod |= ModAlt } if b&bitCtrl != 0 { - mod |= Ctrl + mod |= ModCtrl } if b&bitShift != 0 { - mod |= Shift + mod |= ModShift } if b&bitAdd != 0 { diff --git a/vendor/github.com/charmbracelet/x/input/parse.go b/vendor/github.com/charmbracelet/x/input/parse.go index 219ff71..d5b8721 100644 --- a/vendor/github.com/charmbracelet/x/input/parse.go +++ b/vendor/github.com/charmbracelet/x/input/parse.go @@ -105,7 +105,7 @@ func ParseSequence(buf []byte) (n int, e Event) { case ansi.ESC: if len(buf) == 1 { // Escape key - return 1, KeyDownEvent{Sym: KeyEscape} + return 1, KeyPressEvent{Sym: KeyEscape} } switch b := buf[1]; b { @@ -121,14 +121,14 @@ func ParseSequence(buf []byte) (n int, e Event) { return parseApc(buf) default: n, e := ParseSequence(buf[1:]) - if k, ok := e.(KeyDownEvent); ok && !k.Mod.IsAlt() { - k.Mod |= Alt + if k, ok := e.(KeyPressEvent); ok && !k.Mod.HasAlt() { + k.Mod |= ModAlt return n + 1, k } // Not a key sequence, nor an alt modified key sequence. In that // case, just report a single escape key. - return 1, KeyDownEvent{Sym: KeyEscape} + return 1, KeyPressEvent{Sym: KeyEscape} } case ansi.SS3: return parseSs3(buf) @@ -147,7 +147,7 @@ func ParseSequence(buf []byte) (n int, e Event) { // C1 control code // UTF-8 never starts with a C1 control code // Encode these as Ctrl+Alt+ - return 1, KeyDownEvent{Rune: rune(b) - 0x40, Mod: Ctrl | Alt} + return 1, KeyPressEvent{Rune: rune(b) - 0x40, Mod: ModCtrl | ModAlt} } return parseUtf8(buf) } @@ -156,7 +156,7 @@ func ParseSequence(buf []byte) (n int, e Event) { func parseCsi(b []byte) (int, Event) { if len(b) == 2 && b[0] == ansi.ESC { // short cut if this is an alt+[ key - return 2, KeyDownEvent{Rune: rune(b[1]), Mod: Alt} + return 2, KeyPressEvent{Rune: rune(b[1]), Mod: ModAlt} } var csi ansi.CsiSequence @@ -219,8 +219,8 @@ func parseCsi(b []byte) (int, Event) { // shift modified keys. if b[i-1] == '$' { n, ev := parseCsi(append(b[:i-1], '~')) - if k, ok := ev.(KeyDownEvent); ok { - k.Mod |= Shift + if k, ok := ev.(KeyPressEvent); ok { + k.Mod |= ModShift return n, k } } @@ -293,7 +293,7 @@ func parseCsi(b []byte) (int, Event) { case 'R': // Cursor position report OR modified F3 if paramsLen == 0 { - return i, KeyDownEvent{Sym: KeyF3} + return i, KeyPressEvent{Sym: KeyF3} } else if paramsLen != 2 { break } @@ -311,22 +311,22 @@ func parseCsi(b []byte) (int, Event) { fallthrough case 'a', 'b', 'c', 'd', 'A', 'B', 'C', 'D', 'E', 'F', 'H', 'P', 'Q', 'S', 'Z': - var k KeyDownEvent + var k KeyPressEvent switch cmd { case 'a', 'b', 'c', 'd': - k = KeyDownEvent{Sym: KeyUp + KeySym(cmd-'a'), Mod: Shift} + k = KeyPressEvent{Sym: KeyUp + KeySym(cmd-'a'), Mod: ModShift} case 'A', 'B', 'C', 'D': - k = KeyDownEvent{Sym: KeyUp + KeySym(cmd-'A')} + k = KeyPressEvent{Sym: KeyUp + KeySym(cmd-'A')} case 'E': - k = KeyDownEvent{Sym: KeyBegin} + k = KeyPressEvent{Sym: KeyBegin} case 'F': - k = KeyDownEvent{Sym: KeyEnd} + k = KeyPressEvent{Sym: KeyEnd} case 'H': - k = KeyDownEvent{Sym: KeyHome} + k = KeyPressEvent{Sym: KeyHome} case 'P', 'Q', 'R', 'S': - k = KeyDownEvent{Sym: KeyF1 + KeySym(cmd-'P')} + k = KeyPressEvent{Sym: KeyF1 + KeySym(cmd-'P')} case 'Z': - k = KeyDownEvent{Sym: KeyTab, Mod: Shift} + k = KeyPressEvent{Sym: KeyTab, Mod: ModShift} } if paramsLen > 1 && csi.Param(0) == 1 { // CSI 1 ; A @@ -410,42 +410,42 @@ func parseCsi(b []byte) (int, Event) { case 17, 18, 19, 20, 21, 23, 24, 25, 26: fallthrough case 28, 29, 31, 32, 33, 34: - var k KeyDownEvent + var k KeyPressEvent switch param { case 1: if flags&FlagFind != 0 { - k = KeyDownEvent{Sym: KeyFind} + k = KeyPressEvent{Sym: KeyFind} } else { - k = KeyDownEvent{Sym: KeyHome} + k = KeyPressEvent{Sym: KeyHome} } case 2: - k = KeyDownEvent{Sym: KeyInsert} + k = KeyPressEvent{Sym: KeyInsert} case 3: - k = KeyDownEvent{Sym: KeyDelete} + k = KeyPressEvent{Sym: KeyDelete} case 4: if flags&FlagSelect != 0 { - k = KeyDownEvent{Sym: KeySelect} + k = KeyPressEvent{Sym: KeySelect} } else { - k = KeyDownEvent{Sym: KeyEnd} + k = KeyPressEvent{Sym: KeyEnd} } case 5: - k = KeyDownEvent{Sym: KeyPgUp} + k = KeyPressEvent{Sym: KeyPgUp} case 6: - k = KeyDownEvent{Sym: KeyPgDown} + k = KeyPressEvent{Sym: KeyPgDown} case 7: - k = KeyDownEvent{Sym: KeyHome} + k = KeyPressEvent{Sym: KeyHome} case 8: - k = KeyDownEvent{Sym: KeyEnd} + k = KeyPressEvent{Sym: KeyEnd} case 11, 12, 13, 14, 15: - k = KeyDownEvent{Sym: KeyF1 + KeySym(param-11)} + k = KeyPressEvent{Sym: KeyF1 + KeySym(param-11)} case 17, 18, 19, 20, 21: - k = KeyDownEvent{Sym: KeyF6 + KeySym(param-17)} + k = KeyPressEvent{Sym: KeyF6 + KeySym(param-17)} case 23, 24, 25, 26: - k = KeyDownEvent{Sym: KeyF11 + KeySym(param-23)} + k = KeyPressEvent{Sym: KeyF11 + KeySym(param-23)} case 28, 29: - k = KeyDownEvent{Sym: KeyF15 + KeySym(param-28)} + k = KeyPressEvent{Sym: KeyF15 + KeySym(param-28)} case 31, 32, 33, 34: - k = KeyDownEvent{Sym: KeyF17 + KeySym(param-31)} + k = KeyPressEvent{Sym: KeyF17 + KeySym(param-31)} } // modifiers @@ -456,9 +456,9 @@ func parseCsi(b []byte) (int, Event) { // Handle URxvt weird keys switch cmd { case '^': - k.Mod |= Ctrl + k.Mod |= ModCtrl case '@': - k.Mod |= Ctrl | Shift + k.Mod |= ModCtrl | ModShift } return i, k @@ -472,7 +472,7 @@ func parseCsi(b []byte) (int, Event) { func parseSs3(b []byte) (int, Event) { if len(b) == 2 && b[0] == ansi.ESC { // short cut if this is an alt+O key - return 2, KeyDownEvent{Rune: rune(b[1]), Mod: Alt} + return 2, KeyPressEvent{Rune: rune(b[1]), Mod: ModAlt} } var i int @@ -501,26 +501,26 @@ func parseSs3(b []byte) (int, Event) { gl := b[i] i++ - var k KeyDownEvent + var k KeyPressEvent switch gl { case 'a', 'b', 'c', 'd': - k = KeyDownEvent{Sym: KeyUp + KeySym(gl-'a'), Mod: Ctrl} + k = KeyPressEvent{Sym: KeyUp + KeySym(gl-'a'), Mod: ModCtrl} case 'A', 'B', 'C', 'D': - k = KeyDownEvent{Sym: KeyUp + KeySym(gl-'A')} + k = KeyPressEvent{Sym: KeyUp + KeySym(gl-'A')} case 'E': - k = KeyDownEvent{Sym: KeyBegin} + k = KeyPressEvent{Sym: KeyBegin} case 'F': - k = KeyDownEvent{Sym: KeyEnd} + k = KeyPressEvent{Sym: KeyEnd} case 'H': - k = KeyDownEvent{Sym: KeyHome} + k = KeyPressEvent{Sym: KeyHome} case 'P', 'Q', 'R', 'S': - k = KeyDownEvent{Sym: KeyF1 + KeySym(gl-'P')} + k = KeyPressEvent{Sym: KeyF1 + KeySym(gl-'P')} case 'M': - k = KeyDownEvent{Sym: KeyKpEnter} + k = KeyPressEvent{Sym: KeyKpEnter} case 'X': - k = KeyDownEvent{Sym: KeyKpEqual} + k = KeyPressEvent{Sym: KeyKpEqual} case 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y': - k = KeyDownEvent{Sym: KeyKpMultiply + KeySym(gl-'j')} + k = KeyPressEvent{Sym: KeyKpMultiply + KeySym(gl-'j')} default: return i, UnknownSs3Event(b[:i]) } @@ -536,7 +536,7 @@ func parseSs3(b []byte) (int, Event) { func parseOsc(b []byte) (int, Event) { if len(b) == 2 && b[0] == ansi.ESC { // short cut if this is an alt+] key - return 2, KeyDownEvent{Rune: rune(b[1]), Mod: Alt} + return 2, KeyPressEvent{Rune: rune(b[1]), Mod: ModAlt} } var i int @@ -662,7 +662,7 @@ func parseStTerminated(intro8, intro7 byte) func([]byte) (int, Event) { func parseDcs(b []byte) (int, Event) { if len(b) == 2 && b[0] == ansi.ESC { // short cut if this is an alt+P key - return 2, KeyDownEvent{Rune: rune(b[1]), Mod: Alt} + return 2, KeyPressEvent{Rune: rune(b[1]), Mod: ModAlt} } var params [16]int @@ -775,7 +775,7 @@ func parseDcs(b []byte) (int, Event) { func parseApc(b []byte) (int, Event) { if len(b) == 2 && b[0] == ansi.ESC { // short cut if this is an alt+_ key - return 2, KeyDownEvent{Rune: rune(b[1]), Mod: Alt} + return 2, KeyPressEvent{Rune: rune(b[1]), Mod: ModAlt} } // APC sequences are introduced by APC (0x9f) or ESC _ (0x1b 0x5f) @@ -790,46 +790,46 @@ func parseUtf8(b []byte) (int, Event) { } else if r == utf8.RuneError { return 1, UnknownEvent(b[0]) } - return rw, KeyDownEvent{Rune: r} + return rw, KeyPressEvent{Rune: r} } func parseControl(b byte) Event { switch b { case ansi.NUL: if flags&FlagCtrlAt != 0 { - return KeyDownEvent{Rune: '@', Mod: Ctrl} + return KeyPressEvent{Rune: '@', Mod: ModCtrl} } - return KeyDownEvent{Rune: ' ', Sym: KeySpace, Mod: Ctrl} + return KeyPressEvent{Rune: ' ', Sym: KeySpace, Mod: ModCtrl} case ansi.BS: - return KeyDownEvent{Rune: 'h', Mod: Ctrl} + return KeyPressEvent{Rune: 'h', Mod: ModCtrl} case ansi.HT: if flags&FlagCtrlI != 0 { - return KeyDownEvent{Rune: 'i', Mod: Ctrl} + return KeyPressEvent{Rune: 'i', Mod: ModCtrl} } - return KeyDownEvent{Sym: KeyTab} + return KeyPressEvent{Sym: KeyTab} case ansi.CR: if flags&FlagCtrlM != 0 { - return KeyDownEvent{Rune: 'm', Mod: Ctrl} + return KeyPressEvent{Rune: 'm', Mod: ModCtrl} } - return KeyDownEvent{Sym: KeyEnter} + return KeyPressEvent{Sym: KeyEnter} case ansi.ESC: if flags&FlagCtrlOpenBracket != 0 { - return KeyDownEvent{Rune: '[', Mod: Ctrl} + return KeyPressEvent{Rune: '[', Mod: ModCtrl} } - return KeyDownEvent{Sym: KeyEscape} + return KeyPressEvent{Sym: KeyEscape} case ansi.DEL: if flags&FlagBackspace != 0 { - return KeyDownEvent{Sym: KeyDelete} + return KeyPressEvent{Sym: KeyDelete} } - return KeyDownEvent{Sym: KeyBackspace} + return KeyPressEvent{Sym: KeyBackspace} case ansi.SP: - return KeyDownEvent{Sym: KeySpace, Rune: ' '} + return KeyPressEvent{Sym: KeySpace, Rune: ' '} default: if b >= ansi.SOH && b <= ansi.SUB { // Use lower case letters for control codes - return KeyDownEvent{Rune: rune(b + 0x60), Mod: Ctrl} + return KeyPressEvent{Rune: rune(b + 0x60), Mod: ModCtrl} } else if b >= ansi.FS && b <= ansi.US { - return KeyDownEvent{Rune: rune(b + 0x40), Mod: Ctrl} + return KeyPressEvent{Rune: rune(b + 0x40), Mod: ModCtrl} } return UnknownEvent(b) } diff --git a/vendor/github.com/charmbracelet/x/input/table.go b/vendor/github.com/charmbracelet/x/input/table.go index 5ce2030..022d1ad 100644 --- a/vendor/github.com/charmbracelet/x/input/table.go +++ b/vendor/github.com/charmbracelet/x/input/table.go @@ -7,24 +7,24 @@ import ( ) func buildKeysTable(flags int, term string) map[string]Key { - nul := Key{Rune: ' ', Sym: KeySpace, Mod: Ctrl} // ctrl+@ or ctrl+space + nul := Key{Rune: ' ', Sym: KeySpace, Mod: ModCtrl} // ctrl+@ or ctrl+space if flags&FlagCtrlAt != 0 { - nul = Key{Rune: '@', Mod: Ctrl} + nul = Key{Rune: '@', Mod: ModCtrl} } tab := Key{Sym: KeyTab} // ctrl+i or tab if flags&FlagCtrlI != 0 { - tab = Key{Rune: 'i', Mod: Ctrl} + tab = Key{Rune: 'i', Mod: ModCtrl} } enter := Key{Sym: KeyEnter} // ctrl+m or enter if flags&FlagCtrlM != 0 { - enter = Key{Rune: 'm', Mod: Ctrl} + enter = Key{Rune: 'm', Mod: ModCtrl} } esc := Key{Sym: KeyEscape} // ctrl+[ or escape if flags&FlagCtrlOpenBracket != 0 { - esc = Key{Rune: '[', Mod: Ctrl} // ctrl+[ or escape + esc = Key{Rune: '[', Mod: ModCtrl} // ctrl+[ or escape } del := Key{Sym: KeyBackspace} @@ -53,37 +53,37 @@ func buildKeysTable(flags int, term string) map[string]Key { table := map[string]Key{ // C0 control characters string(byte(ansi.NUL)): nul, - string(byte(ansi.SOH)): {Rune: 'a', Mod: Ctrl}, - string(byte(ansi.STX)): {Rune: 'b', Mod: Ctrl}, - string(byte(ansi.ETX)): {Rune: 'c', Mod: Ctrl}, - string(byte(ansi.EOT)): {Rune: 'd', Mod: Ctrl}, - string(byte(ansi.ENQ)): {Rune: 'e', Mod: Ctrl}, - string(byte(ansi.ACK)): {Rune: 'f', Mod: Ctrl}, - string(byte(ansi.BEL)): {Rune: 'g', Mod: Ctrl}, - string(byte(ansi.BS)): {Rune: 'h', Mod: Ctrl}, + string(byte(ansi.SOH)): {Rune: 'a', Mod: ModCtrl}, + string(byte(ansi.STX)): {Rune: 'b', Mod: ModCtrl}, + string(byte(ansi.ETX)): {Rune: 'c', Mod: ModCtrl}, + string(byte(ansi.EOT)): {Rune: 'd', Mod: ModCtrl}, + string(byte(ansi.ENQ)): {Rune: 'e', Mod: ModCtrl}, + string(byte(ansi.ACK)): {Rune: 'f', Mod: ModCtrl}, + string(byte(ansi.BEL)): {Rune: 'g', Mod: ModCtrl}, + string(byte(ansi.BS)): {Rune: 'h', Mod: ModCtrl}, string(byte(ansi.HT)): tab, - string(byte(ansi.LF)): {Rune: 'j', Mod: Ctrl}, - string(byte(ansi.VT)): {Rune: 'k', Mod: Ctrl}, - string(byte(ansi.FF)): {Rune: 'l', Mod: Ctrl}, + string(byte(ansi.LF)): {Rune: 'j', Mod: ModCtrl}, + string(byte(ansi.VT)): {Rune: 'k', Mod: ModCtrl}, + string(byte(ansi.FF)): {Rune: 'l', Mod: ModCtrl}, string(byte(ansi.CR)): enter, - string(byte(ansi.SO)): {Rune: 'n', Mod: Ctrl}, - string(byte(ansi.SI)): {Rune: 'o', Mod: Ctrl}, - string(byte(ansi.DLE)): {Rune: 'p', Mod: Ctrl}, - string(byte(ansi.DC1)): {Rune: 'q', Mod: Ctrl}, - string(byte(ansi.DC2)): {Rune: 'r', Mod: Ctrl}, - string(byte(ansi.DC3)): {Rune: 's', Mod: Ctrl}, - string(byte(ansi.DC4)): {Rune: 't', Mod: Ctrl}, - string(byte(ansi.NAK)): {Rune: 'u', Mod: Ctrl}, - string(byte(ansi.SYN)): {Rune: 'v', Mod: Ctrl}, - string(byte(ansi.ETB)): {Rune: 'w', Mod: Ctrl}, - string(byte(ansi.CAN)): {Rune: 'x', Mod: Ctrl}, - string(byte(ansi.EM)): {Rune: 'y', Mod: Ctrl}, - string(byte(ansi.SUB)): {Rune: 'z', Mod: Ctrl}, + string(byte(ansi.SO)): {Rune: 'n', Mod: ModCtrl}, + string(byte(ansi.SI)): {Rune: 'o', Mod: ModCtrl}, + string(byte(ansi.DLE)): {Rune: 'p', Mod: ModCtrl}, + string(byte(ansi.DC1)): {Rune: 'q', Mod: ModCtrl}, + string(byte(ansi.DC2)): {Rune: 'r', Mod: ModCtrl}, + string(byte(ansi.DC3)): {Rune: 's', Mod: ModCtrl}, + string(byte(ansi.DC4)): {Rune: 't', Mod: ModCtrl}, + string(byte(ansi.NAK)): {Rune: 'u', Mod: ModCtrl}, + string(byte(ansi.SYN)): {Rune: 'v', Mod: ModCtrl}, + string(byte(ansi.ETB)): {Rune: 'w', Mod: ModCtrl}, + string(byte(ansi.CAN)): {Rune: 'x', Mod: ModCtrl}, + string(byte(ansi.EM)): {Rune: 'y', Mod: ModCtrl}, + string(byte(ansi.SUB)): {Rune: 'z', Mod: ModCtrl}, string(byte(ansi.ESC)): esc, - string(byte(ansi.FS)): {Rune: '\\', Mod: Ctrl}, - string(byte(ansi.GS)): {Rune: ']', Mod: Ctrl}, - string(byte(ansi.RS)): {Rune: '^', Mod: Ctrl}, - string(byte(ansi.US)): {Rune: '_', Mod: Ctrl}, + string(byte(ansi.FS)): {Rune: '\\', Mod: ModCtrl}, + string(byte(ansi.GS)): {Rune: ']', Mod: ModCtrl}, + string(byte(ansi.RS)): {Rune: '^', Mod: ModCtrl}, + string(byte(ansi.US)): {Rune: '_', Mod: ModCtrl}, // Special keys in G0 string(byte(ansi.SP)): {Sym: KeySpace, Rune: ' '}, @@ -91,7 +91,7 @@ func buildKeysTable(flags int, term string) map[string]Key { // Special keys - "\x1b[Z": {Sym: KeyTab, Mod: Shift}, + "\x1b[Z": {Sym: KeyTab, Mod: ModShift}, "\x1b[1~": find, "\x1b[2~": {Sym: KeyInsert}, @@ -194,14 +194,14 @@ func buildKeysTable(flags int, term string) map[string]Key { // URxvt keys // See https://manpages.ubuntu.com/manpages/trusty/man7/urxvt.7.html#key%20codes - table["\x1b[a"] = Key{Sym: KeyUp, Mod: Shift} - table["\x1b[b"] = Key{Sym: KeyDown, Mod: Shift} - table["\x1b[c"] = Key{Sym: KeyRight, Mod: Shift} - table["\x1b[d"] = Key{Sym: KeyLeft, Mod: Shift} - table["\x1bOa"] = Key{Sym: KeyUp, Mod: Ctrl} - table["\x1bOb"] = Key{Sym: KeyDown, Mod: Ctrl} - table["\x1bOc"] = Key{Sym: KeyRight, Mod: Ctrl} - table["\x1bOd"] = Key{Sym: KeyLeft, Mod: Ctrl} + table["\x1b[a"] = Key{Sym: KeyUp, Mod: ModShift} + table["\x1b[b"] = Key{Sym: KeyDown, Mod: ModShift} + table["\x1b[c"] = Key{Sym: KeyRight, Mod: ModShift} + table["\x1b[d"] = Key{Sym: KeyLeft, Mod: ModShift} + table["\x1bOa"] = Key{Sym: KeyUp, Mod: ModCtrl} + table["\x1bOb"] = Key{Sym: KeyDown, Mod: ModCtrl} + table["\x1bOc"] = Key{Sym: KeyRight, Mod: ModCtrl} + table["\x1bOd"] = Key{Sym: KeyLeft, Mod: ModCtrl} // TODO: invistigate if shift-ctrl arrow keys collide with DECCKM keys i.e. // "\x1bOA", "\x1bOB", "\x1bOC", "\x1bOD" @@ -210,13 +210,13 @@ func buildKeysTable(flags int, term string) map[string]Key { key := v // Normal (no modifier) already defined part of VT100/VT200 // Shift modifier - key.Mod = Shift + key.Mod = ModShift table["\x1b["+k+"$"] = key // Ctrl modifier - key.Mod = Ctrl + key.Mod = ModCtrl table["\x1b["+k+"^"] = key // Shift-Ctrl modifier - key.Mod = Shift | Ctrl + key.Mod = ModShift | ModCtrl table["\x1b["+k+"@"] = key } @@ -229,46 +229,46 @@ func buildKeysTable(flags int, term string) map[string]Key { // different escapes like XTerm, or switch to a better terminal ¯\_(ツ)_/¯ // // See https://manpages.ubuntu.com/manpages/trusty/man7/urxvt.7.html#key%20codes - table["\x1b[23$"] = Key{Sym: KeyF11, Mod: Shift} - table["\x1b[24$"] = Key{Sym: KeyF12, Mod: Shift} - table["\x1b[25$"] = Key{Sym: KeyF13, Mod: Shift} - table["\x1b[26$"] = Key{Sym: KeyF14, Mod: Shift} - table["\x1b[28$"] = Key{Sym: KeyF15, Mod: Shift} - table["\x1b[29$"] = Key{Sym: KeyF16, Mod: Shift} - table["\x1b[31$"] = Key{Sym: KeyF17, Mod: Shift} - table["\x1b[32$"] = Key{Sym: KeyF18, Mod: Shift} - table["\x1b[33$"] = Key{Sym: KeyF19, Mod: Shift} - table["\x1b[34$"] = Key{Sym: KeyF20, Mod: Shift} - table["\x1b[11^"] = Key{Sym: KeyF1, Mod: Ctrl} - table["\x1b[12^"] = Key{Sym: KeyF2, Mod: Ctrl} - table["\x1b[13^"] = Key{Sym: KeyF3, Mod: Ctrl} - table["\x1b[14^"] = Key{Sym: KeyF4, Mod: Ctrl} - table["\x1b[15^"] = Key{Sym: KeyF5, Mod: Ctrl} - table["\x1b[17^"] = Key{Sym: KeyF6, Mod: Ctrl} - table["\x1b[18^"] = Key{Sym: KeyF7, Mod: Ctrl} - table["\x1b[19^"] = Key{Sym: KeyF8, Mod: Ctrl} - table["\x1b[20^"] = Key{Sym: KeyF9, Mod: Ctrl} - table["\x1b[21^"] = Key{Sym: KeyF10, Mod: Ctrl} - table["\x1b[23^"] = Key{Sym: KeyF11, Mod: Ctrl} - table["\x1b[24^"] = Key{Sym: KeyF12, Mod: Ctrl} - table["\x1b[25^"] = Key{Sym: KeyF13, Mod: Ctrl} - table["\x1b[26^"] = Key{Sym: KeyF14, Mod: Ctrl} - table["\x1b[28^"] = Key{Sym: KeyF15, Mod: Ctrl} - table["\x1b[29^"] = Key{Sym: KeyF16, Mod: Ctrl} - table["\x1b[31^"] = Key{Sym: KeyF17, Mod: Ctrl} - table["\x1b[32^"] = Key{Sym: KeyF18, Mod: Ctrl} - table["\x1b[33^"] = Key{Sym: KeyF19, Mod: Ctrl} - table["\x1b[34^"] = Key{Sym: KeyF20, Mod: Ctrl} - table["\x1b[23@"] = Key{Sym: KeyF11, Mod: Shift | Ctrl} - table["\x1b[24@"] = Key{Sym: KeyF12, Mod: Shift | Ctrl} - table["\x1b[25@"] = Key{Sym: KeyF13, Mod: Shift | Ctrl} - table["\x1b[26@"] = Key{Sym: KeyF14, Mod: Shift | Ctrl} - table["\x1b[28@"] = Key{Sym: KeyF15, Mod: Shift | Ctrl} - table["\x1b[29@"] = Key{Sym: KeyF16, Mod: Shift | Ctrl} - table["\x1b[31@"] = Key{Sym: KeyF17, Mod: Shift | Ctrl} - table["\x1b[32@"] = Key{Sym: KeyF18, Mod: Shift | Ctrl} - table["\x1b[33@"] = Key{Sym: KeyF19, Mod: Shift | Ctrl} - table["\x1b[34@"] = Key{Sym: KeyF20, Mod: Shift | Ctrl} + table["\x1b[23$"] = Key{Sym: KeyF11, Mod: ModShift} + table["\x1b[24$"] = Key{Sym: KeyF12, Mod: ModShift} + table["\x1b[25$"] = Key{Sym: KeyF13, Mod: ModShift} + table["\x1b[26$"] = Key{Sym: KeyF14, Mod: ModShift} + table["\x1b[28$"] = Key{Sym: KeyF15, Mod: ModShift} + table["\x1b[29$"] = Key{Sym: KeyF16, Mod: ModShift} + table["\x1b[31$"] = Key{Sym: KeyF17, Mod: ModShift} + table["\x1b[32$"] = Key{Sym: KeyF18, Mod: ModShift} + table["\x1b[33$"] = Key{Sym: KeyF19, Mod: ModShift} + table["\x1b[34$"] = Key{Sym: KeyF20, Mod: ModShift} + table["\x1b[11^"] = Key{Sym: KeyF1, Mod: ModCtrl} + table["\x1b[12^"] = Key{Sym: KeyF2, Mod: ModCtrl} + table["\x1b[13^"] = Key{Sym: KeyF3, Mod: ModCtrl} + table["\x1b[14^"] = Key{Sym: KeyF4, Mod: ModCtrl} + table["\x1b[15^"] = Key{Sym: KeyF5, Mod: ModCtrl} + table["\x1b[17^"] = Key{Sym: KeyF6, Mod: ModCtrl} + table["\x1b[18^"] = Key{Sym: KeyF7, Mod: ModCtrl} + table["\x1b[19^"] = Key{Sym: KeyF8, Mod: ModCtrl} + table["\x1b[20^"] = Key{Sym: KeyF9, Mod: ModCtrl} + table["\x1b[21^"] = Key{Sym: KeyF10, Mod: ModCtrl} + table["\x1b[23^"] = Key{Sym: KeyF11, Mod: ModCtrl} + table["\x1b[24^"] = Key{Sym: KeyF12, Mod: ModCtrl} + table["\x1b[25^"] = Key{Sym: KeyF13, Mod: ModCtrl} + table["\x1b[26^"] = Key{Sym: KeyF14, Mod: ModCtrl} + table["\x1b[28^"] = Key{Sym: KeyF15, Mod: ModCtrl} + table["\x1b[29^"] = Key{Sym: KeyF16, Mod: ModCtrl} + table["\x1b[31^"] = Key{Sym: KeyF17, Mod: ModCtrl} + table["\x1b[32^"] = Key{Sym: KeyF18, Mod: ModCtrl} + table["\x1b[33^"] = Key{Sym: KeyF19, Mod: ModCtrl} + table["\x1b[34^"] = Key{Sym: KeyF20, Mod: ModCtrl} + table["\x1b[23@"] = Key{Sym: KeyF11, Mod: ModShift | ModCtrl} + table["\x1b[24@"] = Key{Sym: KeyF12, Mod: ModShift | ModCtrl} + table["\x1b[25@"] = Key{Sym: KeyF13, Mod: ModShift | ModCtrl} + table["\x1b[26@"] = Key{Sym: KeyF14, Mod: ModShift | ModCtrl} + table["\x1b[28@"] = Key{Sym: KeyF15, Mod: ModShift | ModCtrl} + table["\x1b[29@"] = Key{Sym: KeyF16, Mod: ModShift | ModCtrl} + table["\x1b[31@"] = Key{Sym: KeyF17, Mod: ModShift | ModCtrl} + table["\x1b[32@"] = Key{Sym: KeyF18, Mod: ModShift | ModCtrl} + table["\x1b[33@"] = Key{Sym: KeyF19, Mod: ModShift | ModCtrl} + table["\x1b[34@"] = Key{Sym: KeyF20, Mod: ModShift | ModCtrl} // Register Alt + combinations // XXX: this must come after URxvt but before XTerm keys to register URxvt @@ -276,7 +276,7 @@ func buildKeysTable(flags int, term string) map[string]Key { tmap := map[string]Key{} for seq, key := range table { key := key - key.Mod |= Alt + key.Mod |= ModAlt tmap["\x1b"+seq] = key } for seq, key := range tmap { @@ -287,21 +287,21 @@ func buildKeysTable(flags int, term string) map[string]Key { // These are offset by 1 to be compatible with our Mod type. // See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-PC-Style-Function-Keys modifiers := []KeyMod{ - Shift, // 1 - Alt, // 2 - Shift | Alt, // 3 - Ctrl, // 4 - Shift | Ctrl, // 5 - Alt | Ctrl, // 6 - Shift | Alt | Ctrl, // 7 - Meta, // 8 - Meta | Shift, // 9 - Meta | Alt, // 10 - Meta | Shift | Alt, // 11 - Meta | Ctrl, // 12 - Meta | Shift | Ctrl, // 13 - Meta | Alt | Ctrl, // 14 - Meta | Shift | Alt | Ctrl, // 15 + ModShift, // 1 + ModAlt, // 2 + ModShift | ModAlt, // 3 + ModCtrl, // 4 + ModShift | ModCtrl, // 5 + ModAlt | ModCtrl, // 6 + ModShift | ModAlt | ModCtrl, // 7 + ModMeta, // 8 + ModMeta | ModShift, // 9 + ModMeta | ModAlt, // 10 + ModMeta | ModShift | ModAlt, // 11 + ModMeta | ModCtrl, // 12 + ModMeta | ModShift | ModCtrl, // 13 + ModMeta | ModAlt | ModCtrl, // 14 + ModMeta | ModShift | ModAlt | ModCtrl, // 15 } // SS3 keypad function keys diff --git a/vendor/github.com/charmbracelet/x/input/terminfo.go b/vendor/github.com/charmbracelet/x/input/terminfo.go index debf851..d5a702a 100644 --- a/vendor/github.com/charmbracelet/x/input/terminfo.go +++ b/vendor/github.com/charmbracelet/x/input/terminfo.go @@ -57,90 +57,90 @@ func buildTerminfoKeys(flags int, term string) map[string]Key { func defaultTerminfoKeys(flags int) map[string]Key { keys := map[string]Key{ "kcuu1": {Sym: KeyUp}, - "kUP": {Sym: KeyUp, Mod: Shift}, - "kUP3": {Sym: KeyUp, Mod: Alt}, - "kUP4": {Sym: KeyUp, Mod: Shift | Alt}, - "kUP5": {Sym: KeyUp, Mod: Ctrl}, - "kUP6": {Sym: KeyUp, Mod: Shift | Ctrl}, - "kUP7": {Sym: KeyUp, Mod: Alt | Ctrl}, - "kUP8": {Sym: KeyUp, Mod: Shift | Alt | Ctrl}, + "kUP": {Sym: KeyUp, Mod: ModShift}, + "kUP3": {Sym: KeyUp, Mod: ModAlt}, + "kUP4": {Sym: KeyUp, Mod: ModShift | ModAlt}, + "kUP5": {Sym: KeyUp, Mod: ModCtrl}, + "kUP6": {Sym: KeyUp, Mod: ModShift | ModCtrl}, + "kUP7": {Sym: KeyUp, Mod: ModAlt | ModCtrl}, + "kUP8": {Sym: KeyUp, Mod: ModShift | ModAlt | ModCtrl}, "kcud1": {Sym: KeyDown}, - "kDN": {Sym: KeyDown, Mod: Shift}, - "kDN3": {Sym: KeyDown, Mod: Alt}, - "kDN4": {Sym: KeyDown, Mod: Shift | Alt}, - "kDN5": {Sym: KeyDown, Mod: Ctrl}, - "kDN7": {Sym: KeyDown, Mod: Alt | Ctrl}, - "kDN6": {Sym: KeyDown, Mod: Shift | Ctrl}, - "kDN8": {Sym: KeyDown, Mod: Shift | Alt | Ctrl}, + "kDN": {Sym: KeyDown, Mod: ModShift}, + "kDN3": {Sym: KeyDown, Mod: ModAlt}, + "kDN4": {Sym: KeyDown, Mod: ModShift | ModAlt}, + "kDN5": {Sym: KeyDown, Mod: ModCtrl}, + "kDN7": {Sym: KeyDown, Mod: ModAlt | ModCtrl}, + "kDN6": {Sym: KeyDown, Mod: ModShift | ModCtrl}, + "kDN8": {Sym: KeyDown, Mod: ModShift | ModAlt | ModCtrl}, "kcub1": {Sym: KeyLeft}, - "kLFT": {Sym: KeyLeft, Mod: Shift}, - "kLFT3": {Sym: KeyLeft, Mod: Alt}, - "kLFT4": {Sym: KeyLeft, Mod: Shift | Alt}, - "kLFT5": {Sym: KeyLeft, Mod: Ctrl}, - "kLFT6": {Sym: KeyLeft, Mod: Shift | Ctrl}, - "kLFT7": {Sym: KeyLeft, Mod: Alt | Ctrl}, - "kLFT8": {Sym: KeyLeft, Mod: Shift | Alt | Ctrl}, + "kLFT": {Sym: KeyLeft, Mod: ModShift}, + "kLFT3": {Sym: KeyLeft, Mod: ModAlt}, + "kLFT4": {Sym: KeyLeft, Mod: ModShift | ModAlt}, + "kLFT5": {Sym: KeyLeft, Mod: ModCtrl}, + "kLFT6": {Sym: KeyLeft, Mod: ModShift | ModCtrl}, + "kLFT7": {Sym: KeyLeft, Mod: ModAlt | ModCtrl}, + "kLFT8": {Sym: KeyLeft, Mod: ModShift | ModAlt | ModCtrl}, "kcuf1": {Sym: KeyRight}, - "kRIT": {Sym: KeyRight, Mod: Shift}, - "kRIT3": {Sym: KeyRight, Mod: Alt}, - "kRIT4": {Sym: KeyRight, Mod: Shift | Alt}, - "kRIT5": {Sym: KeyRight, Mod: Ctrl}, - "kRIT6": {Sym: KeyRight, Mod: Shift | Ctrl}, - "kRIT7": {Sym: KeyRight, Mod: Alt | Ctrl}, - "kRIT8": {Sym: KeyRight, Mod: Shift | Alt | Ctrl}, + "kRIT": {Sym: KeyRight, Mod: ModShift}, + "kRIT3": {Sym: KeyRight, Mod: ModAlt}, + "kRIT4": {Sym: KeyRight, Mod: ModShift | ModAlt}, + "kRIT5": {Sym: KeyRight, Mod: ModCtrl}, + "kRIT6": {Sym: KeyRight, Mod: ModShift | ModCtrl}, + "kRIT7": {Sym: KeyRight, Mod: ModAlt | ModCtrl}, + "kRIT8": {Sym: KeyRight, Mod: ModShift | ModAlt | ModCtrl}, "kich1": {Sym: KeyInsert}, - "kIC": {Sym: KeyInsert, Mod: Shift}, - "kIC3": {Sym: KeyInsert, Mod: Alt}, - "kIC4": {Sym: KeyInsert, Mod: Shift | Alt}, - "kIC5": {Sym: KeyInsert, Mod: Ctrl}, - "kIC6": {Sym: KeyInsert, Mod: Shift | Ctrl}, - "kIC7": {Sym: KeyInsert, Mod: Alt | Ctrl}, - "kIC8": {Sym: KeyInsert, Mod: Shift | Alt | Ctrl}, + "kIC": {Sym: KeyInsert, Mod: ModShift}, + "kIC3": {Sym: KeyInsert, Mod: ModAlt}, + "kIC4": {Sym: KeyInsert, Mod: ModShift | ModAlt}, + "kIC5": {Sym: KeyInsert, Mod: ModCtrl}, + "kIC6": {Sym: KeyInsert, Mod: ModShift | ModCtrl}, + "kIC7": {Sym: KeyInsert, Mod: ModAlt | ModCtrl}, + "kIC8": {Sym: KeyInsert, Mod: ModShift | ModAlt | ModCtrl}, "kdch1": {Sym: KeyDelete}, - "kDC": {Sym: KeyDelete, Mod: Shift}, - "kDC3": {Sym: KeyDelete, Mod: Alt}, - "kDC4": {Sym: KeyDelete, Mod: Shift | Alt}, - "kDC5": {Sym: KeyDelete, Mod: Ctrl}, - "kDC6": {Sym: KeyDelete, Mod: Shift | Ctrl}, - "kDC7": {Sym: KeyDelete, Mod: Alt | Ctrl}, - "kDC8": {Sym: KeyDelete, Mod: Shift | Alt | Ctrl}, + "kDC": {Sym: KeyDelete, Mod: ModShift}, + "kDC3": {Sym: KeyDelete, Mod: ModAlt}, + "kDC4": {Sym: KeyDelete, Mod: ModShift | ModAlt}, + "kDC5": {Sym: KeyDelete, Mod: ModCtrl}, + "kDC6": {Sym: KeyDelete, Mod: ModShift | ModCtrl}, + "kDC7": {Sym: KeyDelete, Mod: ModAlt | ModCtrl}, + "kDC8": {Sym: KeyDelete, Mod: ModShift | ModAlt | ModCtrl}, "khome": {Sym: KeyHome}, - "kHOM": {Sym: KeyHome, Mod: Shift}, - "kHOM3": {Sym: KeyHome, Mod: Alt}, - "kHOM4": {Sym: KeyHome, Mod: Shift | Alt}, - "kHOM5": {Sym: KeyHome, Mod: Ctrl}, - "kHOM6": {Sym: KeyHome, Mod: Shift | Ctrl}, - "kHOM7": {Sym: KeyHome, Mod: Alt | Ctrl}, - "kHOM8": {Sym: KeyHome, Mod: Shift | Alt | Ctrl}, + "kHOM": {Sym: KeyHome, Mod: ModShift}, + "kHOM3": {Sym: KeyHome, Mod: ModAlt}, + "kHOM4": {Sym: KeyHome, Mod: ModShift | ModAlt}, + "kHOM5": {Sym: KeyHome, Mod: ModCtrl}, + "kHOM6": {Sym: KeyHome, Mod: ModShift | ModCtrl}, + "kHOM7": {Sym: KeyHome, Mod: ModAlt | ModCtrl}, + "kHOM8": {Sym: KeyHome, Mod: ModShift | ModAlt | ModCtrl}, "kend": {Sym: KeyEnd}, - "kEND": {Sym: KeyEnd, Mod: Shift}, - "kEND3": {Sym: KeyEnd, Mod: Alt}, - "kEND4": {Sym: KeyEnd, Mod: Shift | Alt}, - "kEND5": {Sym: KeyEnd, Mod: Ctrl}, - "kEND6": {Sym: KeyEnd, Mod: Shift | Ctrl}, - "kEND7": {Sym: KeyEnd, Mod: Alt | Ctrl}, - "kEND8": {Sym: KeyEnd, Mod: Shift | Alt | Ctrl}, + "kEND": {Sym: KeyEnd, Mod: ModShift}, + "kEND3": {Sym: KeyEnd, Mod: ModAlt}, + "kEND4": {Sym: KeyEnd, Mod: ModShift | ModAlt}, + "kEND5": {Sym: KeyEnd, Mod: ModCtrl}, + "kEND6": {Sym: KeyEnd, Mod: ModShift | ModCtrl}, + "kEND7": {Sym: KeyEnd, Mod: ModAlt | ModCtrl}, + "kEND8": {Sym: KeyEnd, Mod: ModShift | ModAlt | ModCtrl}, "kpp": {Sym: KeyPgUp}, "kprv": {Sym: KeyPgUp}, - "kPRV": {Sym: KeyPgUp, Mod: Shift}, - "kPRV3": {Sym: KeyPgUp, Mod: Alt}, - "kPRV4": {Sym: KeyPgUp, Mod: Shift | Alt}, - "kPRV5": {Sym: KeyPgUp, Mod: Ctrl}, - "kPRV6": {Sym: KeyPgUp, Mod: Shift | Ctrl}, - "kPRV7": {Sym: KeyPgUp, Mod: Alt | Ctrl}, - "kPRV8": {Sym: KeyPgUp, Mod: Shift | Alt | Ctrl}, + "kPRV": {Sym: KeyPgUp, Mod: ModShift}, + "kPRV3": {Sym: KeyPgUp, Mod: ModAlt}, + "kPRV4": {Sym: KeyPgUp, Mod: ModShift | ModAlt}, + "kPRV5": {Sym: KeyPgUp, Mod: ModCtrl}, + "kPRV6": {Sym: KeyPgUp, Mod: ModShift | ModCtrl}, + "kPRV7": {Sym: KeyPgUp, Mod: ModAlt | ModCtrl}, + "kPRV8": {Sym: KeyPgUp, Mod: ModShift | ModAlt | ModCtrl}, "knp": {Sym: KeyPgDown}, "knxt": {Sym: KeyPgDown}, - "kNXT": {Sym: KeyPgDown, Mod: Shift}, - "kNXT3": {Sym: KeyPgDown, Mod: Alt}, - "kNXT4": {Sym: KeyPgDown, Mod: Shift | Alt}, - "kNXT5": {Sym: KeyPgDown, Mod: Ctrl}, - "kNXT6": {Sym: KeyPgDown, Mod: Shift | Ctrl}, - "kNXT7": {Sym: KeyPgDown, Mod: Alt | Ctrl}, - "kNXT8": {Sym: KeyPgDown, Mod: Shift | Alt | Ctrl}, + "kNXT": {Sym: KeyPgDown, Mod: ModShift}, + "kNXT3": {Sym: KeyPgDown, Mod: ModAlt}, + "kNXT4": {Sym: KeyPgDown, Mod: ModShift | ModAlt}, + "kNXT5": {Sym: KeyPgDown, Mod: ModCtrl}, + "kNXT6": {Sym: KeyPgDown, Mod: ModShift | ModCtrl}, + "kNXT7": {Sym: KeyPgDown, Mod: ModAlt | ModCtrl}, + "kNXT8": {Sym: KeyPgDown, Mod: ModShift | ModAlt | ModCtrl}, "kbs": {Sym: KeyBackspace}, - "kcbt": {Sym: KeyTab, Mod: Shift}, + "kcbt": {Sym: KeyTab, Mod: ModShift}, // Function keys // This only includes the first 12 function keys. The rest are treated @@ -164,57 +164,57 @@ func defaultTerminfoKeys(flags int) map[string]Key { "kf10": {Sym: KeyF10}, "kf11": {Sym: KeyF11}, "kf12": {Sym: KeyF12}, - "kf13": {Sym: KeyF1, Mod: Shift}, - "kf14": {Sym: KeyF2, Mod: Shift}, - "kf15": {Sym: KeyF3, Mod: Shift}, - "kf16": {Sym: KeyF4, Mod: Shift}, - "kf17": {Sym: KeyF5, Mod: Shift}, - "kf18": {Sym: KeyF6, Mod: Shift}, - "kf19": {Sym: KeyF7, Mod: Shift}, - "kf20": {Sym: KeyF8, Mod: Shift}, - "kf21": {Sym: KeyF9, Mod: Shift}, - "kf22": {Sym: KeyF10, Mod: Shift}, - "kf23": {Sym: KeyF11, Mod: Shift}, - "kf24": {Sym: KeyF12, Mod: Shift}, - "kf25": {Sym: KeyF1, Mod: Ctrl}, - "kf26": {Sym: KeyF2, Mod: Ctrl}, - "kf27": {Sym: KeyF3, Mod: Ctrl}, - "kf28": {Sym: KeyF4, Mod: Ctrl}, - "kf29": {Sym: KeyF5, Mod: Ctrl}, - "kf30": {Sym: KeyF6, Mod: Ctrl}, - "kf31": {Sym: KeyF7, Mod: Ctrl}, - "kf32": {Sym: KeyF8, Mod: Ctrl}, - "kf33": {Sym: KeyF9, Mod: Ctrl}, - "kf34": {Sym: KeyF10, Mod: Ctrl}, - "kf35": {Sym: KeyF11, Mod: Ctrl}, - "kf36": {Sym: KeyF12, Mod: Ctrl}, - "kf37": {Sym: KeyF1, Mod: Shift | Ctrl}, - "kf38": {Sym: KeyF2, Mod: Shift | Ctrl}, - "kf39": {Sym: KeyF3, Mod: Shift | Ctrl}, - "kf40": {Sym: KeyF4, Mod: Shift | Ctrl}, - "kf41": {Sym: KeyF5, Mod: Shift | Ctrl}, - "kf42": {Sym: KeyF6, Mod: Shift | Ctrl}, - "kf43": {Sym: KeyF7, Mod: Shift | Ctrl}, - "kf44": {Sym: KeyF8, Mod: Shift | Ctrl}, - "kf45": {Sym: KeyF9, Mod: Shift | Ctrl}, - "kf46": {Sym: KeyF10, Mod: Shift | Ctrl}, - "kf47": {Sym: KeyF11, Mod: Shift | Ctrl}, - "kf48": {Sym: KeyF12, Mod: Shift | Ctrl}, - "kf49": {Sym: KeyF1, Mod: Alt}, - "kf50": {Sym: KeyF2, Mod: Alt}, - "kf51": {Sym: KeyF3, Mod: Alt}, - "kf52": {Sym: KeyF4, Mod: Alt}, - "kf53": {Sym: KeyF5, Mod: Alt}, - "kf54": {Sym: KeyF6, Mod: Alt}, - "kf55": {Sym: KeyF7, Mod: Alt}, - "kf56": {Sym: KeyF8, Mod: Alt}, - "kf57": {Sym: KeyF9, Mod: Alt}, - "kf58": {Sym: KeyF10, Mod: Alt}, - "kf59": {Sym: KeyF11, Mod: Alt}, - "kf60": {Sym: KeyF12, Mod: Alt}, - "kf61": {Sym: KeyF1, Mod: Shift | Alt}, - "kf62": {Sym: KeyF2, Mod: Shift | Alt}, - "kf63": {Sym: KeyF3, Mod: Shift | Alt}, + "kf13": {Sym: KeyF1, Mod: ModShift}, + "kf14": {Sym: KeyF2, Mod: ModShift}, + "kf15": {Sym: KeyF3, Mod: ModShift}, + "kf16": {Sym: KeyF4, Mod: ModShift}, + "kf17": {Sym: KeyF5, Mod: ModShift}, + "kf18": {Sym: KeyF6, Mod: ModShift}, + "kf19": {Sym: KeyF7, Mod: ModShift}, + "kf20": {Sym: KeyF8, Mod: ModShift}, + "kf21": {Sym: KeyF9, Mod: ModShift}, + "kf22": {Sym: KeyF10, Mod: ModShift}, + "kf23": {Sym: KeyF11, Mod: ModShift}, + "kf24": {Sym: KeyF12, Mod: ModShift}, + "kf25": {Sym: KeyF1, Mod: ModCtrl}, + "kf26": {Sym: KeyF2, Mod: ModCtrl}, + "kf27": {Sym: KeyF3, Mod: ModCtrl}, + "kf28": {Sym: KeyF4, Mod: ModCtrl}, + "kf29": {Sym: KeyF5, Mod: ModCtrl}, + "kf30": {Sym: KeyF6, Mod: ModCtrl}, + "kf31": {Sym: KeyF7, Mod: ModCtrl}, + "kf32": {Sym: KeyF8, Mod: ModCtrl}, + "kf33": {Sym: KeyF9, Mod: ModCtrl}, + "kf34": {Sym: KeyF10, Mod: ModCtrl}, + "kf35": {Sym: KeyF11, Mod: ModCtrl}, + "kf36": {Sym: KeyF12, Mod: ModCtrl}, + "kf37": {Sym: KeyF1, Mod: ModShift | ModCtrl}, + "kf38": {Sym: KeyF2, Mod: ModShift | ModCtrl}, + "kf39": {Sym: KeyF3, Mod: ModShift | ModCtrl}, + "kf40": {Sym: KeyF4, Mod: ModShift | ModCtrl}, + "kf41": {Sym: KeyF5, Mod: ModShift | ModCtrl}, + "kf42": {Sym: KeyF6, Mod: ModShift | ModCtrl}, + "kf43": {Sym: KeyF7, Mod: ModShift | ModCtrl}, + "kf44": {Sym: KeyF8, Mod: ModShift | ModCtrl}, + "kf45": {Sym: KeyF9, Mod: ModShift | ModCtrl}, + "kf46": {Sym: KeyF10, Mod: ModShift | ModCtrl}, + "kf47": {Sym: KeyF11, Mod: ModShift | ModCtrl}, + "kf48": {Sym: KeyF12, Mod: ModShift | ModCtrl}, + "kf49": {Sym: KeyF1, Mod: ModAlt}, + "kf50": {Sym: KeyF2, Mod: ModAlt}, + "kf51": {Sym: KeyF3, Mod: ModAlt}, + "kf52": {Sym: KeyF4, Mod: ModAlt}, + "kf53": {Sym: KeyF5, Mod: ModAlt}, + "kf54": {Sym: KeyF6, Mod: ModAlt}, + "kf55": {Sym: KeyF7, Mod: ModAlt}, + "kf56": {Sym: KeyF8, Mod: ModAlt}, + "kf57": {Sym: KeyF9, Mod: ModAlt}, + "kf58": {Sym: KeyF10, Mod: ModAlt}, + "kf59": {Sym: KeyF11, Mod: ModAlt}, + "kf60": {Sym: KeyF12, Mod: ModAlt}, + "kf61": {Sym: KeyF1, Mod: ModShift | ModAlt}, + "kf62": {Sym: KeyF2, Mod: ModShift | ModAlt}, + "kf63": {Sym: KeyF3, Mod: ModShift | ModAlt}, } // Preserve F keys from F13 to F63 instead of using them for F-keys diff --git a/vendor/github.com/charmbracelet/x/input/win32input.go b/vendor/github.com/charmbracelet/x/input/win32input.go index 6fb55ac..a8d5f4b 100644 --- a/vendor/github.com/charmbracelet/x/input/win32input.go +++ b/vendor/github.com/charmbracelet/x/input/win32input.go @@ -44,22 +44,22 @@ func parseWin32InputKeyEvent(vkc coninput.VirtualKeyCode, _ coninput.VirtualKeyC } if isCtrl { - key.Mod |= Ctrl + key.Mod |= ModCtrl } if cks.Contains(coninput.LEFT_ALT_PRESSED | coninput.RIGHT_ALT_PRESSED) { - key.Mod |= Alt + key.Mod |= ModAlt } if cks.Contains(coninput.SHIFT_PRESSED) { - key.Mod |= Shift + key.Mod |= ModShift } if cks.Contains(coninput.CAPSLOCK_ON) { - key.Mod |= CapsLock + key.Mod |= ModCapsLock } if cks.Contains(coninput.NUMLOCK_ON) { - key.Mod |= NumLock + key.Mod |= ModNumLock } if cks.Contains(coninput.SCROLLLOCK_ON) { - key.Mod |= ScrollLock + key.Mod |= ModScrollLock } // Use the unshifted key @@ -69,10 +69,10 @@ func parseWin32InputKeyEvent(vkc coninput.VirtualKeyCode, _ coninput.VirtualKeyC key.AltRune = unicode.ToLower(key.Rune) } - var e Event = KeyDownEvent(key) + var e Event = KeyPressEvent(key) key.IsRepeat = repeatCount > 1 if !keyDown { - e = KeyUpEvent(key) + e = KeyReleaseEvent(key) } if repeatCount <= 1 { diff --git a/vendor/github.com/charmbracelet/x/input/xterm.go b/vendor/github.com/charmbracelet/x/input/xterm.go index f80ecf4..00a6751 100644 --- a/vendor/github.com/charmbracelet/x/input/xterm.go +++ b/vendor/github.com/charmbracelet/x/input/xterm.go @@ -11,19 +11,19 @@ func parseXTermModifyOtherKeys(csi *ansi.CsiSequence) Event { switch r { case ansi.BS: - return KeyDownEvent{Mod: mod, Sym: KeyBackspace} + return KeyPressEvent{Mod: mod, Sym: KeyBackspace} case ansi.HT: - return KeyDownEvent{Mod: mod, Sym: KeyTab} + return KeyPressEvent{Mod: mod, Sym: KeyTab} case ansi.CR: - return KeyDownEvent{Mod: mod, Sym: KeyEnter} + return KeyPressEvent{Mod: mod, Sym: KeyEnter} case ansi.ESC: - return KeyDownEvent{Mod: mod, Sym: KeyEscape} + return KeyPressEvent{Mod: mod, Sym: KeyEscape} case ansi.DEL: - return KeyDownEvent{Mod: mod, Sym: KeyBackspace} + return KeyPressEvent{Mod: mod, Sym: KeyBackspace} } // CSI 27 ; ; ~ keys defined in XTerm modifyOtherKeys - return KeyDownEvent{ + return KeyPressEvent{ Mod: mod, Rune: r, } diff --git a/vendor/github.com/charmbracelet/x/windows/doc.go b/vendor/github.com/charmbracelet/x/windows/doc.go index 15fc9ee..b385246 100644 --- a/vendor/github.com/charmbracelet/x/windows/doc.go +++ b/vendor/github.com/charmbracelet/x/windows/doc.go @@ -1,3 +1,3 @@ package windows -//go generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall_windows.go +//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall_windows.go diff --git a/vendor/github.com/charmbracelet/x/windows/syscall_windows.go b/vendor/github.com/charmbracelet/x/windows/syscall_windows.go index dd49431..f57cbd9 100644 --- a/vendor/github.com/charmbracelet/x/windows/syscall_windows.go +++ b/vendor/github.com/charmbracelet/x/windows/syscall_windows.go @@ -6,5 +6,5 @@ var NewLazySystemDLL = windows.NewLazySystemDLL type Handle = windows.Handle -//sys GetKeyboardLayout(threadId uint32) (hkl Handle, err error) = user32.GetKeyboardLayout -//sys ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32, err error) = user32.ToUnicodeEx +//sys GetKeyboardLayout(threadId uint32) (hkl Handle) = user32.GetKeyboardLayout +//sys ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx diff --git a/vendor/github.com/charmbracelet/x/windows/zsyscall_windows.go b/vendor/github.com/charmbracelet/x/windows/zsyscall_windows.go index 97096a4..a58f460 100644 --- a/vendor/github.com/charmbracelet/x/windows/zsyscall_windows.go +++ b/vendor/github.com/charmbracelet/x/windows/zsyscall_windows.go @@ -42,20 +42,14 @@ var ( procToUnicodeEx = moduser32.NewProc("ToUnicodeEx") ) -func GetKeyboardLayout(threadId uint32) (hkl Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetKeyboardLayout.Addr(), 1, uintptr(threadId), 0, 0) +func GetKeyboardLayout(threadId uint32) (hkl Handle) { + r0, _, _ := syscall.Syscall(procGetKeyboardLayout.Addr(), 1, uintptr(threadId), 0, 0) hkl = Handle(r0) - if hkl == 0 { - err = errnoErr(e1) - } return } -func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32, err error) { - r0, _, e1 := syscall.Syscall9(procToUnicodeEx.Addr(), 7, uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl), 0, 0) +func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) { + r0, _, _ := syscall.Syscall9(procToUnicodeEx.Addr(), 7, uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl), 0, 0) ret = int32(r0) - if ret == 0 { - err = errnoErr(e1) - } return } diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_table.go b/vendor/github.com/mattn/go-runewidth/runewidth_table.go index e5d890c..ad025ad 100644 --- a/vendor/github.com/mattn/go-runewidth/runewidth_table.go +++ b/vendor/github.com/mattn/go-runewidth/runewidth_table.go @@ -4,20 +4,21 @@ package runewidth var combining = table{ {0x0300, 0x036F}, {0x0483, 0x0489}, {0x07EB, 0x07F3}, - {0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0D00, 0x0D01}, - {0x135D, 0x135F}, {0x1A7F, 0x1A7F}, {0x1AB0, 0x1AC0}, - {0x1B6B, 0x1B73}, {0x1DC0, 0x1DF9}, {0x1DFB, 0x1DFF}, + {0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0CF3, 0x0CF3}, + {0x0D00, 0x0D01}, {0x135D, 0x135F}, {0x1A7F, 0x1A7F}, + {0x1AB0, 0x1ACE}, {0x1B6B, 0x1B73}, {0x1DC0, 0x1DFF}, {0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2DE0, 0x2DFF}, {0x3099, 0x309A}, {0xA66F, 0xA672}, {0xA674, 0xA67D}, {0xA69E, 0xA69F}, {0xA6F0, 0xA6F1}, {0xA8E0, 0xA8F1}, {0xFE20, 0xFE2F}, {0x101FD, 0x101FD}, {0x10376, 0x1037A}, - {0x10EAB, 0x10EAC}, {0x10F46, 0x10F50}, {0x11300, 0x11301}, - {0x1133B, 0x1133C}, {0x11366, 0x1136C}, {0x11370, 0x11374}, - {0x16AF0, 0x16AF4}, {0x1D165, 0x1D169}, {0x1D16D, 0x1D172}, + {0x10EAB, 0x10EAC}, {0x10F46, 0x10F50}, {0x10F82, 0x10F85}, + {0x11300, 0x11301}, {0x1133B, 0x1133C}, {0x11366, 0x1136C}, + {0x11370, 0x11374}, {0x16AF0, 0x16AF4}, {0x1CF00, 0x1CF2D}, + {0x1CF30, 0x1CF46}, {0x1D165, 0x1D169}, {0x1D16D, 0x1D172}, {0x1D17B, 0x1D182}, {0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD}, {0x1D242, 0x1D244}, {0x1E000, 0x1E006}, {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, - {0x1E8D0, 0x1E8D6}, + {0x1E08F, 0x1E08F}, {0x1E8D0, 0x1E8D6}, } var doublewidth = table{ @@ -33,33 +34,34 @@ var doublewidth = table{ {0x2753, 0x2755}, {0x2757, 0x2757}, {0x2795, 0x2797}, {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, {0x2B1B, 0x2B1C}, {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99}, - {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x2FFB}, - {0x3000, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF}, - {0x3105, 0x312F}, {0x3131, 0x318E}, {0x3190, 0x31E3}, - {0x31F0, 0x321E}, {0x3220, 0x3247}, {0x3250, 0x4DBF}, - {0x4E00, 0xA48C}, {0xA490, 0xA4C6}, {0xA960, 0xA97C}, - {0xAC00, 0xD7A3}, {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, - {0xFE30, 0xFE52}, {0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, - {0xFF01, 0xFF60}, {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE4}, - {0x16FF0, 0x16FF1}, {0x17000, 0x187F7}, {0x18800, 0x18CD5}, - {0x18D00, 0x18D08}, {0x1B000, 0x1B11E}, {0x1B150, 0x1B152}, - {0x1B164, 0x1B167}, {0x1B170, 0x1B2FB}, {0x1F004, 0x1F004}, - {0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A}, - {0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, {0x1F240, 0x1F248}, - {0x1F250, 0x1F251}, {0x1F260, 0x1F265}, {0x1F300, 0x1F320}, - {0x1F32D, 0x1F335}, {0x1F337, 0x1F37C}, {0x1F37E, 0x1F393}, - {0x1F3A0, 0x1F3CA}, {0x1F3CF, 0x1F3D3}, {0x1F3E0, 0x1F3F0}, - {0x1F3F4, 0x1F3F4}, {0x1F3F8, 0x1F43E}, {0x1F440, 0x1F440}, - {0x1F442, 0x1F4FC}, {0x1F4FF, 0x1F53D}, {0x1F54B, 0x1F54E}, - {0x1F550, 0x1F567}, {0x1F57A, 0x1F57A}, {0x1F595, 0x1F596}, - {0x1F5A4, 0x1F5A4}, {0x1F5FB, 0x1F64F}, {0x1F680, 0x1F6C5}, - {0x1F6CC, 0x1F6CC}, {0x1F6D0, 0x1F6D2}, {0x1F6D5, 0x1F6D7}, - {0x1F6EB, 0x1F6EC}, {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB}, - {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F978}, - {0x1F97A, 0x1F9CB}, {0x1F9CD, 0x1F9FF}, {0x1FA70, 0x1FA74}, - {0x1FA78, 0x1FA7A}, {0x1FA80, 0x1FA86}, {0x1FA90, 0x1FAA8}, - {0x1FAB0, 0x1FAB6}, {0x1FAC0, 0x1FAC2}, {0x1FAD0, 0x1FAD6}, - {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}, + {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x303E}, + {0x3041, 0x3096}, {0x3099, 0x30FF}, {0x3105, 0x312F}, + {0x3131, 0x318E}, {0x3190, 0x31E3}, {0x31EF, 0x321E}, + {0x3220, 0x3247}, {0x3250, 0x4DBF}, {0x4E00, 0xA48C}, + {0xA490, 0xA4C6}, {0xA960, 0xA97C}, {0xAC00, 0xD7A3}, + {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52}, + {0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, + {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE4}, {0x16FF0, 0x16FF1}, + {0x17000, 0x187F7}, {0x18800, 0x18CD5}, {0x18D00, 0x18D08}, + {0x1AFF0, 0x1AFF3}, {0x1AFF5, 0x1AFFB}, {0x1AFFD, 0x1AFFE}, + {0x1B000, 0x1B122}, {0x1B132, 0x1B132}, {0x1B150, 0x1B152}, + {0x1B155, 0x1B155}, {0x1B164, 0x1B167}, {0x1B170, 0x1B2FB}, + {0x1F004, 0x1F004}, {0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, + {0x1F191, 0x1F19A}, {0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, + {0x1F240, 0x1F248}, {0x1F250, 0x1F251}, {0x1F260, 0x1F265}, + {0x1F300, 0x1F320}, {0x1F32D, 0x1F335}, {0x1F337, 0x1F37C}, + {0x1F37E, 0x1F393}, {0x1F3A0, 0x1F3CA}, {0x1F3CF, 0x1F3D3}, + {0x1F3E0, 0x1F3F0}, {0x1F3F4, 0x1F3F4}, {0x1F3F8, 0x1F43E}, + {0x1F440, 0x1F440}, {0x1F442, 0x1F4FC}, {0x1F4FF, 0x1F53D}, + {0x1F54B, 0x1F54E}, {0x1F550, 0x1F567}, {0x1F57A, 0x1F57A}, + {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A4}, {0x1F5FB, 0x1F64F}, + {0x1F680, 0x1F6C5}, {0x1F6CC, 0x1F6CC}, {0x1F6D0, 0x1F6D2}, + {0x1F6D5, 0x1F6D7}, {0x1F6DC, 0x1F6DF}, {0x1F6EB, 0x1F6EC}, + {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB}, {0x1F7F0, 0x1F7F0}, + {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F9FF}, + {0x1FA70, 0x1FA7C}, {0x1FA80, 0x1FA88}, {0x1FA90, 0x1FABD}, + {0x1FABF, 0x1FAC5}, {0x1FACE, 0x1FADB}, {0x1FAE0, 0x1FAE8}, + {0x1FAF0, 0x1FAF8}, {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}, } var ambiguous = table{ @@ -154,43 +156,43 @@ var neutral = table{ {0x0402, 0x040F}, {0x0450, 0x0450}, {0x0452, 0x052F}, {0x0531, 0x0556}, {0x0559, 0x058A}, {0x058D, 0x058F}, {0x0591, 0x05C7}, {0x05D0, 0x05EA}, {0x05EF, 0x05F4}, - {0x0600, 0x061C}, {0x061E, 0x070D}, {0x070F, 0x074A}, - {0x074D, 0x07B1}, {0x07C0, 0x07FA}, {0x07FD, 0x082D}, - {0x0830, 0x083E}, {0x0840, 0x085B}, {0x085E, 0x085E}, - {0x0860, 0x086A}, {0x08A0, 0x08B4}, {0x08B6, 0x08C7}, - {0x08D3, 0x0983}, {0x0985, 0x098C}, {0x098F, 0x0990}, - {0x0993, 0x09A8}, {0x09AA, 0x09B0}, {0x09B2, 0x09B2}, - {0x09B6, 0x09B9}, {0x09BC, 0x09C4}, {0x09C7, 0x09C8}, - {0x09CB, 0x09CE}, {0x09D7, 0x09D7}, {0x09DC, 0x09DD}, - {0x09DF, 0x09E3}, {0x09E6, 0x09FE}, {0x0A01, 0x0A03}, - {0x0A05, 0x0A0A}, {0x0A0F, 0x0A10}, {0x0A13, 0x0A28}, - {0x0A2A, 0x0A30}, {0x0A32, 0x0A33}, {0x0A35, 0x0A36}, - {0x0A38, 0x0A39}, {0x0A3C, 0x0A3C}, {0x0A3E, 0x0A42}, - {0x0A47, 0x0A48}, {0x0A4B, 0x0A4D}, {0x0A51, 0x0A51}, - {0x0A59, 0x0A5C}, {0x0A5E, 0x0A5E}, {0x0A66, 0x0A76}, - {0x0A81, 0x0A83}, {0x0A85, 0x0A8D}, {0x0A8F, 0x0A91}, - {0x0A93, 0x0AA8}, {0x0AAA, 0x0AB0}, {0x0AB2, 0x0AB3}, - {0x0AB5, 0x0AB9}, {0x0ABC, 0x0AC5}, {0x0AC7, 0x0AC9}, - {0x0ACB, 0x0ACD}, {0x0AD0, 0x0AD0}, {0x0AE0, 0x0AE3}, - {0x0AE6, 0x0AF1}, {0x0AF9, 0x0AFF}, {0x0B01, 0x0B03}, - {0x0B05, 0x0B0C}, {0x0B0F, 0x0B10}, {0x0B13, 0x0B28}, - {0x0B2A, 0x0B30}, {0x0B32, 0x0B33}, {0x0B35, 0x0B39}, - {0x0B3C, 0x0B44}, {0x0B47, 0x0B48}, {0x0B4B, 0x0B4D}, - {0x0B55, 0x0B57}, {0x0B5C, 0x0B5D}, {0x0B5F, 0x0B63}, - {0x0B66, 0x0B77}, {0x0B82, 0x0B83}, {0x0B85, 0x0B8A}, - {0x0B8E, 0x0B90}, {0x0B92, 0x0B95}, {0x0B99, 0x0B9A}, - {0x0B9C, 0x0B9C}, {0x0B9E, 0x0B9F}, {0x0BA3, 0x0BA4}, - {0x0BA8, 0x0BAA}, {0x0BAE, 0x0BB9}, {0x0BBE, 0x0BC2}, - {0x0BC6, 0x0BC8}, {0x0BCA, 0x0BCD}, {0x0BD0, 0x0BD0}, - {0x0BD7, 0x0BD7}, {0x0BE6, 0x0BFA}, {0x0C00, 0x0C0C}, - {0x0C0E, 0x0C10}, {0x0C12, 0x0C28}, {0x0C2A, 0x0C39}, - {0x0C3D, 0x0C44}, {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, - {0x0C55, 0x0C56}, {0x0C58, 0x0C5A}, {0x0C60, 0x0C63}, + {0x0600, 0x070D}, {0x070F, 0x074A}, {0x074D, 0x07B1}, + {0x07C0, 0x07FA}, {0x07FD, 0x082D}, {0x0830, 0x083E}, + {0x0840, 0x085B}, {0x085E, 0x085E}, {0x0860, 0x086A}, + {0x0870, 0x088E}, {0x0890, 0x0891}, {0x0898, 0x0983}, + {0x0985, 0x098C}, {0x098F, 0x0990}, {0x0993, 0x09A8}, + {0x09AA, 0x09B0}, {0x09B2, 0x09B2}, {0x09B6, 0x09B9}, + {0x09BC, 0x09C4}, {0x09C7, 0x09C8}, {0x09CB, 0x09CE}, + {0x09D7, 0x09D7}, {0x09DC, 0x09DD}, {0x09DF, 0x09E3}, + {0x09E6, 0x09FE}, {0x0A01, 0x0A03}, {0x0A05, 0x0A0A}, + {0x0A0F, 0x0A10}, {0x0A13, 0x0A28}, {0x0A2A, 0x0A30}, + {0x0A32, 0x0A33}, {0x0A35, 0x0A36}, {0x0A38, 0x0A39}, + {0x0A3C, 0x0A3C}, {0x0A3E, 0x0A42}, {0x0A47, 0x0A48}, + {0x0A4B, 0x0A4D}, {0x0A51, 0x0A51}, {0x0A59, 0x0A5C}, + {0x0A5E, 0x0A5E}, {0x0A66, 0x0A76}, {0x0A81, 0x0A83}, + {0x0A85, 0x0A8D}, {0x0A8F, 0x0A91}, {0x0A93, 0x0AA8}, + {0x0AAA, 0x0AB0}, {0x0AB2, 0x0AB3}, {0x0AB5, 0x0AB9}, + {0x0ABC, 0x0AC5}, {0x0AC7, 0x0AC9}, {0x0ACB, 0x0ACD}, + {0x0AD0, 0x0AD0}, {0x0AE0, 0x0AE3}, {0x0AE6, 0x0AF1}, + {0x0AF9, 0x0AFF}, {0x0B01, 0x0B03}, {0x0B05, 0x0B0C}, + {0x0B0F, 0x0B10}, {0x0B13, 0x0B28}, {0x0B2A, 0x0B30}, + {0x0B32, 0x0B33}, {0x0B35, 0x0B39}, {0x0B3C, 0x0B44}, + {0x0B47, 0x0B48}, {0x0B4B, 0x0B4D}, {0x0B55, 0x0B57}, + {0x0B5C, 0x0B5D}, {0x0B5F, 0x0B63}, {0x0B66, 0x0B77}, + {0x0B82, 0x0B83}, {0x0B85, 0x0B8A}, {0x0B8E, 0x0B90}, + {0x0B92, 0x0B95}, {0x0B99, 0x0B9A}, {0x0B9C, 0x0B9C}, + {0x0B9E, 0x0B9F}, {0x0BA3, 0x0BA4}, {0x0BA8, 0x0BAA}, + {0x0BAE, 0x0BB9}, {0x0BBE, 0x0BC2}, {0x0BC6, 0x0BC8}, + {0x0BCA, 0x0BCD}, {0x0BD0, 0x0BD0}, {0x0BD7, 0x0BD7}, + {0x0BE6, 0x0BFA}, {0x0C00, 0x0C0C}, {0x0C0E, 0x0C10}, + {0x0C12, 0x0C28}, {0x0C2A, 0x0C39}, {0x0C3C, 0x0C44}, + {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, {0x0C55, 0x0C56}, + {0x0C58, 0x0C5A}, {0x0C5D, 0x0C5D}, {0x0C60, 0x0C63}, {0x0C66, 0x0C6F}, {0x0C77, 0x0C8C}, {0x0C8E, 0x0C90}, {0x0C92, 0x0CA8}, {0x0CAA, 0x0CB3}, {0x0CB5, 0x0CB9}, {0x0CBC, 0x0CC4}, {0x0CC6, 0x0CC8}, {0x0CCA, 0x0CCD}, - {0x0CD5, 0x0CD6}, {0x0CDE, 0x0CDE}, {0x0CE0, 0x0CE3}, - {0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF2}, {0x0D00, 0x0D0C}, + {0x0CD5, 0x0CD6}, {0x0CDD, 0x0CDE}, {0x0CE0, 0x0CE3}, + {0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF3}, {0x0D00, 0x0D0C}, {0x0D0E, 0x0D10}, {0x0D12, 0x0D44}, {0x0D46, 0x0D48}, {0x0D4A, 0x0D4F}, {0x0D54, 0x0D63}, {0x0D66, 0x0D7F}, {0x0D81, 0x0D83}, {0x0D85, 0x0D96}, {0x0D9A, 0x0DB1}, @@ -200,7 +202,7 @@ var neutral = table{ {0x0E01, 0x0E3A}, {0x0E3F, 0x0E5B}, {0x0E81, 0x0E82}, {0x0E84, 0x0E84}, {0x0E86, 0x0E8A}, {0x0E8C, 0x0EA3}, {0x0EA5, 0x0EA5}, {0x0EA7, 0x0EBD}, {0x0EC0, 0x0EC4}, - {0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECD}, {0x0ED0, 0x0ED9}, + {0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECE}, {0x0ED0, 0x0ED9}, {0x0EDC, 0x0EDF}, {0x0F00, 0x0F47}, {0x0F49, 0x0F6C}, {0x0F71, 0x0F97}, {0x0F99, 0x0FBC}, {0x0FBE, 0x0FCC}, {0x0FCE, 0x0FDA}, {0x1000, 0x10C5}, {0x10C7, 0x10C7}, @@ -212,20 +214,19 @@ var neutral = table{ {0x12D8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135A}, {0x135D, 0x137C}, {0x1380, 0x1399}, {0x13A0, 0x13F5}, {0x13F8, 0x13FD}, {0x1400, 0x169C}, {0x16A0, 0x16F8}, - {0x1700, 0x170C}, {0x170E, 0x1714}, {0x1720, 0x1736}, - {0x1740, 0x1753}, {0x1760, 0x176C}, {0x176E, 0x1770}, - {0x1772, 0x1773}, {0x1780, 0x17DD}, {0x17E0, 0x17E9}, - {0x17F0, 0x17F9}, {0x1800, 0x180E}, {0x1810, 0x1819}, - {0x1820, 0x1878}, {0x1880, 0x18AA}, {0x18B0, 0x18F5}, - {0x1900, 0x191E}, {0x1920, 0x192B}, {0x1930, 0x193B}, - {0x1940, 0x1940}, {0x1944, 0x196D}, {0x1970, 0x1974}, - {0x1980, 0x19AB}, {0x19B0, 0x19C9}, {0x19D0, 0x19DA}, - {0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E}, {0x1A60, 0x1A7C}, - {0x1A7F, 0x1A89}, {0x1A90, 0x1A99}, {0x1AA0, 0x1AAD}, - {0x1AB0, 0x1AC0}, {0x1B00, 0x1B4B}, {0x1B50, 0x1B7C}, - {0x1B80, 0x1BF3}, {0x1BFC, 0x1C37}, {0x1C3B, 0x1C49}, - {0x1C4D, 0x1C88}, {0x1C90, 0x1CBA}, {0x1CBD, 0x1CC7}, - {0x1CD0, 0x1CFA}, {0x1D00, 0x1DF9}, {0x1DFB, 0x1F15}, + {0x1700, 0x1715}, {0x171F, 0x1736}, {0x1740, 0x1753}, + {0x1760, 0x176C}, {0x176E, 0x1770}, {0x1772, 0x1773}, + {0x1780, 0x17DD}, {0x17E0, 0x17E9}, {0x17F0, 0x17F9}, + {0x1800, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18AA}, + {0x18B0, 0x18F5}, {0x1900, 0x191E}, {0x1920, 0x192B}, + {0x1930, 0x193B}, {0x1940, 0x1940}, {0x1944, 0x196D}, + {0x1970, 0x1974}, {0x1980, 0x19AB}, {0x19B0, 0x19C9}, + {0x19D0, 0x19DA}, {0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E}, + {0x1A60, 0x1A7C}, {0x1A7F, 0x1A89}, {0x1A90, 0x1A99}, + {0x1AA0, 0x1AAD}, {0x1AB0, 0x1ACE}, {0x1B00, 0x1B4C}, + {0x1B50, 0x1B7E}, {0x1B80, 0x1BF3}, {0x1BFC, 0x1C37}, + {0x1C3B, 0x1C49}, {0x1C4D, 0x1C88}, {0x1C90, 0x1CBA}, + {0x1CBD, 0x1CC7}, {0x1CD0, 0x1CFA}, {0x1D00, 0x1F15}, {0x1F18, 0x1F1D}, {0x1F20, 0x1F45}, {0x1F48, 0x1F4D}, {0x1F50, 0x1F57}, {0x1F59, 0x1F59}, {0x1F5B, 0x1F5B}, {0x1F5D, 0x1F5D}, {0x1F5F, 0x1F7D}, {0x1F80, 0x1FB4}, @@ -237,7 +238,7 @@ var neutral = table{ {0x2036, 0x203A}, {0x203C, 0x203D}, {0x203F, 0x2064}, {0x2066, 0x2071}, {0x2075, 0x207E}, {0x2080, 0x2080}, {0x2085, 0x208E}, {0x2090, 0x209C}, {0x20A0, 0x20A8}, - {0x20AA, 0x20AB}, {0x20AD, 0x20BF}, {0x20D0, 0x20F0}, + {0x20AA, 0x20AB}, {0x20AD, 0x20C0}, {0x20D0, 0x20F0}, {0x2100, 0x2102}, {0x2104, 0x2104}, {0x2106, 0x2108}, {0x210A, 0x2112}, {0x2114, 0x2115}, {0x2117, 0x2120}, {0x2123, 0x2125}, {0x2127, 0x212A}, {0x212C, 0x2152}, @@ -275,15 +276,15 @@ var neutral = table{ {0x2780, 0x2794}, {0x2798, 0x27AF}, {0x27B1, 0x27BE}, {0x27C0, 0x27E5}, {0x27EE, 0x2984}, {0x2987, 0x2B1A}, {0x2B1D, 0x2B4F}, {0x2B51, 0x2B54}, {0x2B5A, 0x2B73}, - {0x2B76, 0x2B95}, {0x2B97, 0x2C2E}, {0x2C30, 0x2C5E}, - {0x2C60, 0x2CF3}, {0x2CF9, 0x2D25}, {0x2D27, 0x2D27}, - {0x2D2D, 0x2D2D}, {0x2D30, 0x2D67}, {0x2D6F, 0x2D70}, - {0x2D7F, 0x2D96}, {0x2DA0, 0x2DA6}, {0x2DA8, 0x2DAE}, - {0x2DB0, 0x2DB6}, {0x2DB8, 0x2DBE}, {0x2DC0, 0x2DC6}, - {0x2DC8, 0x2DCE}, {0x2DD0, 0x2DD6}, {0x2DD8, 0x2DDE}, - {0x2DE0, 0x2E52}, {0x303F, 0x303F}, {0x4DC0, 0x4DFF}, - {0xA4D0, 0xA62B}, {0xA640, 0xA6F7}, {0xA700, 0xA7BF}, - {0xA7C2, 0xA7CA}, {0xA7F5, 0xA82C}, {0xA830, 0xA839}, + {0x2B76, 0x2B95}, {0x2B97, 0x2CF3}, {0x2CF9, 0x2D25}, + {0x2D27, 0x2D27}, {0x2D2D, 0x2D2D}, {0x2D30, 0x2D67}, + {0x2D6F, 0x2D70}, {0x2D7F, 0x2D96}, {0x2DA0, 0x2DA6}, + {0x2DA8, 0x2DAE}, {0x2DB0, 0x2DB6}, {0x2DB8, 0x2DBE}, + {0x2DC0, 0x2DC6}, {0x2DC8, 0x2DCE}, {0x2DD0, 0x2DD6}, + {0x2DD8, 0x2DDE}, {0x2DE0, 0x2E5D}, {0x303F, 0x303F}, + {0x4DC0, 0x4DFF}, {0xA4D0, 0xA62B}, {0xA640, 0xA6F7}, + {0xA700, 0xA7CA}, {0xA7D0, 0xA7D1}, {0xA7D3, 0xA7D3}, + {0xA7D5, 0xA7D9}, {0xA7F2, 0xA82C}, {0xA830, 0xA839}, {0xA840, 0xA877}, {0xA880, 0xA8C5}, {0xA8CE, 0xA8D9}, {0xA8E0, 0xA953}, {0xA95F, 0xA95F}, {0xA980, 0xA9CD}, {0xA9CF, 0xA9D9}, {0xA9DE, 0xA9FE}, {0xAA00, 0xAA36}, @@ -294,8 +295,8 @@ var neutral = table{ {0xD7B0, 0xD7C6}, {0xD7CB, 0xD7FB}, {0xD800, 0xDFFF}, {0xFB00, 0xFB06}, {0xFB13, 0xFB17}, {0xFB1D, 0xFB36}, {0xFB38, 0xFB3C}, {0xFB3E, 0xFB3E}, {0xFB40, 0xFB41}, - {0xFB43, 0xFB44}, {0xFB46, 0xFBC1}, {0xFBD3, 0xFD3F}, - {0xFD50, 0xFD8F}, {0xFD92, 0xFDC7}, {0xFDF0, 0xFDFD}, + {0xFB43, 0xFB44}, {0xFB46, 0xFBC2}, {0xFBD3, 0xFD8F}, + {0xFD92, 0xFDC7}, {0xFDCF, 0xFDCF}, {0xFDF0, 0xFDFF}, {0xFE20, 0xFE2F}, {0xFE70, 0xFE74}, {0xFE76, 0xFEFC}, {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFC}, {0x10000, 0x1000B}, {0x1000D, 0x10026}, {0x10028, 0x1003A}, {0x1003C, 0x1003D}, @@ -307,44 +308,48 @@ var neutral = table{ {0x10380, 0x1039D}, {0x1039F, 0x103C3}, {0x103C8, 0x103D5}, {0x10400, 0x1049D}, {0x104A0, 0x104A9}, {0x104B0, 0x104D3}, {0x104D8, 0x104FB}, {0x10500, 0x10527}, {0x10530, 0x10563}, - {0x1056F, 0x1056F}, {0x10600, 0x10736}, {0x10740, 0x10755}, - {0x10760, 0x10767}, {0x10800, 0x10805}, {0x10808, 0x10808}, - {0x1080A, 0x10835}, {0x10837, 0x10838}, {0x1083C, 0x1083C}, - {0x1083F, 0x10855}, {0x10857, 0x1089E}, {0x108A7, 0x108AF}, - {0x108E0, 0x108F2}, {0x108F4, 0x108F5}, {0x108FB, 0x1091B}, - {0x1091F, 0x10939}, {0x1093F, 0x1093F}, {0x10980, 0x109B7}, - {0x109BC, 0x109CF}, {0x109D2, 0x10A03}, {0x10A05, 0x10A06}, - {0x10A0C, 0x10A13}, {0x10A15, 0x10A17}, {0x10A19, 0x10A35}, - {0x10A38, 0x10A3A}, {0x10A3F, 0x10A48}, {0x10A50, 0x10A58}, - {0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6}, {0x10AEB, 0x10AF6}, - {0x10B00, 0x10B35}, {0x10B39, 0x10B55}, {0x10B58, 0x10B72}, - {0x10B78, 0x10B91}, {0x10B99, 0x10B9C}, {0x10BA9, 0x10BAF}, - {0x10C00, 0x10C48}, {0x10C80, 0x10CB2}, {0x10CC0, 0x10CF2}, - {0x10CFA, 0x10D27}, {0x10D30, 0x10D39}, {0x10E60, 0x10E7E}, - {0x10E80, 0x10EA9}, {0x10EAB, 0x10EAD}, {0x10EB0, 0x10EB1}, - {0x10F00, 0x10F27}, {0x10F30, 0x10F59}, {0x10FB0, 0x10FCB}, - {0x10FE0, 0x10FF6}, {0x11000, 0x1104D}, {0x11052, 0x1106F}, - {0x1107F, 0x110C1}, {0x110CD, 0x110CD}, {0x110D0, 0x110E8}, - {0x110F0, 0x110F9}, {0x11100, 0x11134}, {0x11136, 0x11147}, - {0x11150, 0x11176}, {0x11180, 0x111DF}, {0x111E1, 0x111F4}, - {0x11200, 0x11211}, {0x11213, 0x1123E}, {0x11280, 0x11286}, - {0x11288, 0x11288}, {0x1128A, 0x1128D}, {0x1128F, 0x1129D}, - {0x1129F, 0x112A9}, {0x112B0, 0x112EA}, {0x112F0, 0x112F9}, - {0x11300, 0x11303}, {0x11305, 0x1130C}, {0x1130F, 0x11310}, - {0x11313, 0x11328}, {0x1132A, 0x11330}, {0x11332, 0x11333}, - {0x11335, 0x11339}, {0x1133B, 0x11344}, {0x11347, 0x11348}, - {0x1134B, 0x1134D}, {0x11350, 0x11350}, {0x11357, 0x11357}, - {0x1135D, 0x11363}, {0x11366, 0x1136C}, {0x11370, 0x11374}, - {0x11400, 0x1145B}, {0x1145D, 0x11461}, {0x11480, 0x114C7}, - {0x114D0, 0x114D9}, {0x11580, 0x115B5}, {0x115B8, 0x115DD}, - {0x11600, 0x11644}, {0x11650, 0x11659}, {0x11660, 0x1166C}, - {0x11680, 0x116B8}, {0x116C0, 0x116C9}, {0x11700, 0x1171A}, - {0x1171D, 0x1172B}, {0x11730, 0x1173F}, {0x11800, 0x1183B}, - {0x118A0, 0x118F2}, {0x118FF, 0x11906}, {0x11909, 0x11909}, - {0x1190C, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x11935}, - {0x11937, 0x11938}, {0x1193B, 0x11946}, {0x11950, 0x11959}, - {0x119A0, 0x119A7}, {0x119AA, 0x119D7}, {0x119DA, 0x119E4}, - {0x11A00, 0x11A47}, {0x11A50, 0x11AA2}, {0x11AC0, 0x11AF8}, + {0x1056F, 0x1057A}, {0x1057C, 0x1058A}, {0x1058C, 0x10592}, + {0x10594, 0x10595}, {0x10597, 0x105A1}, {0x105A3, 0x105B1}, + {0x105B3, 0x105B9}, {0x105BB, 0x105BC}, {0x10600, 0x10736}, + {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, + {0x10787, 0x107B0}, {0x107B2, 0x107BA}, {0x10800, 0x10805}, + {0x10808, 0x10808}, {0x1080A, 0x10835}, {0x10837, 0x10838}, + {0x1083C, 0x1083C}, {0x1083F, 0x10855}, {0x10857, 0x1089E}, + {0x108A7, 0x108AF}, {0x108E0, 0x108F2}, {0x108F4, 0x108F5}, + {0x108FB, 0x1091B}, {0x1091F, 0x10939}, {0x1093F, 0x1093F}, + {0x10980, 0x109B7}, {0x109BC, 0x109CF}, {0x109D2, 0x10A03}, + {0x10A05, 0x10A06}, {0x10A0C, 0x10A13}, {0x10A15, 0x10A17}, + {0x10A19, 0x10A35}, {0x10A38, 0x10A3A}, {0x10A3F, 0x10A48}, + {0x10A50, 0x10A58}, {0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6}, + {0x10AEB, 0x10AF6}, {0x10B00, 0x10B35}, {0x10B39, 0x10B55}, + {0x10B58, 0x10B72}, {0x10B78, 0x10B91}, {0x10B99, 0x10B9C}, + {0x10BA9, 0x10BAF}, {0x10C00, 0x10C48}, {0x10C80, 0x10CB2}, + {0x10CC0, 0x10CF2}, {0x10CFA, 0x10D27}, {0x10D30, 0x10D39}, + {0x10E60, 0x10E7E}, {0x10E80, 0x10EA9}, {0x10EAB, 0x10EAD}, + {0x10EB0, 0x10EB1}, {0x10EFD, 0x10F27}, {0x10F30, 0x10F59}, + {0x10F70, 0x10F89}, {0x10FB0, 0x10FCB}, {0x10FE0, 0x10FF6}, + {0x11000, 0x1104D}, {0x11052, 0x11075}, {0x1107F, 0x110C2}, + {0x110CD, 0x110CD}, {0x110D0, 0x110E8}, {0x110F0, 0x110F9}, + {0x11100, 0x11134}, {0x11136, 0x11147}, {0x11150, 0x11176}, + {0x11180, 0x111DF}, {0x111E1, 0x111F4}, {0x11200, 0x11211}, + {0x11213, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288}, + {0x1128A, 0x1128D}, {0x1128F, 0x1129D}, {0x1129F, 0x112A9}, + {0x112B0, 0x112EA}, {0x112F0, 0x112F9}, {0x11300, 0x11303}, + {0x11305, 0x1130C}, {0x1130F, 0x11310}, {0x11313, 0x11328}, + {0x1132A, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, + {0x1133B, 0x11344}, {0x11347, 0x11348}, {0x1134B, 0x1134D}, + {0x11350, 0x11350}, {0x11357, 0x11357}, {0x1135D, 0x11363}, + {0x11366, 0x1136C}, {0x11370, 0x11374}, {0x11400, 0x1145B}, + {0x1145D, 0x11461}, {0x11480, 0x114C7}, {0x114D0, 0x114D9}, + {0x11580, 0x115B5}, {0x115B8, 0x115DD}, {0x11600, 0x11644}, + {0x11650, 0x11659}, {0x11660, 0x1166C}, {0x11680, 0x116B9}, + {0x116C0, 0x116C9}, {0x11700, 0x1171A}, {0x1171D, 0x1172B}, + {0x11730, 0x11746}, {0x11800, 0x1183B}, {0x118A0, 0x118F2}, + {0x118FF, 0x11906}, {0x11909, 0x11909}, {0x1190C, 0x11913}, + {0x11915, 0x11916}, {0x11918, 0x11935}, {0x11937, 0x11938}, + {0x1193B, 0x11946}, {0x11950, 0x11959}, {0x119A0, 0x119A7}, + {0x119AA, 0x119D7}, {0x119DA, 0x119E4}, {0x11A00, 0x11A47}, + {0x11A50, 0x11AA2}, {0x11AB0, 0x11AF8}, {0x11B00, 0x11B09}, {0x11C00, 0x11C08}, {0x11C0A, 0x11C36}, {0x11C38, 0x11C45}, {0x11C50, 0x11C6C}, {0x11C70, 0x11C8F}, {0x11C92, 0x11CA7}, {0x11CA9, 0x11CB6}, {0x11D00, 0x11D06}, {0x11D08, 0x11D09}, @@ -352,30 +357,36 @@ var neutral = table{ {0x11D3F, 0x11D47}, {0x11D50, 0x11D59}, {0x11D60, 0x11D65}, {0x11D67, 0x11D68}, {0x11D6A, 0x11D8E}, {0x11D90, 0x11D91}, {0x11D93, 0x11D98}, {0x11DA0, 0x11DA9}, {0x11EE0, 0x11EF8}, + {0x11F00, 0x11F10}, {0x11F12, 0x11F3A}, {0x11F3E, 0x11F59}, {0x11FB0, 0x11FB0}, {0x11FC0, 0x11FF1}, {0x11FFF, 0x12399}, {0x12400, 0x1246E}, {0x12470, 0x12474}, {0x12480, 0x12543}, - {0x13000, 0x1342E}, {0x13430, 0x13438}, {0x14400, 0x14646}, + {0x12F90, 0x12FF2}, {0x13000, 0x13455}, {0x14400, 0x14646}, {0x16800, 0x16A38}, {0x16A40, 0x16A5E}, {0x16A60, 0x16A69}, - {0x16A6E, 0x16A6F}, {0x16AD0, 0x16AED}, {0x16AF0, 0x16AF5}, - {0x16B00, 0x16B45}, {0x16B50, 0x16B59}, {0x16B5B, 0x16B61}, - {0x16B63, 0x16B77}, {0x16B7D, 0x16B8F}, {0x16E40, 0x16E9A}, - {0x16F00, 0x16F4A}, {0x16F4F, 0x16F87}, {0x16F8F, 0x16F9F}, - {0x1BC00, 0x1BC6A}, {0x1BC70, 0x1BC7C}, {0x1BC80, 0x1BC88}, - {0x1BC90, 0x1BC99}, {0x1BC9C, 0x1BCA3}, {0x1D000, 0x1D0F5}, - {0x1D100, 0x1D126}, {0x1D129, 0x1D1E8}, {0x1D200, 0x1D245}, - {0x1D2E0, 0x1D2F3}, {0x1D300, 0x1D356}, {0x1D360, 0x1D378}, - {0x1D400, 0x1D454}, {0x1D456, 0x1D49C}, {0x1D49E, 0x1D49F}, - {0x1D4A2, 0x1D4A2}, {0x1D4A5, 0x1D4A6}, {0x1D4A9, 0x1D4AC}, - {0x1D4AE, 0x1D4B9}, {0x1D4BB, 0x1D4BB}, {0x1D4BD, 0x1D4C3}, - {0x1D4C5, 0x1D505}, {0x1D507, 0x1D50A}, {0x1D50D, 0x1D514}, - {0x1D516, 0x1D51C}, {0x1D51E, 0x1D539}, {0x1D53B, 0x1D53E}, - {0x1D540, 0x1D544}, {0x1D546, 0x1D546}, {0x1D54A, 0x1D550}, - {0x1D552, 0x1D6A5}, {0x1D6A8, 0x1D7CB}, {0x1D7CE, 0x1DA8B}, - {0x1DA9B, 0x1DA9F}, {0x1DAA1, 0x1DAAF}, {0x1E000, 0x1E006}, - {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, - {0x1E026, 0x1E02A}, {0x1E100, 0x1E12C}, {0x1E130, 0x1E13D}, - {0x1E140, 0x1E149}, {0x1E14E, 0x1E14F}, {0x1E2C0, 0x1E2F9}, - {0x1E2FF, 0x1E2FF}, {0x1E800, 0x1E8C4}, {0x1E8C7, 0x1E8D6}, + {0x16A6E, 0x16ABE}, {0x16AC0, 0x16AC9}, {0x16AD0, 0x16AED}, + {0x16AF0, 0x16AF5}, {0x16B00, 0x16B45}, {0x16B50, 0x16B59}, + {0x16B5B, 0x16B61}, {0x16B63, 0x16B77}, {0x16B7D, 0x16B8F}, + {0x16E40, 0x16E9A}, {0x16F00, 0x16F4A}, {0x16F4F, 0x16F87}, + {0x16F8F, 0x16F9F}, {0x1BC00, 0x1BC6A}, {0x1BC70, 0x1BC7C}, + {0x1BC80, 0x1BC88}, {0x1BC90, 0x1BC99}, {0x1BC9C, 0x1BCA3}, + {0x1CF00, 0x1CF2D}, {0x1CF30, 0x1CF46}, {0x1CF50, 0x1CFC3}, + {0x1D000, 0x1D0F5}, {0x1D100, 0x1D126}, {0x1D129, 0x1D1EA}, + {0x1D200, 0x1D245}, {0x1D2C0, 0x1D2D3}, {0x1D2E0, 0x1D2F3}, + {0x1D300, 0x1D356}, {0x1D360, 0x1D378}, {0x1D400, 0x1D454}, + {0x1D456, 0x1D49C}, {0x1D49E, 0x1D49F}, {0x1D4A2, 0x1D4A2}, + {0x1D4A5, 0x1D4A6}, {0x1D4A9, 0x1D4AC}, {0x1D4AE, 0x1D4B9}, + {0x1D4BB, 0x1D4BB}, {0x1D4BD, 0x1D4C3}, {0x1D4C5, 0x1D505}, + {0x1D507, 0x1D50A}, {0x1D50D, 0x1D514}, {0x1D516, 0x1D51C}, + {0x1D51E, 0x1D539}, {0x1D53B, 0x1D53E}, {0x1D540, 0x1D544}, + {0x1D546, 0x1D546}, {0x1D54A, 0x1D550}, {0x1D552, 0x1D6A5}, + {0x1D6A8, 0x1D7CB}, {0x1D7CE, 0x1DA8B}, {0x1DA9B, 0x1DA9F}, + {0x1DAA1, 0x1DAAF}, {0x1DF00, 0x1DF1E}, {0x1DF25, 0x1DF2A}, + {0x1E000, 0x1E006}, {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, + {0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, {0x1E030, 0x1E06D}, + {0x1E08F, 0x1E08F}, {0x1E100, 0x1E12C}, {0x1E130, 0x1E13D}, + {0x1E140, 0x1E149}, {0x1E14E, 0x1E14F}, {0x1E290, 0x1E2AE}, + {0x1E2C0, 0x1E2F9}, {0x1E2FF, 0x1E2FF}, {0x1E4D0, 0x1E4F9}, + {0x1E7E0, 0x1E7E6}, {0x1E7E8, 0x1E7EB}, {0x1E7ED, 0x1E7EE}, + {0x1E7F0, 0x1E7FE}, {0x1E800, 0x1E8C4}, {0x1E8C7, 0x1E8D6}, {0x1E900, 0x1E94B}, {0x1E950, 0x1E959}, {0x1E95E, 0x1E95F}, {0x1EC71, 0x1ECB4}, {0x1ED01, 0x1ED3D}, {0x1EE00, 0x1EE03}, {0x1EE05, 0x1EE1F}, {0x1EE21, 0x1EE22}, {0x1EE24, 0x1EE24}, @@ -400,8 +411,8 @@ var neutral = table{ {0x1F54F, 0x1F54F}, {0x1F568, 0x1F579}, {0x1F57B, 0x1F594}, {0x1F597, 0x1F5A3}, {0x1F5A5, 0x1F5FA}, {0x1F650, 0x1F67F}, {0x1F6C6, 0x1F6CB}, {0x1F6CD, 0x1F6CF}, {0x1F6D3, 0x1F6D4}, - {0x1F6E0, 0x1F6EA}, {0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F773}, - {0x1F780, 0x1F7D8}, {0x1F800, 0x1F80B}, {0x1F810, 0x1F847}, + {0x1F6E0, 0x1F6EA}, {0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F776}, + {0x1F77B, 0x1F7D9}, {0x1F800, 0x1F80B}, {0x1F810, 0x1F847}, {0x1F850, 0x1F859}, {0x1F860, 0x1F887}, {0x1F890, 0x1F8AD}, {0x1F8B0, 0x1F8B1}, {0x1F900, 0x1F90B}, {0x1F93B, 0x1F93B}, {0x1F946, 0x1F946}, {0x1FA00, 0x1FA53}, {0x1FA60, 0x1FA6D}, diff --git a/vendor/modules.txt b/vendor/modules.txt index 7a98aef..e5e73de 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -4,17 +4,17 @@ github.com/atotto/clipboard # github.com/charmbracelet/bubbletea v0.26.6 ## explicit; go 1.18 github.com/charmbracelet/bubbletea -# github.com/charmbracelet/x/ansi v0.1.2 +# github.com/charmbracelet/x/ansi v0.1.4 ## explicit; go 1.18 github.com/charmbracelet/x/ansi github.com/charmbracelet/x/ansi/parser -# github.com/charmbracelet/x/input v0.1.0 +# github.com/charmbracelet/x/input v0.1.3 ## explicit; go 1.18 github.com/charmbracelet/x/input # github.com/charmbracelet/x/term v0.1.1 ## explicit; go 1.18 github.com/charmbracelet/x/term -# github.com/charmbracelet/x/windows v0.1.0 +# github.com/charmbracelet/x/windows v0.1.2 ## explicit; go 1.18 github.com/charmbracelet/x/windows # github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f @@ -26,7 +26,7 @@ github.com/inconshreveable/mousetrap # github.com/mattn/go-localereader v0.0.1 ## explicit github.com/mattn/go-localereader -# github.com/mattn/go-runewidth v0.0.15 +# github.com/mattn/go-runewidth v0.0.16 ## explicit; go 1.9 github.com/mattn/go-runewidth # github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6