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

Function parse_length_3

termeverything/ConvertKeycodeToXbdCode.go:207–259  ·  view source on GitHub ↗
(data []byte)

Source from the content-addressed store, hash-verified

205}
206
207func parse_length_3(data []byte) []XkbdCode {
208 if len(data) < 3 {
209 return nil
210 }
211 if data[0] != 27 {
212 a := KeycodeSingleCodes(int(data[0]))
213 b := parse_length_2(data[1:])
214 if a != nil {
215 return append([]XkbdCode{a}, b...)
216 }
217 return b
218 }
219 if data[1] == 79 { // 'O'
220 switch data[2] {
221 case 80: // 'P'
222 return []XkbdCode{&KeyCode{KeyCode: KEY_F1, Modifiers: 0}}
223 case 81: // 'Q'
224 return []XkbdCode{&KeyCode{KeyCode: KEY_F2, Modifiers: 0}}
225 case 82: // 'R'
226 return []XkbdCode{&KeyCode{KeyCode: KEY_F3, Modifiers: 0}}
227 case 83: // 'S'
228 return []XkbdCode{&KeyCode{KeyCode: KEY_F4, Modifiers: 0}}
229 }
230 }
231 if data[1] == 91 { // '['
232 switch data[2] {
233 case 65: // 'A'
234 return []XkbdCode{&KeyCode{KeyCode: KEY_UP, Modifiers: 0}}
235 case 66: // 'B'
236 return []XkbdCode{&KeyCode{KeyCode: KEY_DOWN, Modifiers: 0}}
237 case 67: // 'C'
238 return []XkbdCode{&KeyCode{KeyCode: KEY_RIGHT, Modifiers: 0}}
239 case 68: // 'D'
240 return []XkbdCode{&KeyCode{KeyCode: KEY_LEFT, Modifiers: 0}}
241 case 70: // 'F'
242 return []XkbdCode{&KeyCode{KeyCode: KEY_END, Modifiers: 0}}
243 case 72: // 'H'
244 return []XkbdCode{&KeyCode{KeyCode: KEY_HOME, Modifiers: 0}}
245 case 90: // 'Z' => Shift+Tab
246 return []XkbdCode{&KeyCode{KeyCode: KEY_TAB, Modifiers: ModShift}}
247 // These work for alt+F1, shift+F2, etc in some terminals
248 case 80: // 'P'
249 return []XkbdCode{&KeyCode{KeyCode: KEY_F1, Modifiers: 0}}
250 case 81: // 'Q'
251 return []XkbdCode{&KeyCode{KeyCode: KEY_F2, Modifiers: 0}}
252 case 82: // 'R'
253 return []XkbdCode{&KeyCode{KeyCode: KEY_F3, Modifiers: 0}}
254 case 83: // 'S'
255 return []XkbdCode{&KeyCode{KeyCode: KEY_F4, Modifiers: 0}}
256 }
257 }
258 return nil
259}
260
261func modifiers_for_arrow_and_page_up_etc(slice4 byte) int {
262 switch slice4 {

Callers 2

ConvertKeycodeToXbdCodeFunction · 0.85
parse_length_4Function · 0.85

Calls 2

KeycodeSingleCodesFunction · 0.85
parse_length_2Function · 0.85

Tested by

no test coverage detected