Bug 95977

Summary: XDarwin - unable to enter '*' in konsole
Product: [Applications] konsole Reporter: Mario Klebsch <mario>
Component: generalAssignee: Konsole Developer <konsole-devel>
Status: RESOLVED INTENTIONAL    
Severity: normal CC: patg
Priority: NOR    
Version: 1.4.2   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Mario Klebsch 2004-12-29 15:47:43 UTC
Version:            (using KDE KDE 3.3.2)
Installed from:    Compiled From Sources
Compiler:          gcc -3.2.2 
OS:                Linux

In konsole, I cannot enter '*'. This bug is not new, I saw it in kde-3.1.1a, too. I tried all other keys and they work fine.

I am running kde-3.3.2 my linux box, but the X server is XDarwin 1.3.0 (XFree86-4.3.99.903) running on my G4 Cube. everything was compiled from source, my keyboard layout is german. '+' and '*' are on the same key, '+' without shift, '*' with shift. '+' works fine, while '*' does not appear in the konsole. I can enter '*' in KDE dialog boxes and in konquerors URL-Field, it just does not work in konsole.

I tried to debug konsole. I compiled it with -g and started gdb on it, but when I set a breakpoint, the program always halted in the installed version of libkdeinit_konsole.so compiled without -g instead of the one in .lib, which was compiled with -g.

Unable to use a debugger, I startet do use the old-fashioned printf-method to debug the problem. :-( Why is this stuff so hard to debug?

TEmuVt102::onKeyPress( QKeyEvent* ev ) already did contain a printf line in a comment. After activating this line, I saw that pressing '*' does send an event, while pressing '*' does not.

Then I found TEWidget::eventFilter( QObject *obj, QEvent *e ) and added a printf statement there, which shows me the event type. I saw, that '*' does generate events.

For '+' I see four Events of type 51 (AccelOverride), followd by two of type 30 (Accel) and one of type 6 (KeyPress), which triggers the call to TEmuVt102::onKeyPress( QKeyEvent* ev ).

For '*', I see only two events of type 51  (AccelOverride).

I looked into the source code and found some locations, where events of type AccelOverride where cast to QKeyEvent. So I added a printf-statement to print state(), key() and text() of the AccelOverride-Events.

When pressing '+' (the key that works), the third and fourth AccelOverride-Event do have a text attached, which does hold the '+'.

When pressing '*', there are only two AccelOverride-Events are send.

Each AccelOvverride-Event do have the ASCII-Code (0x2b for '+', 0x2a for '*') as key(), state() is always 0.

I grepped the source of konsole and of the qt widgets for any code, that may generate AccelOverride-Events, but I did not find any. So, I am stranded in debugging this issue. :-(

Please help me.

73, Mario
Comment 1 Mario Klebsch 2004-12-29 18:45:01 UTC
I managed to trace this one down a little bit further. I was able to activate debug output of KAccel and got the following lines:

kdecore (KAccel): KAccelPrivate::eventFilter( AccelOverride ): this = 0x80cf158, key = Asterisk
kdecore (KAccel): shortcut found!

At application startup I found that a shortcut is registered:

kdecore (KAccel): KAccelBase::insertConnection( 0x80f31e8="next_session"; shortcut = Shift+Right )  this = 0x80cf180
kdecore (KAccel): KAccelPrivate::connectKey( "next_session", Shift+Asterisk = 0x20002a ): id = -14 m_pObjSlot = 0x80eec38

The first line is the result of a direct call in konsole.cpp which is done to register a shortcut for Shift+Right. KAccelBase::insertConnection() seems to do some internal magic, that modifies the key combination to be Shift-Asterisk. I have looked into KAccelBase::insertConnection() but I was not figure out yet, what is causing this change of key-combination.

73, Mario
Comment 2 Kurt Hindenburg 2005-01-09 09:08:15 UTC
If you think that next_session is causing your problem, comment out that line in konsole.cpp.

Around line 1080
//  new KAction(i18n("Go to Next Session"), QApplication::reverseLayout() ? Qt::SHIFT+Qt::Key_Left : Qt::SHIFT+Qt::Key_Right,
//              this, SLOT(nextSession()), m_shortcuts, "next_session");
Comment 3 Thiago Macieira 2005-08-22 02:57:04 UTC
*** Bug 111034 has been marked as a duplicate of this bug. ***
Comment 4 Kurt Hindenburg 2006-11-18 21:08:55 UTC
I installed the KDE4 snapshot on my G4 10.4.8.  * works for me on the US keyboard.

Could you try and use the US keyboard layout and see if that helps.  I'm just guessing really.

http://ranger.users.finkproject.org/kde/index.php/Home
Comment 5 Jason Kinner 2007-03-05 18:47:14 UTC
I get this when I create a second session, but not in my initial session.  My environment is X11 on OS X (XFree86 4.4.0) going to a NoMachine session on RHEL3.

KeyPress event, serial 25, synthetic NO, window 0x2400001,
    root 0x77, subw 0x0, time 589597959, (-311,327), root:(448,347),
    state 0x1, keycode 36 (keysym 0x2a, asterisk), same_screen YES,
    XLookupString gives 1 bytes:  "*"
Comment 6 Kurt Hindenburg 2009-02-22 04:25:12 UTC
Reopen if you duplicate this in KDE 4.