1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
commit 45fb5561be6e828c78180c781f74d0ae9d1c3ea4
Author: Timothy Pearson <[email protected]>
Date: 1326230757 -0600
Enable xtest support flag
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b832a92..f4d11ac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65,6 +65,7 @@ option( WITH_XRANDR "Enable xrandr support" OFF )
option( WITH_XRENDER "Enable xrender support" OFF )
option( WITH_XDAMAGE "Enable xdamage support" OFF )
option( WITH_XEXT "Enable xext support" OFF )
+option( WITH_XTEST "Enable xext support" OFF )
option( WITH_LIBUSB "Enable control of some mouse models through libusb" OFF )
option( WITH_LIBRAW1394 "Enable visualization of ieee1394 devices through libraw1394" OFF )
option( WITH_SUDO_KDESU_BACKEND "Use sudo as backend for kdesu (default is su)" OFF )
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 7b7a1b4..df892e1 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -100,12 +100,25 @@ endif( )
# xext (kwin/kompmgr)
if( WITH_XEXT )
pkg_search_module( XEXT xext )
- if( NOT XEXT_FOUND )
+ if( XEXT_FOUND )
+ set( HAVE_XEXT 1 )
+ else( XEXT_FOUND )
tde_message_fatal( "xext is requested, but was not found on your system" )
endif( )
endif( )
+# xtest (kxkb)
+if( WITH_XTEST )
+ pkg_search_module( XTEST xtst )
+ if( XTEST_FOUND )
+ set( HAVE_XTEST 1 )
+ else( XTEST_FOUND )
+ tde_message_fatal( "xtest is requested, but was not found on your system" )
+ endif( )
+endif( )
+
+
# GL
if( BUILD_KDESKTOP OR BUILD_KCONTROL OR BUILD_KSCREENSAVER )
check_library_exists( GL glXChooseVisual "" HAVE_GLXCHOOSEVISUAL )
diff --git a/config.h.cmake b/config.h.cmake
index d72a96c..a8de2fa 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -18,6 +18,9 @@
// konsole, kdm, kxkb
#cmakedefine HAVE_XKB 1
+// kxkb
+#cmakedefine HAVE_XTEST 1
+
// kdm, kioslave
#cmakedefine HAVE_TERMIOS_H 1
diff --git a/kxkb/CMakeLists.txt b/kxkb/CMakeLists.txt
index 703591a..f36a003 100644
--- a/kxkb/CMakeLists.txt
+++ b/kxkb/CMakeLists.txt
@@ -22,6 +22,7 @@ include_directories(
link_directories(
${TQT_LIBRARY_DIRS}
+ ${XTEST_LIBDIR}
)
@@ -39,7 +40,7 @@ tde_add_kpart( kcm_keyboard AUTOMOC
extension.cpp x11helper.cpp rules.cpp kxkbconfig.cpp
pixmap.cpp kcmlayout.cpp kcmlayoutwidget.ui
kcmmisc.cpp kcmmiscwidget.ui
- LINK kio-shared xkbfile
+ LINK kio-shared xkbfile ${XTEST_LIBRARIES}
DESTINATION ${PLUGIN_INSTALL_DIR}
)
diff --git a/kxkb/kcmmisc.cpp b/kxkb/kcmmisc.cpp
index b4c18a4..8850d89 100644
--- a/kxkb/kcmmisc.cpp
+++ b/kxkb/kcmmisc.cpp
@@ -344,6 +344,21 @@ int xkb_set_off()
return 1;
}
+int xkb_state()
+ {
+ 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;
+ return numlockState;
+ }
+
int xkb_toggle()
{
unsigned int mask;
@@ -443,7 +458,14 @@ void numlock_toggle()
return;
#endif
#ifdef HAVE_XTEST
+#ifdef HAVE_XKB
+ if (xkb_state())
+ xtest_set_on();
+ else
+ xtest_set_off();
+#else // HAVE_XKB
xtest_toggle();
+#endif // HAVE_XKB
#endif
}
// This code is taken from xset utility from XFree 4.3 (http://www.xfree86.org/)
--- kdebase/khotkeys/shared/CMakeLists.txt.ORI 2012-01-14 21:49:34.423813010 +0100
+++ kdebase/khotkeys/shared/CMakeLists.txt 2012-01-14 21:53:23.915008098 +0100
@@ -36,6 +36,6 @@
tde_add_library( ${target} SHARED AUTOMOC
SOURCES ${${target}_SRCS}
VERSION 1.0.0
- LINK kio-shared
+ LINK kio-shared ${XTEST_LIBRARIES}
DESTINATION ${LIB_INSTALL_DIR}
)
|