Revision 63066f4f
b/hw/pckbd.c | ||
---|---|---|
190 | 190 |
kbd_update_irq(s); |
191 | 191 |
} |
192 | 192 |
|
193 |
void kbd_put_keycode(int keycode)
|
|
193 |
static void pc_kbd_put_keycode(void *opaque, int keycode)
|
|
194 | 194 |
{ |
195 |
KBDState *s = &kbd_state;
|
|
195 |
KBDState *s = opaque;
|
|
196 | 196 |
kbd_queue(s, keycode, 0); |
197 | 197 |
} |
198 | 198 |
|
... | ... | |
434 | 434 |
s->mouse_dz -= dz1; |
435 | 435 |
} |
436 | 436 |
|
437 |
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state) |
|
437 |
static void pc_kbd_mouse_event(void *opaque, |
|
438 |
int dx, int dy, int dz, int buttons_state) |
|
438 | 439 |
{ |
439 |
KBDState *s = &kbd_state;
|
|
440 |
KBDState *s = opaque;
|
|
440 | 441 |
|
441 | 442 |
/* check if deltas are recorded when disabled */ |
442 | 443 |
if (!(s->mouse_status & MOUSE_STATUS_ENABLED)) |
... | ... | |
652 | 653 |
register_ioport_write(0x60, 1, 1, kbd_write_data, s); |
653 | 654 |
register_ioport_read(0x64, 1, 1, kbd_read_status, s); |
654 | 655 |
register_ioport_write(0x64, 1, 1, kbd_write_command, s); |
656 |
|
|
657 |
qemu_add_kbd_event_handler(pc_kbd_put_keycode, s); |
|
658 |
qemu_add_mouse_event_handler(pc_kbd_mouse_event, s); |
|
655 | 659 |
} |
b/vl.c | ||
---|---|---|
385 | 385 |
} |
386 | 386 |
|
387 | 387 |
/***********************************************************/ |
388 |
/* keyboard/mouse */ |
|
389 |
|
|
390 |
static QEMUPutKBDEvent *qemu_put_kbd_event; |
|
391 |
static void *qemu_put_kbd_event_opaque; |
|
392 |
static QEMUPutMouseEvent *qemu_put_mouse_event; |
|
393 |
static void *qemu_put_mouse_event_opaque; |
|
394 |
|
|
395 |
void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque) |
|
396 |
{ |
|
397 |
qemu_put_kbd_event_opaque = opaque; |
|
398 |
qemu_put_kbd_event = func; |
|
399 |
} |
|
400 |
|
|
401 |
void qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, void *opaque) |
|
402 |
{ |
|
403 |
qemu_put_mouse_event_opaque = opaque; |
|
404 |
qemu_put_mouse_event = func; |
|
405 |
} |
|
406 |
|
|
407 |
void kbd_put_keycode(int keycode) |
|
408 |
{ |
|
409 |
if (qemu_put_kbd_event) { |
|
410 |
qemu_put_kbd_event(qemu_put_kbd_event_opaque, keycode); |
|
411 |
} |
|
412 |
} |
|
413 |
|
|
414 |
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state) |
|
415 |
{ |
|
416 |
if (qemu_put_mouse_event) { |
|
417 |
qemu_put_mouse_event(qemu_put_mouse_event_opaque, |
|
418 |
dx, dy, dz, buttons_state); |
|
419 |
} |
|
420 |
} |
|
421 |
|
|
422 |
/***********************************************************/ |
|
388 | 423 |
/* timers */ |
389 | 424 |
|
390 | 425 |
#if defined(__powerpc__) |
b/vl.h | ||
---|---|---|
179 | 179 |
#define BIOS_SIZE 0 |
180 | 180 |
#endif |
181 | 181 |
|
182 |
/* keyboard/mouse support */ |
|
183 |
|
|
184 |
#define MOUSE_EVENT_LBUTTON 0x01 |
|
185 |
#define MOUSE_EVENT_RBUTTON 0x02 |
|
186 |
#define MOUSE_EVENT_MBUTTON 0x04 |
|
187 |
|
|
188 |
typedef void QEMUPutKBDEvent(void *opaque, int keycode); |
|
189 |
typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state); |
|
190 |
|
|
191 |
void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque); |
|
192 |
void qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, void *opaque); |
|
193 |
|
|
194 |
void kbd_put_keycode(int keycode); |
|
195 |
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state); |
|
196 |
|
|
182 | 197 |
/* async I/O support */ |
183 | 198 |
|
184 | 199 |
typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); |
... | ... | |
530 | 545 |
|
531 | 546 |
/* pckbd.c */ |
532 | 547 |
|
533 |
void kbd_put_keycode(int keycode); |
|
534 |
|
|
535 |
#define MOUSE_EVENT_LBUTTON 0x01 |
|
536 |
#define MOUSE_EVENT_RBUTTON 0x02 |
|
537 |
#define MOUSE_EVENT_MBUTTON 0x04 |
|
538 |
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state); |
|
539 |
|
|
540 | 548 |
void kbd_init(void); |
541 | 549 |
|
542 | 550 |
/* mc146818rtc.c */ |
... | ... | |
627 | 635 |
uint32_t initrd_image, uint32_t initrd_size, |
628 | 636 |
uint32_t NVRAM_image); |
629 | 637 |
|
638 |
/* adb.c */ |
|
639 |
|
|
640 |
#define MAX_ADB_DEVICES 16 |
|
641 |
|
|
642 |
typedef struct ADBDevice ADBDevice; |
|
643 |
|
|
644 |
typedef void ADBDeviceReceivePacket(ADBDevice *d, const uint8_t *buf, int len); |
|
645 |
|
|
646 |
struct ADBDevice { |
|
647 |
struct ADBBusState *bus; |
|
648 |
int devaddr; |
|
649 |
int handler; |
|
650 |
ADBDeviceReceivePacket *receive_packet; |
|
651 |
void *opaque; |
|
652 |
}; |
|
653 |
|
|
654 |
typedef struct ADBBusState { |
|
655 |
ADBDevice devices[MAX_ADB_DEVICES]; |
|
656 |
int nb_devices; |
|
657 |
} ADBBusState; |
|
658 |
|
|
659 |
void adb_receive_packet(ADBBusState *s, const uint8_t *buf, int len); |
|
660 |
void adb_send_packet(ADBBusState *s, const uint8_t *buf, int len); |
|
661 |
|
|
662 |
ADBDevice *adb_register_device(ADBBusState *s, int devaddr, |
|
663 |
ADBDeviceReceivePacket *receive_packet, |
|
664 |
void *opaque); |
|
665 |
void adb_kbd_init(ADBBusState *bus); |
|
666 |
void adb_mouse_init(ADBBusState *bus); |
|
667 |
|
|
668 |
/* cuda.c */ |
|
669 |
|
|
670 |
extern ADBBusState adb_bus; |
|
671 |
int cuda_init(void); |
|
672 |
|
|
630 | 673 |
/* monitor.c */ |
631 | 674 |
void monitor_init(void); |
632 | 675 |
void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2))); |
Also available in: Unified diff