Version: 4.0.84 (using Devel) Installed from: Compiled sources Compiler: gcc version 4.3.1 (Debian 4.3.1-5) OS: Linux I am running several virtual machines here using kvm and the internal qemu vnc server. I tried connecting with all of them using krdc and in all of them, I notice that it is not possible to send the '=' (equal) character. However, using vncviewer, it is possible, so this is probably a bug in krdc. Except from krdc 4.0.84 that I normally use, I have confirmed this bug also exists in trunk (kde 4.1.60, r832359).
I cannot reproduce this crash here. What keyboard layout are you using? Can you please try with another one to see if it will also happen there?
I am using us (altgr-intl) and greek (basic) layouts. The bug appeared first using us, but it is also possible to reproduce with greek too. This is the relevant configuration from my xorg.conf: Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc104" Option "XkbLayout" "us,gr" Option "XkbVariant" "altgr-intl,basic" Option "XkbOptions" "grp:alt_shift_toggle,lv3:ralt_switch,grp_led:scroll" EndSection Now, I just tried changing layout from kde's systemsettings and I am getting really weird results. First, at some point I was able to type '=' (using us default) but I had to press shift+= (which should give +, because + is above = on my keyboard (greek keyboard)). I managed that by having my linux guest (to which I am connecting using vnc) in a linux console. Then I run kde on the guest and I got again (normally) a + on the guest and no =. Anyway, the result is that this key (the +,= key next to backspace) never sends a character without shift! Second, typing various letters with greek on the host sends strange characters to the guest (but I guess this is expected). Third, pressing alt+shift to change layout while krdc has focus, results in assertion failure (probably a different bug, though; do I need to file another bug for that?). Backtrace here: #0 0x00007f728af9aeb5 in raise () from /lib/libc.so.6 #1 0x00007f728af9c3d3 in abort () from /lib/libc.so.6 #2 0x00007f728f708809 in qt_message_output (msgType=QtFatalMsg, buf=0x7fff99955e90 "ASSERT: \"i >= 0 && i < size()\" in file /home/gkiagia/qt-copy/include/QtCore/../../src/corelib/tools/qstring.h, line 650") at global/qglobal.cpp:2058 #3 0x00007f728f708918 in qFatal (msg=0x7f728f84d118 "ASSERT: \"%s\" in file %s, line %d") at global/qglobal.cpp:2260 #4 0x00007f728f708d25 in qt_assert (assertion=0x439f36 "i >= 0 && i < size()", file=0x439ee0 "/home/gkiagia/qt-copy/include/QtCore/../../src/corelib/tools/qstring.h", line=650) at global/qglobal.cpp:1828 #5 0x0000000000420fe7 in QString::at (this=0x7fff99958000, i=0) at /home/gkiagia/qt-copy/include/QtCore/../../src/corelib/tools/qstring.h:650 #6 0x000000000041ef59 in VncView::keyEvent (this=0x161cf80, e=0x7fff99958950) at /home/gkiagia/kde/src/KDE/kdenetwork/krdc/vnc/vncview.cpp:500 #7 0x000000000041e9c6 in VncView::keyPressEvent (this=0x161cf80, event=0x7fff99958950) at /home/gkiagia/kde/src/KDE/kdenetwork/krdc/vnc/vncview.cpp:517 #8 0x00007f728c4b7a70 in QWidget::event (this=0x161cf80, event=0x7fff99958950) at kernel/qwidget.cpp:6962 #9 0x00007f728c45fcd1 in QApplicationPrivate::notify_helper (this=0x13c6150, receiver=0x161cf80, e=0x7fff99958950) at kernel/qapplication.cpp:3772 #10 0x00007f728c460375 in QApplication::notify (this=0x7fff99959a00, receiver=0x161cf80, e=0x7fff99958950) at kernel/qapplication.cpp:3420 #11 0x00007f7290bdf55a in KApplication::notify (this=0x7fff99959a00, receiver=0x161cf80, event=0x7fff99958950) at /home/gkiagia/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:311 #12 0x00007f728f7fc19f in QCoreApplication::notifyInternal (this=0x7fff99959a00, receiver=0x161cf80, event=0x7fff99958950) at kernel/qcoreapplication.cpp:583 #13 0x00007f728c46bd8d in QCoreApplication::sendSpontaneousEvent (receiver=0x161cf80, event=0x7fff99958950) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218 #14 0x00007f728c4c423e in qt_sendSpontaneousEvent (receiver=0x161cf80, event=0x7fff99958950) at kernel/qapplication_x11.cpp:4680 #15 0x00007f728c4f85dc in QKeyMapper::sendKeyEvent (keyWidget=0x161cf80, grab=false, type=QEvent::KeyPress, code=-1, modifiers={i = -1718251920}, text=@0x7fff99958e10, autorepeat=false, count=1, nativeScanCode=50, nativeVirtualKey=65034, nativeModifiers=8) at kernel/qkeymapper_x11.cpp:1656 #16 0x00007f728c4f9972 in QKeyMapperPrivate::translateKeyEvent (this=0x13f4990, keyWidget=0x161cf80, event=0x7fff99959570, grab=false) at kernel/qkeymapper_x11.cpp:1627 #17 0x00007f728c4d34ae in QApplication::x11ProcessEvent (this=0x7fff99959a00, event=0x7fff99959570) at kernel/qapplication_x11.cpp:3148 #18 0x00007f728c4fbfea in x11EventSourceDispatch (s=0x13c97d0, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:148 #19 0x00007f728a1fb82b in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #20 0x00007f728a1feffd in ?? () from /usr/lib/libglib-2.0.so.0 #21 0x00007f728a1ff1bb in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #22 0x00007f728f828cf2 in QEventDispatcherGlib::processEvents (this=0x13c2b50, flags={i = -1718249424}) at kernel/qeventdispatcher_glib.cpp:325 #23 0x00007f728c4fb80f in QGuiEventDispatcherGlib::processEvents (this=0x13c2b50, flags={i = -1718249328}) at kernel/qguieventdispatcher_glib.cpp:204 #24 0x00007f728f7f9407 in QEventLoop::processEvents (this=0x7fff99959940, flags={i = -1718249232}) at kernel/qeventloop.cpp:149 #25 0x00007f728f7f9602 in QEventLoop::exec (this=0x7fff99959940, flags={i = -1718249136}) at kernel/qeventloop.cpp:196 #26 0x00007f728f7fca04 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:845 #27 0x00007f728c45fa2e in QApplication::exec () at kernel/qapplication.cpp:3304 #28 0x00000000004350f1 in main (argc=1, argv=0x7fff99959ea8) at /home/gkiagia/kde/src/KDE/kdenetwork/krdc/main.cpp:95
SVN commit 832970 by uwolfer: prevent assertion CCBUG:166542 M +1 -1 vncview.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=832970
After some hacking into the code, I managed to find out what the problem is... It seems that when = is pressed, krdc sends XK_KP_Equal over vnc, which it proves to be the wrong keysym to send... The correct key is XK_equal. Here is a patch that fixes my problem: Index: vnc/vncview.cpp =================================================================== --- vnc/vncview.cpp (revision 834013) +++ vnc/vncview.cpp (working copy) @@ -455,7 +455,7 @@ case Qt::Key_Space: k = XK_space; break; case Qt::Key_Delete: k = XK_Delete; break; case Qt::Key_Enter: k = XK_KP_Enter; break; - case Qt::Key_Equal: k = XK_KP_Equal; break; + case Qt::Key_Equal: k = XK_equal; break; case Qt::Key_Up: k = XK_Up; break; case Qt::Key_Down: k = XK_Down; break; case Qt::Key_Right: k = XK_Right; break;
SVN commit 834031 by uwolfer: Fix sending '=' char in some environments. Thanks to George Kiagiadakis for investigating and patch. BUG:166542 M +1 -1 vncview.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=834031