summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/input/mod.go
diff options
context:
space:
mode:
authoradamdotdevin <[email protected]>2025-07-10 15:49:49 -0500
committeradamdotdevin <[email protected]>2025-07-10 15:49:58 -0500
commit294d0e7ee3476f4425c3d21fbaf82dfce3aba017 (patch)
tree3c24c5caf7075612dc58ff4cdb1b1f87eedc2d9b /packages/tui/input/mod.go
parent8be1ca836c806c5a3ea3f2f5b49a696063dd3a91 (diff)
downloadopencode-294d0e7ee3476f4425c3d21fbaf82dfce3aba017.tar.gz
opencode-294d0e7ee3476f4425c3d21fbaf82dfce3aba017.zip
fix(tui): mouse wheel ansi codes leaking into editor
Diffstat (limited to 'packages/tui/input/mod.go')
-rw-r--r--packages/tui/input/mod.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/tui/input/mod.go b/packages/tui/input/mod.go
new file mode 100644
index 000000000..c00762769
--- /dev/null
+++ b/packages/tui/input/mod.go
@@ -0,0 +1,37 @@
+package input
+
+// KeyMod represents modifier keys.
+type KeyMod int
+
+// Modifier keys.
+const (
+ 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.
+
+ ModHyper
+ ModSuper // Windows/Command keys
+
+ // These are key lock states.
+
+ ModCapsLock
+ ModNumLock
+ ModScrollLock // Defined in Windows API only
+)
+
+// Contains reports whether m contains the given modifiers.
+//
+// Example:
+//
+// m := ModAlt | ModCtrl
+// m.Contains(ModCtrl) // true
+// m.Contains(ModAlt | ModCtrl) // true
+// m.Contains(ModAlt | ModCtrl | ModShift) // false
+func (m KeyMod) Contains(mods KeyMod) bool {
+ return m&mods == mods
+}