1: #ifndef CONSOLE_H
2: #define CONSOLE_H
3:
4: #include "qemu-char.h"
5:
6:
7:
8: #define MOUSE_EVENT_LBUTTON 0x01
9: #define MOUSE_EVENT_RBUTTON 0x02
10: #define MOUSE_EVENT_MBUTTON 0x04
11:
12: typedef void QEMUPutKBDEvent(void *opaque, int keycode);
13: typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state);
14:
15: typedef struct QEMUPutMouseEntry {
16: QEMUPutMouseEvent *qemu_put_mouse_event;
17: void *qemu_put_mouse_event_opaque;
18: int qemu_put_mouse_event_absolute;
19: char *qemu_put_mouse_event_name;
20:
21:
22: struct QEMUPutMouseEntry *next;
23: } QEMUPutMouseEntry;
24:
25: void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
26: QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
27: void *opaque, int absolute,
28: const char *name);
29: void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry);
30:
31: void kbd_put_keycode(int keycode);
32: void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
33: int kbd_mouse_is_absolute(void);
34:
35: void do_info_mice(void);
36: void do_mouse_set(int index);
37:
38:
39:
40: #define QEMU_KEY_ESC1(c) ((c) | 0xe100)
41: #define QEMU_KEY_BACKSPACE 0x007f
42: #define QEMU_KEY_UP QEMU_KEY_ESC1('A')
43: #define QEMU_KEY_DOWN QEMU_KEY_ESC1('B')
44: #define QEMU_KEY_RIGHT QEMU_KEY_ESC1('C')
45: #define QEMU_KEY_LEFT QEMU_KEY_ESC1('D')
46: #define QEMU_KEY_HOME QEMU_KEY_ESC1(1)
47: #define QEMU_KEY_END QEMU_KEY_ESC1(4)
48: #define QEMU_KEY_PAGEUP QEMU_KEY_ESC1(5)
49: #define QEMU_KEY_PAGEDOWN QEMU_KEY_ESC1(6)
50: #define QEMU_KEY_DELETE QEMU_KEY_ESC1(3)
51:
52: #define QEMU_KEY_CTRL_UP 0xe400
53: #define QEMU_KEY_CTRL_DOWN 0xe401
54: #define QEMU_KEY_CTRL_LEFT 0xe402
55: #define QEMU_KEY_CTRL_RIGHT 0xe403
56: #define QEMU_KEY_CTRL_HOME 0xe404
57: #define QEMU_KEY_CTRL_END 0xe405
58: #define QEMU_KEY_CTRL_PAGEUP 0xe406
59: #define QEMU_KEY_CTRL_PAGEDOWN 0xe407
60:
61: void kbd_put_keysym(int keysym);
62:
63:
64:
65: struct DisplayState {
66: uint8_t *data;
67: int linesize;
68: int depth;
69: int bgr;
70: int width;
71: int height;
72: void *opaque;
73: struct QEMUTimer *gui_timer;
74:
75: void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
76: void (*dpy_resize)(struct DisplayState *s, int w, int h);
77: void (*dpy_refresh)(struct DisplayState *s);
78: void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y,
79: int dst_x, int dst_y, int w, int h);
80: void (*dpy_fill)(struct DisplayState *s, int x, int y,
81: int w, int h, uint32_t c);
82: void (*mouse_set)(int x, int y, int on);
83: void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y,
84: uint8_t *image, uint8_t *mask);
85: };
86:
87: static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
88: {
89: s->dpy_update(s, x, y, w, h);
90: }
91:
92: static inline void dpy_resize(DisplayState *s, int w, int h)
93: {
94: s->dpy_resize(s, w, h);
95: }
96:
97: typedef void (*vga_hw_update_ptr)(void *);
98: typedef void (*vga_hw_invalidate_ptr)(void *);
99: typedef void (*vga_hw_screen_dump_ptr)(void *, const char *);
100:
101: TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update,
102: vga_hw_invalidate_ptr invalidate,
103: vga_hw_screen_dump_ptr screen_dump,
104: void *opaque);
105: void vga_hw_update(void);
106: void vga_hw_invalidate(void);
107: void vga_hw_screen_dump(const char *filename);
108:
109: int is_graphic_console(void);
110: CharDriverState *text_console_init(DisplayState *ds, const char *p);
111: void console_select(unsigned int index);
112: void console_color_init(DisplayState *ds);
113:
114:
115: void sdl_display_init(DisplayState *ds, int full_screen, int no_frame);
116:
117:
118: void cocoa_display_init(DisplayState *ds, int full_screen);
119:
120:
121: void vnc_display_init(DisplayState *ds);
122: void vnc_display_close(DisplayState *ds);
123: int vnc_display_open(DisplayState *ds, const char *display);
124: int vnc_display_password(DisplayState *ds, const char *password);
125: void do_info_vnc(void);
126:
127:
128: extern uint8_t _translate_keycode(const int key);
129:
130:
131:
132:
133: void monitor_init(CharDriverState *hd, int show_banner);
134: void term_puts(const char *str);
135: void term_vprintf(const char *fmt, va_list ap);
136: void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
137: void term_print_filename(const char *filename);
138: void term_flush(void);
139: void term_print_help(void);
140: void monitor_readline(const char *prompt, int is_password,
141: char *buf, int buf_size);
142:
143:
144: typedef void ReadLineFunc(void *opaque, const char *str);
145:
146: extern int completion_index;
147: void add_completion(const char *str);
148: void readline_handle_byte(int ch);
149: void readline_find_completion(const char *cmdline);
150: const char *readline_get_history(unsigned int index);
151: void readline_start(const char *prompt, int is_password,
152: ReadLineFunc *readline_func, void *opaque);
153:
154: #endif