Originally based on TooTallNate's gist, rewritten to use all the mouse reporting modes.
var mouse = require('term-mouse')();
mouse
.start()
.on('click', function(e) {
console.log('you clicked %d,%d with the %s mouse button', e.x, e.y, e.button /* 'left', 'middle' or 'right' */);
})
.on('scroll', function(e) {
console.log('you scrolled %s', e.button /* 'up' or 'down' */);
});
var mouse = require('term-mouse')(options);
Options:
input
- the stream to read events from, defaults toprocess.stdin
output
- the stream to write control codes to, defaults toprocess.stdout
utf8
- whether to use UTF-8 (1005) reporting mode, this could break things if your terminal only supports the standard reporting mode or if you're using a non-UTF-8 locale
Events:
event
-move
,buttons
andscroll
move
buttons
- when a button is pressed or releasedscroll
up
- when a button is presseddown
- when a button is releasedclick
-up
afterdown
, here there are two event objects passed: the first is from when the button was pressed, the second is from the button being released
All of these include an event object:
shift
- whether the shift key is downmeta
- whether the meta (alt) key is downctrl
- whether the control key is downname
-'scroll'
,'move'
or'buttons'
button
-'left'
,'middle'
,'right'
or'none'
if the button is releasedbtnNum
- the button that was pressed / released, if it's not using xterm's ASCII reporting mode then it'll benull
when the button is releaseddown
- if the button is downx
- the x coordinate of the cursory
- the y coordinate of the cursorsequence
- the string that caused this event (if it's using the standard reporting mode, this could be incorrect because the real sequence is invalid UTF-8)buf
- the sequence that caused this event as a buffer
I looked at http://invisible-island.net/xterm/ctlseqs/ctlseqs.html and https://www.systutorials.com/docs/linux/man/7-urxvt/ while making this.