[PATCH v6 RFC 06/10] kdrive: add options to set default XKB properties
Laércio de Sousa
laerciosousa at sme-mogidascruzes.sp.gov.br
Thu Sep 3 11:00:51 PDT 2015
This patch introduces convenient command-line options -xkbrules,
-xkbmodel, -xkblayout, -xkbvariant, and -xkboptions, to set default
values for these properties.
These options can be handful in cases where corresponding values can't
be taken from devices' udev properties, and compile-time default
values don't match user locale.
Signed-off-by: Laércio de Sousa <laerciosousa at sme-mogidascruzes.sp.gov.br>
---
hw/kdrive/src/kdrive.c | 40 ++++++++++++++++++++++++++++++++++++++++
hw/kdrive/src/kinput.c | 16 +++++++++++-----
2 files changed, 51 insertions(+), 5 deletions(-)
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index 8930ace..1578458 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -85,6 +85,11 @@ char *kdSwitchCmd;
DDXPointRec kdOrigin;
Bool kdHasPointer = FALSE;
Bool kdHasKbd = FALSE;
+const char *kdGlobalXkbRules = NULL;
+const char *kdGlobalXkbModel = NULL;
+const char *kdGlobalXkbLayout = NULL;
+const char *kdGlobalXkbVariant = NULL;
+const char *kdGlobalXkbOptions = NULL;
static Bool kdCaughtSignal = FALSE;
@@ -451,6 +456,11 @@ KdUseMsg(void)
("-mouse driver [,n,,options] Specify the pointer driver and its options (n is the number of buttons)\n");
ErrorF
("-keybd driver [,,options] Specify the keyboard driver and its options\n");
+ ErrorF("-xkbrules Set default XkbRules value (can be overriden by -keybd options)\n");
+ ErrorF("-xkbmodel Set default XkbModel value (can be overriden by -keybd options)\n");
+ ErrorF("-xkblayout Set default XkbLayout value (can be overriden by -keybd options)\n");
+ ErrorF("-xkbvariant Set default XkbVariant value (can be overriden by -keybd options)\n");
+ ErrorF("-xkboptions Set default XkbOptions value (can be overriden by -keybd options)\n");
ErrorF("-zaphod Disable cursor screen switching\n");
ErrorF("-2button Emulate 3 button mouse\n");
ErrorF("-3button Disable 3 button mouse emulation\n");
@@ -559,6 +569,36 @@ KdProcessArgument(int argc, char **argv, int i)
sscanf(argv[i], "vt%2d", &kdVirtualTerminal) == 1) {
return 1;
}
+ if (!strcmp(argv[i], "-xkbrules")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ kdGlobalXkbRules = argv[i + 1];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-xkbmodel")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ kdGlobalXkbModel = argv[i + 1];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-xkblayout")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ kdGlobalXkbLayout = argv[i + 1];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-xkbvariant")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ kdGlobalXkbVariant = argv[i + 1];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-xkboptions")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ kdGlobalXkbOptions = argv[i + 1];
+ return 2;
+ }
if (!strcmp(argv[i], "-mouse") || !strcmp(argv[i], "-pointer")) {
if (i + 1 >= argc)
UseMsg();
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 1da4537..8510ccd 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -102,6 +102,12 @@ static int kdNumInputFds;
extern Bool kdRawPointerCoordinates;
+extern const char *kdGlobalXkbRules;
+extern const char *kdGlobalXkbModel;
+extern const char *kdGlobalXkbLayout;
+extern const char *kdGlobalXkbVariant;
+extern const char *kdGlobalXkbOptions;
+
static void
KdSigio(int sig)
{
@@ -920,11 +926,11 @@ KdNewKeyboard(void)
ki->options = NULL;
ki->name = strdup("Generic Keyboard");
ki->path = NULL;
- ki->xkbRules = strdup(XKB_DFLT_RULES);
- ki->xkbModel = strdup(XKB_DFLT_MODEL);
- ki->xkbLayout = strdup(XKB_DFLT_LAYOUT);
- ki->xkbVariant = strdup(XKB_DFLT_VARIANT);
- ki->xkbOptions = strdup(XKB_DFLT_OPTIONS);
+ ki->xkbRules = strdup(kdGlobalXkbRules ? kdGlobalXkbRules : XKB_DFLT_RULES);
+ ki->xkbModel = strdup(kdGlobalXkbModel ? kdGlobalXkbModel : XKB_DFLT_MODEL);
+ ki->xkbLayout = strdup(kdGlobalXkbLayout ? kdGlobalXkbLayout : XKB_DFLT_LAYOUT);
+ ki->xkbVariant = strdup(kdGlobalXkbVariant ? kdGlobalXkbVariant :XKB_DFLT_VARIANT);
+ ki->xkbOptions = strdup(kdGlobalXkbOptions ? kdGlobalXkbOptions : XKB_DFLT_OPTIONS);
return ki;
}
--
2.5.0
More information about the xorg-devel
mailing list