Bug 1263076

Summary: When CapsLock is on, letter input not as expected
Product: Red Hat Enterprise Linux 7 Reporter: Han Han <hhan>
Component: virt-viewerAssignee: Pavel Grunt <pgrunt>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: low Docs Contact:
Priority: medium    
Version: 7.2CC: dblechte, hhan, juzhou, mxie, mzhan, pgrunt, rbalakri, rmeggins, tzheng, xiaodwan
Target Milestone: rc   
Target Release: 7.3   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-02-19 13:43:22 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1256895    
Bug Blocks:    

Description Han Han 2015-09-15 06:03:37 UTC
Description of problem:
When CapLock is on, input letters directly will get lower case results in virt-virwer.

Version-Release number of selected component (if applicable):
spice-glib-0.26-5.el7.x86_64
spice-vdagent-0.14.0-10.el7.x86_64
spice-gtk-0.26-5.el7.x86_64
spice-server-0.12.4-14.el7.x86_64
spice-gtk3-0.26-5.el7.x86_64
virt-viewer-2.0-6.el7.x86_64
libvirt-1.2.17-8.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Prepare a running RHEL7 or Fedora22 domain.
# virsh list 
 Id    Name                           State
----------------------------------------------------
 14    t50                            running

2. Connect domain with virt-viewer in spice protocol. And switch to no-GUI console(such as tty2). Open CapsLock, input 'r' letter for four times, it shows rrRR in virt-viewer.
# virt-virwer t50 --spice-debug

