📄 oxbow.h
字号:
*/
#define EFLAG (0x0100)
#define SHIFTFLAG (0x0200)
#define ALTFLAG (0x0400)
#define CTRLFLAG (0x0800)
#define CTL_AT (0x0)
#define NUL (0x0)
#define CTL_A (0x1)
#define SOH (0x1)
#define CTL_B (0x2)
#define STX (0x2)
#define CTL_C (0x3)
#define ETX (0x3)
#define CTL_D (0x4)
#define EOT (0x4)
#define CTL_E (0x5)
#define ENQ (0x5)
#define CTL_F (0x6)
#define ACK (0x6)
#define CTL_G (0x7)
#define BELL (0x7)
#define CTL_H (0x8)
#define RUBOUT (0x8)
#define BS (0x8)
#define CTL_I (0x9)
#define HT (0x9)
#define TAB (0x9)
#define CTL_J (0xA)
#define LF (0xA)
#define CTL_K (0xB)
#define VT (0xB)
#define CTL_L (0xC)
#define FF (0xC)
#define CTL_M (0xD)
#define CR (0xD)
#define ENTER (0xD)
#define CTL_N (6)
#define SO (6)
#define CTL_O (0xF)
#define SI (0xF)
#define CTL_P (0x10)
#define DLE (0x10)
#define CTL_Q (0x11)
#define DC1 (0x11)
#define CTL_R (0x12)
#define DC2 (0x12)
#define CTL_S (0x13)
#define DC3 (0x13)
#define CTL_T (0x14)
#define DC4 (0x14)
#define CTL_U (0x15)
#define NAK (0x15)
#define CTL_V (0x16)
#define SYN (0x16)
#define CTL_W (0x17)
#define ETB (0x17)
#define CTL_X (0x18)
#define CAN (0x18)
#define CTL_Y (0x19)
#define EM (0x19)
#define CTL_Z (0x1A)
#define SUB (0x1A)
#define CTL_LBRK (0x1B)
#define ESCKEY (0x1B)
#define CTL_BKSLSH (0x1C)
#define FS (0x1C)
#define CTL_RBRK (0x1D)
#define GS (0x1D)
#define CTL_CARAT (30)
#define RS (30)
#define CTL_HYPHEN (0x1F)
#define US (0x1F)
#define CTL_BS (0x7F)
#define ASCIDEL (0x7F)
#define SLASHKEY ('/')
#define SPACEKEY (' ')
#define F1 (0x3B+EFLAG)
#define F2 (0x3C+EFLAG)
#define F3 (0x3D+EFLAG)
#define F4 (62+EFLAG)
#define F5 (0x3F+EFLAG)
#define F6 (0x40+EFLAG)
#define F7 (0x41+EFLAG)
#define F8 (0x42+EFLAG)
#define F9 (0x43+EFLAG)
#define F10 (0x44+EFLAG)
#define F11 (0x85+EFLAG)
#define F12 (0x86+EFLAG)
#define SHIFT_F1 (0x54+EFLAG)
#define SHIFT_F2 (0x55+EFLAG)
#define SHIFT_F3 (0x56+EFLAG)
#define SHIFT_F4 (0x57+EFLAG)
#define SHIFT_F5 (0x58+EFLAG)
#define SHIFT_F6 (0x59+EFLAG)
#define SHIFT_F7 (0x5A+EFLAG)
#define SHIFT_F8 (0x5B+EFLAG)
#define SHIFT_F9 (0x5C+EFLAG)
#define SHIFT_F10 (0x5D+EFLAG)
#define SHIFT_F11 (0x87+EFLAG)
#define SHIFT_F12 (0x88+EFLAG)
#define CTRL_F1 (94+EFLAG)
#define CTRL_F2 (0x5F+EFLAG)
#define CTRL_F3 (0x60+EFLAG)
#define CTRL_F4 (0x61+EFLAG)
#define CTRL_F5 (0x62+EFLAG)
#define CTRL_F6 (0x63+EFLAG)
#define CTRL_F7 (0x64+EFLAG)
#define CTRL_F8 (0x65+EFLAG)
#define CTRL_F9 (0x66+EFLAG)
#define CTRL_F10 (0x67+EFLAG)
#define CTRL_F11 (0x89+EFLAG)
#define CTRL_F12 (0x8A+EFLAG)
#define ALT_F1 (0x68+EFLAG)
#define ALT_F2 (0x69+EFLAG)
#define ALT_F3 (0x6A+EFLAG)
#define ALT_F4 (0x6B+EFLAG)
#define ALT_F5 (0x6C+EFLAG)
#define ALT_F6 (0x6D+EFLAG)
#define ALT_F7 (110+EFLAG)
#define ALT_F8 (0x6F+EFLAG)
#define ALT_F9 (0x70+EFLAG)
#define ALT_F10 (0x71+EFLAG)
#define ALT_F11 (0x8B+EFLAG)
#define ALT_F12 (0x8C+EFLAG)
#define HOMEKEY (0x47+EFLAG)
#define UPKEY (0x48+EFLAG)
#define PGUP (0x49+EFLAG)
#define BAKKEY (0x4B+EFLAG)
#define FWDKEY (0x4D+EFLAG)
#define ENDKEY (0x4F+EFLAG)
#define DNKEY (0x50+EFLAG)
#define PGDN (0x51+EFLAG)
#define INSERTKEY (0x52+EFLAG)
#define DELETEKEY (0x53+EFLAG)
#define CTRL_HOME (0x77+EFLAG)
#define CTRL_UP (0x8D+EFLAG)
#define CTRL_PGUP (0x84+EFLAG)
#define CTRL_BAK (0x73+EFLAG)
#define CTRL_FWD (0x74+EFLAG)
#define CTRL_END (0x75+EFLAG)
#define CTRL_DN (0x91+EFLAG)
#define CTRL_PGDN (0x76+EFLAG)
#define CTRL_INSERT (0x92+EFLAG)
#define CTRL_DELETE (0x93+EFLAG)
#define CTRL_HT (0x94+EFLAG)
#define CTRL_TAB CTRL_HT
#define CTRL_2 (0x03+EFLAG)
/* keypad keys */
#define KP_FIVE (0x4c+EFLAG)
#define CTRL_KP_SLASH (0x95+EFLAG)
#define CTRL_KP_STAR (0x96+EFLAG)
#define CTRL_KP_PLUS (0x90+EFLAG)
#define CTRL_KP_MINUS (142+EFLAG)
#define CTRL_KP_FIVE (0x8F+EFLAG)
/* *** GRAY CENTER KEYS ONLY *** */
#define ALT_HOME (0x97+EFLAG)
#define ALT_UP (0x98+EFLAG)
#define ALT_PGUP (0x99+EFLAG)
#define ALT_BAK (0x9B+EFLAG)
#define ALT_FWD (0x9D+EFLAG)
#define ALT_END (0x9F+EFLAG)
#define ALT_DN (0xA0+EFLAG)
#define ALT_PGDN (0xA1+EFLAG)
#define ALT_INSERT (0xA2+EFLAG)
#define ALT_DELETE (0xA3+EFLAG)
/* ****************************** */
#define ALT_A (30+EFLAG)
#define ALT_B (0x30+EFLAG)
#define ALT_C (46+EFLAG)
#define ALT_D (0x20+EFLAG)
#define ALT_E (0x12+EFLAG)
#define ALT_F (0x21+EFLAG)
#define ALT_G (0x22+EFLAG)
#define ALT_H (0x23+EFLAG)
#define ALT_I (0x17+EFLAG)
#define ALT_J (0x24+EFLAG)
#define ALT_K (0x25+EFLAG)
#define ALT_L (0x26+EFLAG)
#define ALT_M (0x32+EFLAG)
#define ALT_N (0x31+EFLAG)
#define ALT_O (0x18+EFLAG)
#define ALT_P (0x19+EFLAG)
#define ALT_Q (0x10+EFLAG)
#define ALT_R (0x13+EFLAG)
#define ALT_S (0x1F+EFLAG)
#define ALT_T (0x14+EFLAG)
#define ALT_U (0x16+EFLAG)
#define ALT_V (0x2F+EFLAG)
#define ALT_W (0x11+EFLAG)
#define ALT_X (0x2D+EFLAG)
#define ALT_Y (0x15+EFLAG)
#define ALT_Z (0x2C+EFLAG)
#define ALT_1 (0x78+EFLAG)
#define ALT_2 (0x79+EFLAG)
#define ALT_3 (0x7A+EFLAG)
#define ALT_4 (0x7B+EFLAG)
#define ALT_5 (0x7C+EFLAG)
#define ALT_6 (0x7D+EFLAG)
#define ALT_7 (126+EFLAG)
#define ALT_8 (0x7F+EFLAG)
#define ALT_9 (0x80+EFLAG)
#define ALT_0 (0x81+EFLAG)
#define ALT_HYPHEN (0x82+EFLAG)
#define ALT_EQUALS (0x83+EFLAG)
#define ALT_LBRK (0x1A+EFLAG)
#define ALT_RBRK (0x1B+EFLAG)
#define ALT_SEMI (0x27+EFLAG)
#define ALT_RAPOS (0x28+EFLAG)
#define ALT_LAPOS (0x29+EFLAG)
#define ALT_BKSLSH (0x2B+EFLAG)
#define ALT_COMMA (0x33+EFLAG)
#define ALT_PERIOD (0x34+EFLAG)
#define ALT_SLASH (0x35+EFLAG)
#define ALT_BS (6+EFLAG)
#define ALT_ENTER (0x1C+EFLAG)
#define ALT_HT (0xA5+EFLAG)
#define ALT_TAB ALT_HT
#define ALT_ESC (0x01+EFLAG)
/* keypad keys */
#define ALT_KP_ENTER (0xA6+EFLAG)
#define ALT_KP_PLUS (78+EFLAG)
#define ALT_KP_MINUS (0x4A+EFLAG)
#define ALT_KP_STAR (0x37+EFLAG)
#define ALT_KP_SLASH (0xA4+EFLAG)
#define SHIFT_HT (0x0F+EFLAG)
#define SHIFT_TAB SHIFT_HT
/*
Artificial codes produced by testing the shift states
Unused codes:
02,04,05,06,07,08,09,0A,0B,0C,0D,2A,36,38,39,3A,45,46,
72,9A,A7-AF,BC-BF,C0-CF,E0-EF,F0-FF
*/
#define SHIFT_INSERT (INSERTKEY+SHIFTFLAG)
#define SHIFT_END (ENDKEY+SHIFTFLAG)
#define SHIFT_DN (DNKEY+SHIFTFLAG)
#define SHIFT_PGDN (PGDN+SHIFTFLAG)
#define SHIFT_BAK (BAKKEY+SHIFTFLAG)
#define SHIFT_KP_FIVE (KP_FIVE+SHIFTFLAG)
#define SHIFT_FWD (FWDKEY+SHIFTFLAG)
#define SHIFT_HOME (HOMEKEY+SHIFTFLAG)
#define SHIFT_UP (UPKEY+SHIFTFLAG)
#define SHIFT_PGUP (PGUP+SHIFTFLAG)
#define SHIFT_DELETE (DELETEKEY+SHIFTFLAG)
#define SHIFT_CTRL_INSERT (CTRL_INSERT+SHIFTFLAG)
#define SHIFT_CTRL_END (CTRL_END+SHIFTFLAG)
#define SHIFT_CTRL_DN (CTRL_DN+SHIFTFLAG)
#define SHIFT_CTRL_PGDN (CTRL_PGDN+SHIFTFLAG)
#define SHIFT_CTRL_BAK (CTRL_BAK+SHIFTFLAG)
#define SHIFT_CTRL_KP_FIVE (CTRL_KP_FIVE+SHIFTFLAG)
#define SHIFT_CTRL_FWD (CTRL_FWD+SHIFTFLAG)
#define SHIFT_CTRL_HOME (CTRL_HOME+SHIFTFLAG)
#define SHIFT_CTRL_UP (CTRL_UP+SHIFTFLAG)
#define SHIFT_CTRL_PGUP (CTRL_PGUP+SHIFTFLAG)
#define SHIFT_CTRL_DELETE (CTRL_DELETE+SHIFTFLAG)
#define SHIFT_ALT_INSERT (ALT_INSERT+SHIFTFLAG)
#define SHIFT_ALT_END (ALT_END+SHIFTFLAG)
#define SHIFT_ALT_DN (ALT_DN+SHIFTFLAG)
#define SHIFT_ALT_PGDN (ALT_PGDN+SHIFTFLAG)
#define SHIFT_ALT_BAK (ALT_BAK+SHIFTFLAG)
#define SHIFT_ALT_FWD (ALT_FWD+SHIFTFLAG)
#define SHIFT_ALT_HOME (ALT_HOME+SHIFTFLAG)
#define SHIFT_ALT_UP (ALT_UP+SHIFTFLAG)
#define SHIFT_ALT_PGUP (ALT_PGUP+SHIFTFLAG)
#define SHIFT_ALT_DELETE (ALT_DELETE+SHIFTFLAG)
#define CTRL_ALT_INSERT (ALT_INSERT+CTRLFLAG)
#define CTRL_ALT_END (ALT_END+CTRLFLAG)
#define CTRL_ALT_DN (ALT_DN+CTRLFLAG)
#define CTRL_ALT_PGDN (ALT_PGDN+CTRLFLAG)
#define CTRL_ALT_BAK (ALT_BAK+CTRLFLAG)
#define CTRL_ALT_FWD (ALT_FWD+CTRLFLAG)
#define CTRL_ALT_HOME (ALT_HOME+CTRLFLAG)
#define CTRL_ALT_UP (ALT_UP+CTRLFLAG)
#define CTRL_ALT_PGUP (ALT_PGUP+CTRLFLAG)
#define CTRL_ALT_DELETE (ALT_DELETE+CTRLFLAG)
#define SHIFT_CTRL_KP_SLASH (CTRL_KP_SLASH+SHIFTFLAG)
#define SHIFT_CTRL_KP_STAR (CTRL_KP_STAR+SHIFTFLAG)
#define SHIFT_CTRL_KP_MINUS (CTRL_KP_MINUS+SHIFTFLAG)
#define SHIFT_CTRL_KP_PLUS (CTRL_KP_PLUS+SHIFTFLAG)
#define SHIFT_ALT_KP_ENTER (ALT_KP_ENTER+SHIFTFLAG)
#define CTRL_ALT_KP_ENTER (ALT_KP_ENTER+CTRLFLAG)
#define CTRL_ALT_KP_PLUS (ALT_KP_PLUS+CTRLFLAG)
#define CTRL_ALT_KP_MINUS (ALT_KP_MINUS+CTRLFLAG)
#define CTRL_ALT_KP_STAR (ALT_KP_STAR+CTRLFLAG)
#define CTRL_ALT_KP_SLASH (ALT_KP_SLASH+CTRLFLAG)
#define SHIFT_CTRL_BS (CTL_BS+SHIFTFLAG)
#define SHIFT_ALT_BS (ALT_BS+SHIFTFLAG)
#define SHIFT_CTRL_HT (CTRL_HT+SHIFTFLAG)
#define SHIFT_CTRL_TAB SHIFT_CTRL_HT
#define SHIFT_ALT_HT (ALT_HT+SHIFTFLAG)
#define SHIFT_ALT_TAB SHIFT_ALT_HT
#define CTRL_ALT_BS (ALT_BS+CTRLFLAG)
#define CTRL_SLASH (SLASHKEY+CTRLFLAG)
#define CTRL_ESC (ESCKEY+CTRLFLAG)
#define CTRL_SPACE (SPACEKEY+CTRLFLAG)
#define SHIFT_ESC (ESCKEY+SHIFTFLAG)
#define ALT_SPACE (SPACEKEY+ALTFLAG)
/* keypad specials (not usually implemented) */
#define KP_ENTER (0xB0+EFLAG)
#define KP_PLUS (0xB1+EFLAG)
#define KP_MINUS (0xB2+EFLAG)
#define KP_STAR (0xB3+EFLAG)
#define KP_SLASH (0xB4+EFLAG)
#define SHIFT_KP_ENTER (0xB5+EFLAG)
#define SHIFT_KP_PLUS (0xB6+EFLAG)
#define SHIFT_KP_MINUS (0xB7+EFLAG)
#define SHIFT_KP_STAR (0xB8+EFLAG)
#define SHIFT_KP_SLASH (0xB9+EFLAG)
#define CTRL_KP_ENTER (0xBA+EFLAG)
#define SHIFT_CTRL_KP_ENTER (0xBB+EFLAG)
/* ---------- EVENT STUFF ------------- */
typedef union { /* 8 bytes (a long long ) */
_LONGLONG_ item;
short m_type;
STOR s;
#if 0
#define e_keychar s.a5.b[4]
#define e_keyflag s.a5.b[5]
#define m_sparam s.a3.s1
#define m_lparam s.a4.s1
#else
#define E_KEYCHAR s.a5.b[4]
#define E_KEYFLAG s.a5.b[5]
#define M_SPARAM s.a3.s1
#define M_LPARAM s.a4.s1
#endif
struct {
unsigned short type;
unsigned char kbstat;
unsigned char mask;
short xpos;
short ypos;
#if 0
#define e_type e.type
#define e_kbstat e.kbstat
#define e_mask e.mask
#define e_xpos e.xpos
#define e_ypos e.ypos
#define e_keycode e.xpos
#else
#define E_TYPE e.type
#define E_KBSTAT e.kbstat
#define E_MASK e.mask
#define E_XPOS e.xpos
#define E_YPOS e.ypos
#define E_KEYCODE e.xpos
#endif
} e;
} RawEvent, CFmsg;
#define M_MOTION (0x001)
#define M_LEFT_DOWN (0x002)
#define M_LEFT_UP (0x004)
#define M_RIGHT_DOWN (0x008)
#define M_RIGHT_UP (0x010)
#define M_MIDDLE_DOWN (0x020)
#define M_MIDDLE_UP (0x040)
#define M_BUTTON_DOWN (M_LEFT_DOWN | M_MIDDLE_DOWN | M_RIGHT_DOWN)
#define M_BUTTON_UP (M_LEFT_UP | M_MIDDLE_UP | M_RIGHT_UP)
#define M_BUTTON_CHANGE (M_BUTTON_UP | M_BUTTON_DOWN )
#define KB_RIGHTSHIFT (0x01) /* right shift key depressed */
#define KB_LEFTSHIFT (0x02) /* left shift key depressed */
#define KB_CTRL (0x04) /* CTRL depressed */
#define KB_ALT (0x08) /* ALT depressed */
#define KB_SCROLLOCK (0x10) /* SCROLL LOCK active */
#define KB_NUMLOCK (0x20) /* NUM LOCK active */
#define KB_CAPSLOCK (0x40) /* CAPS LOCK active */
#define GLBLKEY (0x80)
#define KB_SHIFT (KB_LEFTSHIFT | KB_RIGHTSHIFT)
/* A complicated CUA information word */
extern int AltDown;
typedef struct {
unsigned short width;
unsigned short height;
unsigned short number_of_colors;
unsigned char BIOS_mode;
unsigned char special;
} DRIVER_MODE_ENTRY;
/* Pointer to a millisecond unsigned long ticker */
extern unsigned long oxport_thread_msec;
int OXPORT_shift_state();
void OXPORT_deinit_kbd(long arg);
void OXPORT_init_kbd(long arg);
int OXPORT_was_kbd();
int OXPORT_get_kbd();
void OXPORT_flush_kbd(void);
void OXPORT_position_kb_cursor(int x, int y);
void OXPORT_get_kb_cursor_pos_shape(int *pos, int *shape);
void OXPORT_set_kb_cursor_shape(int shape);
void OXPORT_hide_kb_cursor();
void OXPORT_unhide_kb_cursor();
void OXPORT_direct_attr_text_output(int offset, short *buf, int len);
void OXPORT_bios_attr_text_output(int x, int y, short *buf, int len);
void OXPORT_read_image(void *dst, int x, int y, int wd, int ht, int dw);
void OXPORT_write_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_or_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_and_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_xor_image(void *src, int x, int y, int wd, int ht, int sw);
void OXPORT_deinit_events(long arg);
int OXPORT_init_events(long arg);
int OXPORT_was_event(void);
RawEvent OXPORT_get_event(void);
void OXPORT_set_mouse_cursor_shape(void *shape);
int OXPORT_register_mouse_cursor_shape(void *shape);
void OXPORT_set_mouse_limits(int x1, int y1, int x2, int y2);
void OXPORT_set_mouse_speed(int speed);
void OXPORT_set_mouse_accel(int thresh, int accel);
void OXPORT_disable_mouse(void);
void OXPORT_enable_mouse(void);
void OXPORT_set_mousepos(int x, int y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -