Ayman Bagabas
9563bafdf5
feat: support windows console input buffer
...
This adds support to the Windows Console Input Buffer API which access
the console API directly without the need for virtual terminal input
(i.e. the current mode that emulates unix inputs).
Since this uses the console input api, we can finally read window size
events.
This is mearly based on the awesome work of @erikgeiser in #140 .
Fixes: https://github.com/charmbracelet/bubbletea/issues/538
Fixes: https://github.com/charmbracelet/bubbletea/issues/121
2023-12-15 14:25:03 -05:00
Ayman Bagabas
a154847611
feat: extended Coordinates mouse reporting & additional buttons support ( #594 )
...
* feat(mouse): add extended mouse & shift key support
Support SGR(1006) mouse mode
Support parsing shift key press
Support additional mouse buttons
Report which button was released
Report button motion
* fix: key.go sgr len missing calculation (#841 )
* chore(test): add sgr mouse msg detect test
---------
Co-authored-by: robinsamuel <96998379+robin-samuel@users.noreply.github.com>
2023-12-04 11:50:59 -05:00
Raphael 'kena' Poss
5536bca34e
fix(key): support very long buffered input ( #570 )
2023-10-18 12:59:26 +02:00
Christian Rocha
c284acad9f
chore(lint): extract a magic number when parsing X10 mouse events
2023-07-10 09:04:25 -04:00
Christian Rocha
522659d798
chore(lint): wrap various errors
2023-07-10 09:04:25 -04:00
Raphael 'kena' Poss
b1e7f42ab0
fix(key): invert the control loop
...
Instead of reading messages in an array and then sending them into a
channel, this version of key.go writes to the channel directly.
2023-06-20 12:48:13 +02:00
Raphael 'kena' Poss
d9c675138c
fix(key),test: simplify the input analysis code
2023-06-15 14:51:02 +02:00
Christian Muehlhaeuser
b8ef6f85ea
feat: support ctrl+page up/down keys
...
Adds support for ctrl+(alt)+page up/down key events.
Tested in konsole, alacritty, foot, urxvt, and a few other
terminals.
Fixes #369 .
2022-10-12 07:11:20 +02:00
Raphael 'kena' Poss
0e76ba142a
fix(key): recover the insert key
...
We started supporting insert in #418 , but then accidentally
removed it during a rebase in #396 . Oops.
2022-10-07 14:54:27 +02:00
Raphael 'kena' Poss
7e7a729b31
fix: remove the now-unused hexes key mapping
...
This became unnecessary when we fixed the support for the Alt modifier
on control characters.
2022-10-03 22:43:17 +02:00
Raphael 'kena' Poss
b074f6f5a4
fix: properly skip over unrecognized CSI sequences.
2022-10-03 22:43:17 +02:00
Raphael 'kena' Poss
08518987f5
Reorder the function keys in key.go for better troubleshootability
...
Here the list of keys did not change, I simply re-ordered the lines
in the file.
2022-10-03 19:56:10 +02:00
Raphael 'kena' Poss
ce923aabbf
Add missing alt+ variant for F13-F16
2022-10-03 19:56:10 +02:00
Raphael 'kena' Poss
290ef8dce5
Add missing alt+ variant for F5-F12 on urxvt
2022-10-03 19:56:10 +02:00
Raphael 'kena' Poss
d9b2889cf4
Add support for ctrl+, ctrl+shift+ for home/end keys
2022-10-03 19:56:10 +02:00
Raphael 'kena' Poss
5f76c2036d
Reorganize key.go for clarity
2022-10-03 19:56:10 +02:00
Raphael 'kena' Poss
2fe4aad5e6
Fix home/end on vt100
2022-10-03 19:56:10 +02:00
Raphael 'kena' Poss
2fe97e07d0
Support the insert key
...
This can be used in e.g. textarea / textinput to enable "overwrite
mode".
2022-09-27 04:01:39 +02:00
Raphael 'kena' Poss
624343388b
Support linux console F1-F5
2022-09-04 17:52:17 +02:00
Raphael 'kena' Poss
134a930f2d
keys: properly support the alt modifier
2022-08-30 11:17:11 +02:00
mattn
6b685056fc
fix: support multi-byte strings on Windows ( #343 )
...
* convert locale string to utf-8 on Windows
* update go.mod
* revert go fmt ./...
* fix(lint): use tabs in GoDoc example code
Co-authored-by: Christian Rocha <christian@rocha.is>
2022-08-19 09:25:22 -07:00
Christian Muehlhaeuser
1e1b5f716d
chore: gofmt sources
2022-08-15 12:25:55 +02:00
Christian Muehlhaeuser
e6dabb3c36
fix: handle batched key msgs
2022-06-08 14:03:28 +02:00
Christian Rocha
d301ee0405
change(keys): spacebar sends a `KeySpace` ( #315 )
...
* Revert "fix: update tests for space input"
This reverts commit bfb166822e
.
* Revert "feat: obliterate type KeySpace"
This reverts commit d3fb1b707a
.
2022-05-13 13:24:16 -04:00
Christian Rocha
d3fb1b707a
feat: obliterate type KeySpace
...
Treating a space differently from other runes was proving to cause more
confusion that clarity.
2022-05-10 16:56:37 -04:00
Christian Rocha
48cdc1e6c3
feat(keys): add support for shift/ctrl + arrow keys ( #292 )
...
* feat(keys): add support for shift/ctrl+arrow keys
* chore(keys): use sequences for shift/ctrl arrow keys
* feat(keys): support ctrl+shift+arrow keys
* chore(keys): use sequences for alt+arrows
* feat(keys): add support for arrow key combinations with alt modifiers
* fix(keys): remove an extreaneous check
* feat(keys): add support for urxvt arrow keys with modfiers
* feat(keys): add support for arrow keys in DECCKM mode
* docs(keys): expand on comment about ctrl+backtick
* chore(keys): migrate various bindings to sequences
* Minor comment improvements to the input parser
Co-authored-by: Bwahharharrr <yitang@tutanota.com>
2022-05-10 16:16:33 -04:00
bashbunni
14e58aa1f9
fix(keys): spacebar now sends a `KeySpace` ( #289 )
...
* fix: replace keySP with working KeySpace
* test: update test to meet new reqs
* fix: fix test looking for 'space'
* fix(keys): set type to KeySpace when sending a space
* docs(keys): comments
Co-authored-by: Christian Rocha <christian@rocha.is>
2022-04-12 11:14:35 -04:00
Christian Rocha
5c76027b36
feat: add support for function keys
2022-03-21 09:48:05 -04:00
Christian Muehlhaeuser
6301f93cb2
Support receiving batched mouse events
...
Mouse events may trigger more than a single events simultaneously.
Fixes #212 .
2022-02-13 08:40:04 +01:00
Christian Rocha
c5ed2b4a01
Add missing GoDocs
2021-09-07 15:37:14 -04:00
Christian Muehlhaeuser
b664dee939
Fix typo
2021-03-12 01:24:38 +01:00
Christian Rocha
65e8067a82
Implement String() on type Key and make key constants type KeyType
2021-03-08 19:11:02 -05:00
Christian Rocha
116a0cfb8f
Process alt-modfied keystrokes before normal character input
2020-11-01 08:57:43 -05:00
Christian Rocha
1b5f599f2d
Update key usage examples
2020-11-01 08:57:43 -05:00
Christian Rocha
4f2d85494d
Remove the excessive Key.IsRune() method
2020-11-01 08:57:43 -05:00
Christian Rocha
fc37167e16
Support multi-character input (i.e. Chinese and Japanese IME)
2020-11-01 08:57:43 -05:00
Christian Rocha
a1d92e77c5
Correct backspace and delete key mappings
2020-10-22 15:22:07 -04:00
Christian Rocha
a85d22cf54
Handle arrows on Powershell on Unix-like systems
2020-10-13 14:42:29 -04:00
Christian Rocha
223519f81f
Add periods after comments to make the godoc linter happy.
2020-08-24 15:22:04 -04:00
Christian Muehlhaeuser
d26cfb6b38
Make golint happy
2020-08-22 12:34:03 +02:00
Christian Rocha
6fcdf9908f
Improve examples in docs
2020-07-30 11:30:33 -04:00
Christian Rocha
a5e38222c5
Don't expose ReadInput
2020-07-29 20:51:55 -04:00
Christian Rocha
c0f67a2927
Improve GoDocs
2020-07-29 20:50:00 -04:00
Christian Rocha
eecd6b0612
Fix ctrl+v key mapping
2020-07-21 15:50:07 -04:00
Christian Rocha
2ee871862a
Fix bug where certain keys (pgup/pgdown/home/end/etc) weren't being sent
2020-07-20 11:50:27 -04:00
Christian Rocha
d86cb562f0
Add basic mouse support
2020-06-22 20:41:26 -04:00
Christian Rocha
3b8b011b5a
Rename to Bubble Tea (with the import name tea)
2020-05-25 19:48:36 -04:00
Christian Muehlhaeuser
e8b7e510bb
Simplify key/sequence map
2020-05-25 14:03:59 +02:00
Christian Muehlhaeuser
0957c58e05
Make type documentation godoc-compliant
2020-05-25 14:02:46 +02:00
Christian Rocha
ee5f82579f
Don't treat the space character as a control character
...
There are drawbacks to both sides of this, but in the end, it seems to make
more sense to treat spaces as regular runes.
2020-05-19 14:41:55 -04:00