(data []byte)
| 205 | } |
| 206 | |
| 207 | func 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 | |
| 261 | func modifiers_for_arrow_and_page_up_etc(slice4 byte) int { |
| 262 | switch slice4 { |
no test coverage detected