[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/trinity/kdebase/kxkb
From: Timothy Pearson <kb9vqf () pearsoncomputing ! net>
Date: 2011-10-27 15:39:53
Message-ID: 20111027153953.A21FDAC889 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1261045 by tpearson:
Sync kxkb with the latest numlockx sources
This is related to Bug 561, but may not be sufficient to close it
M +50 -14 kcmmisc.cpp
--- branches/trinity/kdebase/kxkb/kcmmisc.cpp #1261044:1261045
@@ -235,6 +235,8 @@
NumLockX
+ $Id$
+
Copyright (C) 2000-2001 Lubos Lunak <l.lunak@kde.org>
Copyright (C) 2001 Oswald Buddenhagen <ossi@kde.org>
@@ -265,15 +267,15 @@
#endif
#ifdef HAVE_XKB
-#define explicit myexplicit
#include <X11/XKBlib.h>
-#undef explicit
#endif
#include <X11/keysym.h>
#if defined(HAVE_XTEST) || defined(HAVE_XKB)
+Display* dpy = qt_xdisplay();
+
/* the XKB stuff is based on code created by Oswald Buddenhagen <ossi@kde.org> */
#ifdef HAVE_XKB
int xkb_init()
@@ -282,7 +284,7 @@
int xkb_lmaj = XkbMajorVersion;
int xkb_lmin = XkbMinorVersion;
return XkbLibraryVersion( &xkb_lmaj, &xkb_lmin )
- && XkbQueryExtension( qt_xdisplay(), &xkb_opcode, &xkb_event, &xkb_error,
+ && XkbQueryExtension( dpy, &xkb_opcode, &xkb_event, &xkb_error,
&xkb_lmaj, &xkb_lmin );
}
@@ -309,7 +311,7 @@
unsigned int xkb_numlock_mask()
{
XkbDescPtr xkb;
- if(( xkb = XkbGetKeyboard( qt_xdisplay(), XkbAllComponentsMask, XkbUseCoreKbd )) \
!= NULL ) + if(( xkb = XkbGetKeyboard( dpy, XkbAllComponentsMask, XkbUseCoreKbd )) \
!= NULL ) {
unsigned int mask = xkb_mask_modifier( xkb, "NumLock" );
XkbFreeKeyboard( xkb, 0, True );
@@ -326,7 +328,7 @@
mask = xkb_numlock_mask();
if( mask == 0 )
return 0;
- XkbLockModifiers ( qt_xdisplay(), XkbUseCoreKbd, mask, mask);
+ XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, mask);
return 1;
}
@@ -338,9 +340,29 @@
mask = xkb_numlock_mask();
if( mask == 0 )
return 0;
- XkbLockModifiers ( qt_xdisplay(), XkbUseCoreKbd, mask, 0);
+ XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, 0);
return 1;
}
+
+int xkb_toggle()
+ {
+ unsigned int mask;
+ unsigned int numlockState;
+ XkbStateRec xkbState;
+ if( !xkb_init())
+ return 0;
+ mask = xkb_numlock_mask();
+ if( mask == 0 )
+ return 0;
+ XkbGetState( dpy, XkbUseCoreKbd, &xkbState);
+ numlockState = xkbState.locked_mods & mask;
+ if (numlockState)
+ XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, 0);
+ else
+ XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, mask);
+ return 1;
+ }
+
#endif
#ifdef HAVE_XTEST
@@ -351,10 +373,10 @@
Window dummy1, dummy2;
int dummy3, dummy4, dummy5, dummy6;
unsigned int mask;
- KeyCode numlock_keycode = XKeysymToKeycode( qt_xdisplay(), XK_Num_Lock );
+ XModifierKeymap* map = XGetModifierMapping( dpy );
+ KeyCode numlock_keycode = XKeysymToKeycode( dpy, XK_Num_Lock );
if( numlock_keycode == NoSymbol )
return 0;
- XModifierKeymap* map = XGetModifierMapping( qt_xdisplay() );
for( i = 0;
i < 8;
++i )
@@ -362,7 +384,7 @@
if( map->modifiermap[ map->max_keypermod * i ] == numlock_keycode )
numlock_mask = 1 << i;
}
- XQueryPointer( qt_xdisplay(), DefaultRootWindow( qt_xdisplay() ), &dummy1, \
&dummy2, + XQueryPointer( dpy, DefaultRootWindow( dpy ), &dummy1, &dummy2,
&dummy3, &dummy4, &dummy5, &dummy6, &mask );
XFreeModifiermap( map );
return mask & numlock_mask;
@@ -370,8 +392,8 @@
void xtest_change_numlock()
{
- XTestFakeKeyEvent( qt_xdisplay(), XKeysymToKeycode( qt_xdisplay(), XK_Num_Lock \
), True, CurrentTime );
- XTestFakeKeyEvent( qt_xdisplay(), XKeysymToKeycode( qt_xdisplay(), XK_Num_Lock \
), False, CurrentTime ); + XTestFakeKeyEvent( dpy, XKeysymToKeycode( dpy, \
XK_Num_Lock ), True, CurrentTime ); + XTestFakeKeyEvent( dpy, XKeysymToKeycode( \
dpy, XK_Num_Lock ), False, CurrentTime ); }
void xtest_set_on()
@@ -385,6 +407,11 @@
if( xtest_get_numlock_state())
xtest_change_numlock();
}
+
+void xtest_toggle()
+ {
+ xtest_change_numlock();
+ }
#endif
void numlock_set_on()
@@ -409,6 +436,18 @@
#endif
}
+void numlock_toggle()
+ {
+#ifdef HAVE_XKB
+ if( xkb_toggle())
+ return;
+#endif
+#ifdef HAVE_XTEST
+ xtest_toggle();
+#endif
+ }
+// This code is taken from xset utility from XFree 4.3 (http://www.xfree86.org/)
+
void numlockx_change_numlock_state( bool set_P )
{
if( set_P )
@@ -421,9 +460,6 @@
#endif // defined(HAVE_XTEST) || defined(HAVE_XKB)
-// This code is taken from xset utility from XFree 4.3 (http://www.xfree86.org/)
-
-
#if 0
//HAVE_XF86MISC
#include <X11/extensions/xf86misc.h>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic