summaryrefslogtreecommitdiff
path: root/x11/kde4-runtime/files/patch-kxkb_rules.cpp
blob: c76490862b0fc7cc38bc2909aeb61456a1233270 (plain) (blame)
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
===================================================================
RCS file: /usr/repos/kde/kdebase/kxkb/rules.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -p -r1.37 -r1.38
--- kxkb/rules.cpp	2003/10/24 06:15:26	1.37
+++ kxkb/rules.cpp	2004/06/28 14:19:03	1.38
@@ -16,11 +16,23 @@
 
 #include "rules.h"
 
-const QString X11_DIR( "/usr/X11R6/lib/X11/" );
+const char* X11DirList[2] = {"/usr/X11R6/lib/X11/", "/usr/local/X11R6/lib/X11/"};
+const char* rulesFileList[2] = {"xkb/rules/xfree86", "xkb/rules/xorg"};
 
-KeyRules::KeyRules(QString rule):
+KeyRules::KeyRules():
     m_layouts(90)
 {
+  for(int ii=0; ii<2; ii++)
+    if( QDir(X11DirList[ii]).exists() ) {
+	X11_DIR = X11DirList[ii];
+	break;
+    }
+
+  if( X11_DIR.isEmpty() ) {
+    kdDebug() << "Cannot find X11 directory!" << endl;
+    return;
+  }
+
   // ugly check for XFree 4.3 or older
   if( QDir(X11_DIR + "xkb/symbols/pc").exists() ) {
 	m_xfree43 = true;
@@ -29,8 +41,20 @@ KeyRules::KeyRules(QString rule):
 	m_xfree43 = false;
   }
 
-  loadRules(X11_DIR + QString("xkb/rules/%1").arg(rule));
-  loadOldLayouts(X11_DIR + QString("xkb/rules/xfree86"));
+  QString rulesFile;
+  for(int ii=0; ii<2; ii++)
+    if( QFile(X11_DIR + QString(rulesFileList[ii])).exists() ) {
+	rulesFile = X11_DIR + rulesFileList[ii];
+	break;
+    }
+
+  if( rulesFile.isEmpty() ) {
+    kdDebug() << "Cannot find rules file in " << X11_DIR << endl;
+    return;
+  }
+
+  loadRules(rulesFile);
+  loadOldLayouts(rulesFile);
   loadGroups(::locate("config", "kxkb_groups"));
 }
 
@@ -51,9 +75,7 @@ static struct {
     { 0, 0 }
 };
 
-  XkbRF_RulesPtr rules;
-
-  rules = XkbRF_Load(QFile::encodeName(file).data(), "", true, true);
+  XkbRF_RulesPtr rules = XkbRF_Load(QFile::encodeName(file).data(), "", true, true);
 
   if (rules == NULL) {
      kdDebug() << "Unable to load rules" << endl;
@@ -176,7 +198,7 @@ unsigned int KeyRules::getGroup(const QS
     return it == m_initialGroups.end() ? 0 : it.data();
 }
 
-
+/*
 QStringList KeyRules::rules(QString path)
 {
   QStringList result;
@@ -193,7 +215,7 @@ QStringList KeyRules::rules(QString path
 
   return result;
 }
-
+*/
 
 /* pretty simple algorithm - reads the layout file and
     tries to find "xkb_symbols"