Revision 7ffb82ca vnc.c
b/vnc.c | ||
---|---|---|
1111 | 1111 |
} |
1112 | 1112 |
|
1113 | 1113 |
vnc_remove_timer(vs->vd); |
1114 |
qemu_remove_led_event_handler(vs->led); |
|
1114 | 1115 |
qemu_free(vs); |
1115 | 1116 |
} |
1116 | 1117 |
|
... | ... | |
1501 | 1502 |
kbd_put_keycode(keycode | SCANCODE_UP); |
1502 | 1503 |
} |
1503 | 1504 |
|
1505 |
static void kbd_leds(void *opaque, int ledstate) |
|
1506 |
{ |
|
1507 |
VncState *vs = opaque; |
|
1508 |
int caps, num; |
|
1509 |
|
|
1510 |
caps = ledstate & QEMU_CAPS_LOCK_LED ? 1 : 0; |
|
1511 |
num = ledstate & QEMU_NUM_LOCK_LED ? 1 : 0; |
|
1512 |
|
|
1513 |
if (vs->modifiers_state[0x3a] != caps) { |
|
1514 |
vs->modifiers_state[0x3a] = caps; |
|
1515 |
} |
|
1516 |
if (vs->modifiers_state[0x45] != num) { |
|
1517 |
vs->modifiers_state[0x45] = num; |
|
1518 |
} |
|
1519 |
} |
|
1520 |
|
|
1504 | 1521 |
static void do_key_event(VncState *vs, int down, int keycode, int sym) |
1505 | 1522 |
{ |
1506 | 1523 |
/* QEMU console switch */ |
... | ... | |
1526 | 1543 |
break; |
1527 | 1544 |
case 0x3a: /* CapsLock */ |
1528 | 1545 |
case 0x45: /* NumLock */ |
1529 |
if (!down)
|
|
1546 |
if (down) |
|
1530 | 1547 |
vs->modifiers_state[keycode] ^= 1; |
1531 | 1548 |
break; |
1532 | 1549 |
} |
... | ... | |
2412 | 2429 |
vnc_flush(vs); |
2413 | 2430 |
vnc_read_when(vs, protocol_version, 12); |
2414 | 2431 |
reset_keys(vs); |
2432 |
vs->led = qemu_add_led_event_handler(kbd_leds, vs); |
|
2415 | 2433 |
|
2416 | 2434 |
vnc_init_timer(vd); |
2417 | 2435 |
|
Also available in: Unified diff