vnc.c (5e8d6a12d643a38b82a0a713a77d1192117dbdca) | vnc.c (abb4f2c9655503f14dc55064f29c4f59b07e96ff) |
---|---|
1/* 2 * QEMU VNC display driver 3 * 4 * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws> 5 * Copyright (C) 2006 Fabrice Bellard 6 * Copyright (C) 2009 Red Hat, Inc 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a copy --- 1720 unchanged lines hidden (view full) --- 1729 qemu_input_event_send_key_delay(vs->vd->key_delay_ms); 1730 vs->modifiers_state[i] = 0; 1731 } 1732 } 1733} 1734 1735static void press_key(VncState *vs, int keysym) 1736{ | 1/* 2 * QEMU VNC display driver 3 * 4 * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws> 5 * Copyright (C) 2006 Fabrice Bellard 6 * Copyright (C) 2009 Red Hat, Inc 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a copy --- 1720 unchanged lines hidden (view full) --- 1729 qemu_input_event_send_key_delay(vs->vd->key_delay_ms); 1730 vs->modifiers_state[i] = 0; 1731 } 1732 } 1733} 1734 1735static void press_key(VncState *vs, int keysym) 1736{ |
1737 int keycode = keysym2scancode(vs->vd->kbd_layout, keysym) & SCANCODE_KEYMASK; | 1737 int keycode = keysym2scancode(vs->vd->kbd_layout, keysym, 1738 false, false, false) & SCANCODE_KEYMASK; |
1738 qemu_input_event_send_key_number(vs->vd->dcl.con, keycode, true); 1739 qemu_input_event_send_key_delay(vs->vd->key_delay_ms); 1740 qemu_input_event_send_key_number(vs->vd->dcl.con, keycode, false); 1741 qemu_input_event_send_key_delay(vs->vd->key_delay_ms); 1742} 1743 1744static void vnc_led_state_change(VncState *vs) 1745{ --- 242 unchanged lines hidden (view full) --- 1988 1989static const char *code2name(int keycode) 1990{ 1991 return QKeyCode_str(qemu_input_key_number_to_qcode(keycode)); 1992} 1993 1994static void key_event(VncState *vs, int down, uint32_t sym) 1995{ | 1739 qemu_input_event_send_key_number(vs->vd->dcl.con, keycode, true); 1740 qemu_input_event_send_key_delay(vs->vd->key_delay_ms); 1741 qemu_input_event_send_key_number(vs->vd->dcl.con, keycode, false); 1742 qemu_input_event_send_key_delay(vs->vd->key_delay_ms); 1743} 1744 1745static void vnc_led_state_change(VncState *vs) 1746{ --- 242 unchanged lines hidden (view full) --- 1989 1990static const char *code2name(int keycode) 1991{ 1992 return QKeyCode_str(qemu_input_key_number_to_qcode(keycode)); 1993} 1994 1995static void key_event(VncState *vs, int down, uint32_t sym) 1996{ |
1997 bool shift = vs->modifiers_state[0x2a] || vs->modifiers_state[0x36]; 1998 bool altgr = vs->modifiers_state[0xb8]; 1999 bool ctrl = vs->modifiers_state[0x1d] || vs->modifiers_state[0x9d]; |
|
1996 int keycode; 1997 int lsym = sym; 1998 1999 if (lsym >= 'A' && lsym <= 'Z' && qemu_console_is_graphic(NULL)) { 2000 lsym = lsym - 'A' + 'a'; 2001 } 2002 | 2000 int keycode; 2001 int lsym = sym; 2002 2003 if (lsym >= 'A' && lsym <= 'Z' && qemu_console_is_graphic(NULL)) { 2004 lsym = lsym - 'A' + 'a'; 2005 } 2006 |
2003 keycode = keysym2scancode(vs->vd->kbd_layout, lsym & 0xFFFF) & SCANCODE_KEYMASK; | 2007 keycode = keysym2scancode(vs->vd->kbd_layout, lsym & 0xFFFF, 2008 shift, altgr, ctrl) & SCANCODE_KEYMASK; |
2004 trace_vnc_key_event_map(down, sym, keycode, code2name(keycode)); 2005 do_key_event(vs, down, keycode, sym); 2006} 2007 2008static void ext_key_event(VncState *vs, int down, 2009 uint32_t sym, uint16_t keycode) 2010{ 2011 /* if the user specifies a keyboard layout, always use it */ --- 2150 unchanged lines hidden --- | 2009 trace_vnc_key_event_map(down, sym, keycode, code2name(keycode)); 2010 do_key_event(vs, down, keycode, sym); 2011} 2012 2013static void ext_key_event(VncState *vs, int down, 2014 uint32_t sym, uint16_t keycode) 2015{ 2016 /* if the user specifies a keyboard layout, always use it */ --- 2150 unchanged lines hidden --- |