Debug info:
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:160 New session (compiled from package spice-gtk 0.26)
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:164 Supported channels: main, display, inputs, cursor, playback, record, smartcard, usbredir
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xde2940
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xd076e0
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xd07630
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 main-1:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1959 main-1:0: new main channel, switching
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:975 Changing main channel from (nil) to 0xe25c30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2455 main-1:0: Open coroutine starting 0xe25c30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2289 main-1:0: Started background coroutine 0xe252b0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1766 connecting 0x7f7f122a1a50...
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1841 open host 127.0.0.1:5901
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1752 connect ready
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1167 main-1:0: channel type 1 id 0 num common caps 1 num caps 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1190 main-1:0: Peer version: 2:2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1724 main-1:0: spice_channel_recv_link_msg: 2 caps
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1734 main-1:0: got common caps 0:0xB
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1740 main-1:0: got channel caps 0:0x9
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 2 in 0xB: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 3 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1769 main-1:0: use mini header: 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1104 main-1:0: channel up, state 2
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:2048 set mm time: 94234158
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:2051 spice_session_set_mm_time: mm-time-reset, old 94234558, new 94234158
(virt-viewer:4787): GSpice-DEBUG: channel-main.c:1450 server name: t50
(virt-viewer:4787): GSpice-DEBUG: channel-main.c:1461 server uuid: a2bb961a-f7d3-41a3-8f04-fda82d316f84
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 usbredir-9:1: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 usbredir-9:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 record-6:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 playback-5:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-pulse.c:103 spice_pulse_dispose
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 cursor-4:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 display-2:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:135 inputs-3:0: spice_channel_constructed
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x0, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2455 usbredir-9:1: Open coroutine starting 0xec8e40
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2289 usbredir-9:1: Started background coroutine 0xec84c0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2455 usbredir-9:0: Open coroutine starting 0xed0440
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2289 usbredir-9:0: Started background coroutine 0xecfac0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2455 display-2:0: Open coroutine starting 0xebc4e0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2289 display-2:0: Started background coroutine 0xebbb60
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1766 connecting 0x7f7f112a1a50...
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1841 open host 127.0.0.1:5901
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1766 connecting 0x7f7f102a1a50...
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1841 open host 127.0.0.1:5901
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1766 connecting 0x7f7f0f2a1a50...
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1841 open host 127.0.0.1:5901
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1752 connect ready
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1167 usbredir-9:1: channel type 9 id 1 num common caps 1 num caps 0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1752 connect ready
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1167 usbredir-9:0: channel type 9 id 0 num common caps 1 num caps 0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1752 connect ready
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1167 display-2:0: channel type 2 id 0 num common caps 1 num caps 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1190 usbredir-9:0: Peer version: 2:2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1724 usbredir-9:0: spice_channel_recv_link_msg: 1 caps
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1734 usbredir-9:0: got common caps 0:0xB
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 2 in 0xB: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 3 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1769 usbredir-9:0: use mini header: 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1190 usbredir-9:1: Peer version: 2:2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1724 usbredir-9:1: spice_channel_recv_link_msg: 1 caps
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1734 usbredir-9:1: got common caps 0:0xB
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 2 in 0xB: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 3 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1769 usbredir-9:1: use mini header: 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1190 display-2:0: Peer version: 2:2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1724 display-2:0: spice_channel_recv_link_msg: 2 caps
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1734 display-2:0: got common caps 0:0xB
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1740 display-2:0: got channel caps 0:0x12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 2 in 0xB: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 3 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1769 display-2:0: use mini header: 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1104 usbredir-9:0: channel up, state 2
(virt-viewer:4787): GSpice-DEBUG: channel-usbredir.c:495 usbredir-9:0: usbredirparser: Peer version: qemu usb-redir guest 2.3.0, using 64-bits ids
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1104 usbredir-9:1: channel up, state 2
(virt-viewer:4787): GSpice-DEBUG: channel-usbredir.c:495 usbredir-9:1: usbredirparser: Peer version: qemu usb-redir guest 2.3.0, using 64-bits ids
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1104 display-2:0: channel up, state 2
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:799 display-2:0: spice_display_channel_up: cache_size 83886080, glz_window_size 25161728 (bytes)
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2041 mouse mode 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2455 inputs-3:0: Open coroutine starting 0xebcf30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2289 inputs-3:0: Started background coroutine 0xebc5b0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2455 cursor-4:0: Open coroutine starting 0xec6da0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2289 cursor-4:0: Started background coroutine 0xec6420
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1766 connecting 0x7f7f0e2a1a50...
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1841 open host 127.0.0.1:5901
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1766 connecting 0x7f7f0d2a1a50...
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1841 open host 127.0.0.1:5901
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1752 connect ready
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1167 inputs-3:0: channel type 3 id 0 num common caps 1 num caps 0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1752 connect ready
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1167 cursor-4:0: channel type 4 id 0 num common caps 1 num caps 0
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:1646 primary flags: 1
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:651 display-2:0: Create primary canvas
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:267 update monitor area 0:0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:280 update monitor: no monitor 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0x12: yes
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:283 waiting until MonitorsConfig is received
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0x12: yes
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:1712 display-2:0: monitors config: n: 1/4
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:1732 display-2:0: monitor id: 0, surface id: 0, +0+0-1024x768
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2041 mouse mode 1
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:427 display-2:0: get primary 0x7f7f0bfa1010
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:267 update monitor area 0:1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:280 update monitor: no monitor 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0x12: yes
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:283 waiting until MonitorsConfig is received
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 0, 0:1 0xda2790
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:1, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:1, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2041 mouse mode 1
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:427 display-2:0: get primary 0x7f7f0bfa1010
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:267 update monitor area 0:2
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:280 update monitor: no monitor 2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0x12: yes
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:283 waiting until MonitorsConfig is received
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 0, 0:2 0xda2a20
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:2, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:2, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2041 mouse mode 1
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:427 display-2:0: get primary 0x7f7f0bfa1010
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:267 update monitor area 0:3
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:280 update monitor: no monitor 3
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0x12: yes
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:283 waiting until MonitorsConfig is received
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 0, 0:3 0xda2cb0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:3, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:3, guest +0+0:0x0, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:267 update monitor area 0:0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2083 update area, primary: 1024x768, area: +0+0 1024x768
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:1024x768, window 0x0, zoom 1
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:849 display-2:0: display_handle_mark
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 1, 0:0 0xda2500
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1447 focus_in_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1247 release_keys
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x0, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1447 focus_in_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1447 focus_in_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1447 focus_in_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1447 focus_in_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1447 focus_in_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:1024x768, window 1x1, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 1, 0:1 0xda2790
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 1, 0:2 0xda2a20
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2177 widget mark: 1, 0:3 0xda2cb0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1190 inputs-3:0: Peer version: 2:2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1724 inputs-3:0: spice_channel_recv_link_msg: 2 caps
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1734 inputs-3:0: got common caps 0:0xB
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1740 inputs-3:0: got channel caps 0:0x1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 2 in 0xB: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 3 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1769 inputs-3:0: use mini header: 1
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1049 recalc geom monitor: 0:0, guest +0+0:1024x768, window 1024x768, zoom 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1190 cursor-4:0: Peer version: 2:2
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1724 cursor-4:0: spice_channel_recv_link_msg: 1 caps
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1734 cursor-4:0: got common caps 0:0xB
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 2 in 0xB: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 1 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 3 in 0xB: yes
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1769 cursor-4:0: use mini header: 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1104 inputs-3:0: channel up, state 2
(virt-viewer:4787): GSpice-DEBUG: channel-base.c:81 main-1:0: spice_channel_handle_notify -- warn!!! #0: keyboard channel is insecure
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:1104 cursor-4:0: channel up, state 2
(virt-viewer:4787): GSpice-DEBUG: channel-cursor.c:309 cursor-4:0: set_cursor: flags 1, size 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event press: keycode: 66  state: 0  group 0 modifier 1
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode:  scancode 58
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x4, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event release: keycode: 66  state: 2  group 0 modifier 1
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode: release scancode 58
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event press: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event release: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0x1: yes
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode:  scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode: release scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event press: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode:  scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x4, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event release: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode: release scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event press: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode:  scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event release: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode: release scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event press: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1321 key_event release: keycode: 27  state: 2  group 0 modifier 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2696 test cap 0 in 0x1: yes
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode:  scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-util.c:272 spice_make_scancode: release scancode 19
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x4, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x4, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1471 focus_out_event
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:1247 release_keys
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 inputs-3:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 inputs-3:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2433 inputs-3:0: Coroutine exit inputs-3:0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 display-2:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 display-2:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2433 display-2:0: Coroutine exit display-2:0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 cursor-4:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 cursor-4:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2433 cursor-4:0: Coroutine exit cursor-4:0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 playback-5:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 playback-5:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 playback-5:0: spice_channel_dispose 0xebea30
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 playback-5:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 playback-5:0: spice_channel_finalize 0xebea30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 record-6:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 record-6:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 record-6:0: spice_channel_dispose 0xc45930
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 record-6:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 record-6:0: spice_channel_finalize 0xc45930
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 usbredir-9:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 usbredir-9:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2433 usbredir-9:0: Coroutine exit usbredir-9:0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 usbredir-9:1: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 usbredir-9:1: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2433 usbredir-9:1: Coroutine exit usbredir-9:1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2060 main-1:0: channel destroy
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 main-1:0: channel disconnect 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2433 main-1:0: Coroutine exit main-1:0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:160 New session (compiled from package spice-gtk 0.26)
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:164 Supported channels: main, display, inputs, cursor, playback, record, smartcard, usbredir
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xeda8b0
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xeda910
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xea3830
(virt-viewer:4787): GSpice-DEBUG: channel-display.c:766 display-2:0: keeping exisiting primary surface, migration or reset
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 0
(virt-viewer:4787): GSpice-DEBUG: channel-main.c:1351 agent connected: no
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2181 inputs-3:0: Delayed unref channel 0xebcf30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 inputs-3:0: spice_channel_dispose 0xebcf30
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:2433 channel_destroy 0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 inputs-3:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 inputs-3:0: spice_channel_finalize 0xebcf30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2181 display-2:0: Delayed unref channel 0xebc4e0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 display-2:0: spice_channel_dispose 0xebc4e0
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:423 Finalize spice display
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:423 Finalize spice display
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:423 Finalize spice display
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:404 spice display dispose
(virt-viewer:4787): GSpice-DEBUG: spice-widget.c:423 Finalize spice display
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 display-2:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 display-2:0: spice_channel_finalize 0xebc4e0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2181 cursor-4:0: Delayed unref channel 0xec6da0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 cursor-4:0: spice_channel_dispose 0xec6da0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 cursor-4:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 cursor-4:0: spice_channel_finalize 0xec6da0
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2181 usbredir-9:0: Delayed unref channel 0xed0440
(virt-viewer:4787): GSpice-DEBUG: channel-usbredir.c:402 usbredir-9:0: disconnecting device from usb channel 0xed0440
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 usbredir-9:0: spice_channel_dispose 0xed0440
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 usbredir-9:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 usbredir-9:0: spice_channel_finalize 0xed0440
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2181 usbredir-9:1: Delayed unref channel 0xec8e40
(virt-viewer:4787): GSpice-DEBUG: channel-usbredir.c:402 usbredir-9:1: disconnecting device from usb channel 0xec8e40
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 usbredir-9:1: spice_channel_dispose 0xec8e40
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 usbredir-9:1: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 usbredir-9:1: spice_channel_finalize 0xec8e40
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2181 main-1:0: Delayed unref channel 0xe25c30
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:153 main-1:0: spice_channel_dispose 0xe25c30
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 1
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:179 session dispose
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 1
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:160 New session (compiled from package spice-gtk 0.26)
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:164 Supported channels: main, display, inputs, cursor, playback, record, smartcard, usbredir
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xf75d20
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xf30f70
(virt-viewer:4787): GSpice-DEBUG: usb-device-manager.c:874 device added 0xec35e0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 0
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:179 session dispose
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:2658 main-1:0: channel disconnect 12
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:179 session dispose
(virt-viewer:4787): GSpice-DEBUG: spice-session.c:1640 session: disconnecting 1
(virt-viewer:4787): GSpice-DEBUG: spice-channel.c:177 main-1:0: spice_channel_finalize 0xe25c30


