forked from liamg/darktile
-
Notifications
You must be signed in to change notification settings - Fork 0
/
modes.go
85 lines (76 loc) · 2.14 KB
/
modes.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package terminal
import "fmt"
func csiSetMode(modeStr string, enabled bool, terminal *Terminal) error {
/*
Mouse support
#define SET_X10_MOUSE 9
#define SET_VT200_MOUSE 1000
#define SET_VT200_HIGHLIGHT_MOUSE 1001
#define SET_BTN_EVENT_MOUSE 1002
#define SET_ANY_EVENT_MOUSE 1003
#define SET_FOCUS_EVENT_MOUSE 1004
#define SET_EXT_MODE_MOUSE 1005
#define SET_SGR_EXT_MODE_MOUSE 1006
#define SET_URXVT_EXT_MODE_MOUSE 1015
#define SET_ALTERNATE_SCROLL 1007
*/
switch modeStr {
case "4":
if enabled { // @todo support replace mode
terminal.ActiveBuffer().SetInsertMode()
} else {
terminal.ActiveBuffer().SetReplaceMode()
}
case "?1":
terminal.modes.ApplicationCursorKeys = enabled
case "?7":
// auto-wrap mode
//DECAWM
terminal.ActiveBuffer().SetAutoWrap(enabled)
case "?9":
if enabled {
terminal.logger.Infof("Turning on X10 mouse mode")
terminal.SetMouseMode(MouseModeX10)
} else {
terminal.logger.Infof("Turning off X10 mouse mode")
terminal.SetMouseMode(MouseModeNone)
}
case "?12", "?13":
terminal.modes.BlinkingCursor = enabled
case "?25":
terminal.modes.ShowCursor = enabled
case "?47", "?1047":
if enabled {
terminal.UseAltBuffer()
} else {
terminal.UseMainBuffer()
}
case "?1000", "?1006;1000", "?10061000": // ?10061000 seen from htop
// enable mouse tracking
// 1000 refers to ext mode for extended mouse click area - otherwise only x <= 255-31
if enabled {
terminal.logger.Infof("Turning on VT200 mouse mode")
terminal.SetMouseMode(MouseModeVT200)
} else {
terminal.logger.Infof("Turning off VT200 mouse mode")
terminal.SetMouseMode(MouseModeNone)
}
case "?1048":
if enabled {
terminal.ActiveBuffer().SaveCursor()
} else {
terminal.ActiveBuffer().RestoreCursor()
}
case "?1049":
if enabled {
terminal.UseAltBuffer()
} else {
terminal.UseMainBuffer()
}
case "?2004":
terminal.SetBracketedPasteMode(enabled)
default:
return fmt.Errorf("Unsupported CSI %sl code", modeStr)
}
return nil
}