[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: PATCH for keypad shortcuts
From: Ellis Whitehead <kde () ellisw ! net>
Date: 2001-07-29 13:35:47
[Download RAW message or body]
This patch makes Plus/Minus/Slash/Asterisk shortcuts available on both the
main keyboard and the keypad. This is at the request for the keypad plus key
to work in KMail from kdelibs.
Ellis
["kaccel.cpp.patch" (text/x-diff)]
Index: kdecore/kaccel.cpp
===================================================================
RCS file: /home/kde/kdelibs/kdecore/kaccel.cpp,v
retrieving revision 1.92
diff -u -3 -d -p -r1.92 kaccel.cpp
--- kdecore/kaccel.cpp 2001/07/18 03:46:55 1.92
+++ kdecore/kaccel.cpp 2001/07/29 13:29:24
@@ -117,6 +117,7 @@ void KAccel::connectItem( const QString&
const QObject* receiver, const char *member,
bool activate )
{
+ kdDebug(125) << "connectItem( " << action << " )" << endl;
if (action.isNull()) return;
if (!aKeyMap.contains(action)) {
kdWarning(125) << "cannot connect action " << action
@@ -139,6 +140,9 @@ void KAccel::connectItem( const QString&
}
if ( !activate ) setItemEnabled( action, false );
+
+ if( aKeyMap.contains( action + " (Alternate)" ) )
+ connectItem( action + " (Alternate)", receiver, member, activate );
}
void KAccel::connectItem( KStdAccel::StdAccel accel,
@@ -212,23 +216,38 @@ bool KAccel::insertItem( const QString&
}
bool KAccel::insertItem( const QString& descr, const QString& action,
- KKey defaultKeyCode3, KKey defaultKeyCode4,
+ KKey defaultKeyCode3, KKey /*defaultKeyCode4*/,
int id, QPopupMenu *qmenu, bool configurable)
{
- kdDebug(125) << QString( "insertItem("+action+", 0x%1, 0x%2)\n" \
).arg(defaultKeyCode3.key(),0,16).arg(defaultKeyCode4.key(),0,16); + kdDebug(125) \
<< QString( "insertItem( "+action+", key = 0x%1, id = %2 )\n" \
).arg(defaultKeyCode3.key(),0,16).arg(id);
if (aKeyMap.contains(action))
removeItem( action );
KKeyEntry entry;
- // If this is an application shortcut, make sure that we are really
+ // Make sure that we are really
// using the right modifier combination by converting to it's X equivalent
// and back. Neccessary for punctuation keys on varying layouts.
- if( id ) {
- uint keySymX, keyModX;
+ if( !action.contains( "Alternate" ) ) {
+ uint keySymX, keyModX, keyCombQt;
keyQtToKeyX( defaultKeyCode3.key(), 0, &keySymX, &keyModX );
- defaultKeyCode3 = keySymXToKeyQt( keySymX, keyModX );
+ keyCombQt = keySymXToKeyQt( keySymX, keyModX );
+
+ if( keyCombQt != defaultKeyCode3.key() )
+ insertItem( descr, action + " (Alternate)", keyCombQt, keyCombQt, id, qmenu, false \
); + // If key has Shift modifier, we may want to remove it to allow
+ // for keypad accelerator too.
+ else if( keyCombQt & Qt::SHIFT ) {
+ switch( keyCombQt & 0xffff ) {
+ case Qt::Key_Plus:
+ case Qt::Key_Minus:
+ case Qt::Key_Slash:
+ case Qt::Key_Asterisk:
+ insertItem( descr, action + " (Alternate)", keyCombQt & ~Qt::SHIFT, keyCombQt & \
~Qt::SHIFT, id, qmenu, false ); + break;
+ }
+ }
}
entry.aDefaultKeyCode = defaultKeyCode3.key();
@@ -661,7 +680,7 @@ static const TransKey g_aTransKeySyms[]
{ Qt::Key_Backspace, XK_BackSpace },
{ Qt::Key_Backtab, XK_ISO_Left_Tab },
{ Qt::Key_Enter, XK_KP_Enter },
- { Qt::Key_SysReq, XK_Sys_Req },
+ //{ Qt::Key_SysReq, XK_Sys_Req },
{ Qt::Key_CapsLock, XK_Caps_Lock },
{ Qt::Key_NumLock, XK_Num_Lock },
{ Qt::Key_ScrollLock, XK_Scroll_Lock }
@@ -864,8 +883,8 @@ uint KAccel::stringToKey( const QString&
// Search for Qt keycode
for( i = 0; i < NB_KEYS; i++ ) {
if( stricmp( sKeySym.ascii(), KKEYS[i].name ) == 0 ) {
- keyCombQt |= KKEYS[i].code;
- keyQtToKeyX( KKEYS[i].code, 0, &keySymX, 0 );
+ keyCombQt |= (KKEYS[i].code != Qt::Key_SysReq) ? KKEYS[i].code : \
Qt::Key_Print; + keyQtToKeyX( keyCombQt & 0xffff, 0, &keySymX, 0 );
if( KKEYS[i].code < 0x1000 && QChar(KKEYS[i].code).isLetter() )
c = KKEYS[i].code;
break;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic