提交 852784b1 编写于 作者: T taylorchu

rename to MouseMid; add more desync checks for windows

上级 08b36c89
......@@ -604,8 +604,8 @@ func pretty_print_mouse(ev *termbox.Event) {
switch ev.Key {
case termbox.MouseLeft:
button = "MouseLeft"
case termbox.MouseMid:
button = "MouseMid"
case termbox.MouseMiddle:
button = "MouseMiddle"
case termbox.MouseRight:
button = "MouseRight"
}
......
......@@ -61,7 +61,7 @@ const (
KeyArrowRight
key_min // see terminfo
MouseLeft
MouseMid
MouseMiddle
MouseRight
)
......
......@@ -217,30 +217,25 @@ func parse_escape_sequence(event *Event, buf []byte) (int, bool) {
bufstr := string(buf)
// mouse
if len(bufstr) >= 6 && strings.HasPrefix(bufstr, "\033[M") {
mouseRelease := false
switch buf[3] & 3 {
case 0:
event.Key = MouseLeft
case 1:
event.Key = MouseMid
event.Key = MouseMiddle
case 2:
event.Key = MouseRight
case 3:
mouseRelease = true
}
if mouseRelease {
return 6, false
} else {
event.Type = EventMouse // KeyEvent by default
// wheel up outputs MouseLeft
if buf[3] == 0x60 {
event.Key = MouseMid
}
// the coord is 1,1 for upper left
event.MouseX = int(buf[4]) - 1 - 32
event.MouseY = int(buf[5]) - 1 - 32
return 6, true
}
event.Type = EventMouse // KeyEvent by default
// wheel up outputs MouseLeft
if buf[3] == 0x60 || buf[3] == 0x70 {
event.Key = MouseMiddle
}
// the coord is 1,1 for upper left
event.MouseX = int(buf[4]) - 1 - 32
event.MouseY = int(buf[5]) - 1 - 32
return 6, true
}
for i, key := range keys {
......
......@@ -664,6 +664,7 @@ func input_event_producer() {
var r input_record
var err error
mouseRelease := false
var prevButton dword
for {
err = read_console_input(in, &r)
if err != nil {
......@@ -691,16 +692,14 @@ func input_event_producer() {
// single or double click
if mr.event_flags == 0 || mr.event_flags == 2 {
// handle desync
if mouseRelease && mr.event_flags != 0 {
mouseRelease = false
}
mouseRelease = mouseRelease && mr.event_flag == 0 && prevButton == mr.button_state
prevButton = mr.button_state
if mouseRelease {
// ignore release
mouseRelease = false
continue
} else {
mouseRelease = true
}
mouseRelease = true
ev := Event{
Type: EventMouse,
MouseX: int(mr.mouse_pos.x),
......@@ -711,11 +710,14 @@ func input_event_producer() {
ev.Key = MouseLeft
case 0x2:
ev.Key = MouseRight
default:
ev.Key = MouseMiddle
}
input_comm <- ev
} else {
// get ready for the next click
mouseRelease = false
prevButton = 0
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册