MCPcopy
hub / github.com/mmulet/term.everything / ParseMouseCode

Function ParseMouseCode

termeverything/PointerCode.go:95–233  ·  view source on GitHub ↗
(code string)

Source from the content-addressed store, hash-verified

93}
94
95func ParseMouseCode(code string) XkbdCode {
96 parts := strings.Split(code, ";")
97 if len(parts) != 3 {
98 return nil
99 }
100 buttonPart := parts[0]
101 colPart := parts[1]
102 rowAndTermPart := parts[2]
103 pressRelease := rowAndTermPart[len(rowAndTermPart)-1]
104 rowPart := rowAndTermPart[:len(rowAndTermPart)-1]
105
106 button, err := strconv.Atoi(buttonPart)
107 if err != nil {
108 return nil
109 }
110 col, err := strconv.Atoi(colPart)
111 if err != nil {
112 return nil
113 }
114 col = col - 1
115 row, err := strconv.Atoi(rowPart)
116 if err != nil {
117 return nil
118 }
119 row = row - 1
120 press := false
121 switch pressRelease {
122 case 'M':
123 press = true
124 case 'm':
125 press = false
126 default:
127 return nil
128 }
129
130 d := button + 32
131 /**
132 * Mouse time!
133 */
134 switch d {
135
136 case 67, 75, 83, 91:
137 modifiers := MouseModifiers(d, 67)
138 return &PointerMove{
139 Row: row,
140 Col: col,
141 Modifiers: modifiers,
142 }
143 case 64, 72, 80, 88:
144 /**
145 * This is pointer moving while
146 * holding left mouse button down
147 *
148 * so far it has always followed
149 * a button down event,
150 * so I'm just sending a pointer move
151 * rather than a button followed by a move
152 */

Callers 1

ParseSGRMouseSequencesFunction · 0.85

Calls 1

MouseModifiersFunction · 0.85

Tested by

no test coverage detected