Actual results:
As step2

Expected results:
Show right letters in virt-viewer.

Additional info:
In step2, try Shift+r will get upper-case letters, which is expected lower-case.
When CapsLock off, not reproduced.
Not reproduced with vnc.

Comment 2 Pavel Grunt 2015-09-15 14:39:40 UTC
the problem is probably in the guest

(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x4, guest_modifiers:0x0
(virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0: client_modifiers:0x4, guest_modifiers:0x0

these ^ lines mean that your client has capslock on but the guest doesn't.. spice tries to set capslock on the guest, but for some reason it is not successful.
Can you check if it is not happening in your client (real machine) as well - if led indicating capslock on your keyboard changes in tty2 ?

Comment 3 Han Han 2015-09-16 01:37:03 UTC
(In reply to Pavel Grunt from comment #2)
> the problem is probably in the guest
> 
> (virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0:
> client_modifiers:0x4, guest_modifiers:0x0
> (virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0:
> client_modifiers:0x4, guest_modifiers:0x0
> 
> these ^ lines mean that your client has capslock on but the guest doesn't..
> spice tries to set capslock on the guest, but for some reason it is not
> successful.
> Can you check if it is not happening in your client (real machine) as well -
> if led indicating capslock on your keyboard changes in tty2 ?

When bug reproduced, I switch to host tty2, the CapsLock is not opened and it always shows lower-case in tty2 though the keyboard light is on. In desktop CapsLock is on and the letters is upper-case.

Comment 4 Pavel Grunt 2015-09-18 08:07:49 UTC
(In reply to Han Han from comment #3)
> (In reply to Pavel Grunt from comment #2)
> > the problem is probably in the guest
> > 
> > (virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0:
> > client_modifiers:0x4, guest_modifiers:0x0
> > (virt-viewer:4787): GSpice-DEBUG: spice-gtk-session.c:174 inputs-3:0:
> > client_modifiers:0x4, guest_modifiers:0x0
> > 
> > these ^ lines mean that your client has capslock on but the guest doesn't..
> > spice tries to set capslock on the guest, but for some reason it is not
> > successful.
> > Can you check if it is not happening in your client (real machine) as well -
> > if led indicating capslock on your keyboard changes in tty2 ?
> 
> When bug reproduced, I switch to host tty2, the CapsLock is not opened and
> it always shows lower-case in tty2 though the keyboard light is on. In
> desktop CapsLock is on and the letters is upper-case.

And spice server is taking into account the led / "keyboard light". If the light does not change, the spice server has no info that capslock changed.
So your problem is caused by the bug 1256895

Comment 5 mxie@redhat.com 2015-09-23 09:48:17 UTC
This bug also be found when input letters on ubuntu via virt-manager, when CapLock is on, input letters will get lower case result 

Related packages as below 
libvirt-1.2.17-9.el7.x86_64
qemu-kvm-rhev-2.3.0-24.el7.x86_64/
virt-manager-1.2.1-7.el7.noarch
ubuntu-14.04.3-server-amd64
ubuntu-15.04-server-amd64

or 

libvirt-1.2.17-9.el7.x86_64
qemu-kvm-1.5.3-103.el7.x86_64
virt-manager-1.2.1-7.el7.noarch
ubuntu-14.04.3-server-i386
ubuntu-15.04-server-i386
Host:RHEL-7.2-20150917.0

How reproducible:
100%

Steps to Reproduce:
1.Install ubuntu via virt-manager
2.After installation, Open CapsLock and input letters on ubuntu, such as input letter “r“ four times, it shows "RRrr"

Comment 7 Rich Megginson 2016-01-15 17:15:53 UTC
This happens to me - using Fedora 22 host, virt-viewer 2.0-1, running Centos7 guest, no gui, just plain terminal.  The capslock state will randomly toggle on or off, which leADS TO TYpinG LIke thiS.  It doesn't matter if the Caps Lock key is toggled on or off - the state randomly changes.  There is no problem on the host itself - caps lock works as it should.  The problem only happens when using virt-viewer to type in a VM.  Ever tried to use vim when the capslock state keeps toggling?  Ever tried to type in a password?  It is not fun.

Comment 8 Rich Megginson 2016-01-15 17:21:58 UTC
Is there some way to work around this?
Is there some way I can just completely disable capslock in the VM?
Help!

Comment 9 David Blechter 2016-02-19 13:43:22 UTC
this bug looks like the DUPl of the one in the driver (1256895).

*** This bug has been marked as a duplicate of bug 1256895 ***

Comment 10 Pavel Grunt 2016-03-07 10:29:24 UTC
(In reply to Rich Megginson from comment #8)
> Is there some way to work around this?

Hi, if you need a terminal you can ssh to the vm instead of using virt-viewer.

> Is there some way I can just completely disable capslock in the VM?
> Help!

Comment 11 Rich Megginson 2016-03-07 14:16:42 UTC
(In reply to Pavel Grunt from comment #10)
> (In reply to Rich Megginson from comment #8)
> > Is there some way to work around this?
> 
> Hi, if you need a terminal you can ssh to the vm instead of using
> virt-viewer.
> 
> > Is there some way I can just completely disable capslock in the VM?
> > Help!

The problem is that if the vm setup/cloud-init process dies before the login/ssh can be set up, the only way in is via the virt-viewer.