blob: 609787d41598b16b3d9b5ca3a55f6c2961ad2111 (
plain) (
blame)
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
86
87
88
89
|
/*
* vtkbd.c
* Virtual Terminal Keyboard
*
* piaip's new re-implementation of xterm/VT100/220/ANSI key input
* escape sequence parser for BBS
*
* Author: Hung-Te Lin (piaip)
* Create: Wed Sep 23 15:06:43 CST 2009
* ---------------------------------------------------------------------------
* Copyright (c) 2009 Hung-Te Lin <piaip@csie.org>
* All rights reserved.
* Distributed under BSD license (GPL compatible).
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*/
#ifndef _VTKBD_H
#define _VTKBD_H
#include <sys/types.h>
/* context definition */
typedef struct {
int state;
int esc_arg;
} VtkbdCtx;
/* vtkbd API */
int vtkbd_process(int c, VtkbdCtx *ctx);
ssize_t vtkbd_ignore_dbcs_evil_repeats(const unsigned char *buf, ssize_t len);
/* key code macro */
#define Ctrl(c) (c & 0x1F)
/* common ASCII compatible keys definition */
#define KEY_TAB 9
#define KEY_ESC 27
#define KEY_CR ('\r') // Ctrl('M'), 0x0D
#define KEY_LF ('\n') // Ctrl('J'), 0x0A, will be ignored.
#define KEY_ENTER KEY_CR // for backward compatibility
/* BS/ERASE/DEL, see vtkbd.c for the rules */
#define KEY_BS (0x08) // see vtkbd.c for BS/DEL Rules
/* arrow keys (must follow vt100 ordering) */
#define KEY_UP 0x0101
#define KEY_DOWN 0x0102
#define KEY_RIGHT 0x0103
#define KEY_LEFT 0x0104
#define KEY_STAB 0x0109 /* shift-tab */
/* 6 extended keys (must follow vt220 ordering) */
#define KEY_HOME 0x0201
#define KEY_INS 0x0202
#define KEY_DEL 0x0203
#define KEY_END 0x0204
#define KEY_PGUP 0x0205
#define KEY_PGDN 0x0206
/* PFn/Fn function keys */
#define KEY_F1 0x0301
#define KEY_F2 0x0302
#define KEY_F3 0x0303
#define KEY_F4 0x0304
#define KEY_F5 0x0305
#define KEY_F6 0x0306
#define KEY_F7 0x0307
#define KEY_F8 0x0308
#define KEY_F9 0x0309
#define KEY_F10 0x030A
#define KEY_F11 0x030B
#define KEY_F12 0x030C
/* vtkbd meta keys */
#define KEY_INCOMPLETE 0x0420 /* 0x?20 to prevent accident usage */
#define KEY_UNKNOWN 0x0FFF /* unknown sequence */
#endif // _VTKBD_H
// vim:ts=4:sw=4:et
|