diff options
Diffstat (limited to 'source/l/hal/patches/set_X_keymap_properly.diff')
-rw-r--r-- | source/l/hal/patches/set_X_keymap_properly.diff | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/source/l/hal/patches/set_X_keymap_properly.diff b/source/l/hal/patches/set_X_keymap_properly.diff new file mode 100644 index 00000000..933bcfa3 --- /dev/null +++ b/source/l/hal/patches/set_X_keymap_properly.diff @@ -0,0 +1,96 @@ +diff --git a/tools/hal_set_property.c b/tools/hal_set_property.c +index a99b059..3ab38bb 100644 +--- a/tools/hal_set_property.c ++++ b/tools/hal_set_property.c +@@ -66,7 +66,7 @@ usage (int argc, char *argv[]) + " (--int <value> | --string <value> | --bool <value> |\n" + " --strlist-pre <value> | --strlist-post <value> |\n" + " --strlist-rem <value> | --double <value> | --remove)\n" +- " [--help] [--version]\n"); ++ " [--direct] [--help] [--version]\n"); + fprintf (stderr, + "\n" " --udi Unique Device Id\n" + " --key Key of the property to set\n" +@@ -81,6 +81,7 @@ usage (int argc, char *argv[]) + " --strlist-post Append a string to a list\n" + " --strlist-rem Remove a string from a list\n" + " --remove Indicates that the property should be removed\n" ++ " --direct Use direct HAL connection\n" + " --version Show version and exit\n" + " --help Show this information and exit\n" + "\n" +@@ -114,6 +115,7 @@ main (int argc, char *argv[]) + dbus_bool_t is_version = FALSE; + int type = PROP_INVALID; + DBusError error; ++ dbus_bool_t direct = FALSE; + + if (argc <= 1) { + usage (argc, argv); +@@ -135,6 +137,7 @@ main (int argc, char *argv[]) + {"strlist-pre", 1, NULL, 0}, + {"strlist-post", 1, NULL, 0}, + {"strlist-rem", 1, NULL, 0}, ++ {"direct", 0, NULL, 0}, + {"remove", 0, NULL, 0}, + {"version", 0, NULL, 0}, + {"help", 0, NULL, 0}, +@@ -188,6 +191,8 @@ main (int argc, char *argv[]) + type = PROP_STRLIST_REM; + } else if (strcmp (opt, "remove") == 0) { + remove = TRUE; ++ } else if (strcmp (opt, "direct") == 0) { ++ direct = TRUE; + } else if (strcmp (opt, "udi") == 0) { + udi = strdup (optarg); + } else if (strcmp (opt, "version") == 0) { +@@ -215,24 +220,32 @@ main (int argc, char *argv[]) + + fprintf (stderr, "\n"); + +- dbus_error_init (&error); +- if ((hal_ctx = libhal_ctx_new ()) == NULL) { +- fprintf (stderr, "error: libhal_ctx_new\n"); +- return 1; +- } +- if (!libhal_ctx_set_dbus_connection (hal_ctx, dbus_bus_get (DBUS_BUS_SYSTEM, &error))) { +- fprintf (stderr, "error: libhal_ctx_set_dbus_connection: %s: %s\n", error.name, error.message); +- LIBHAL_FREE_DBUS_ERROR (&error); +- return 1; +- } +- if (!libhal_ctx_init (hal_ctx, &error)) { +- if (dbus_error_is_set(&error)) { +- fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message); +- dbus_error_free (&error); ++ dbus_error_init (&error); ++ if (direct) { ++ if ((hal_ctx = libhal_ctx_init_direct (&error)) == NULL) { ++ fprintf (stderr, "error: libhal_ctx_init_direct\n"); ++ LIBHAL_FREE_DBUS_ERROR (&error); ++ return 1; ++ } ++ } else { ++ if ((hal_ctx = libhal_ctx_new ()) == NULL) { ++ fprintf (stderr, "error: libhal_ctx_new\n"); ++ return 1; ++ } ++ if (!libhal_ctx_set_dbus_connection (hal_ctx, dbus_bus_get (DBUS_BUS_SYSTEM, &error))) { ++ fprintf (stderr, "error: libhal_ctx_set_dbus_connection: %s: %s\n", error.name, error.message); ++ LIBHAL_FREE_DBUS_ERROR (&error); ++ return 1; ++ } ++ if (!libhal_ctx_init (hal_ctx, &error)) { ++ if (dbus_error_is_set(&error)) { ++ fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message); ++ dbus_error_free (&error); ++ } ++ fprintf (stderr, "Could not initialise connection to hald.\n" ++ "Normally this means the HAL daemon (hald) is not running or not ready.\n"); ++ return 1; + } +- fprintf (stderr, "Could not initialise connection to hald.\n" +- "Normally this means the HAL daemon (hald) is not running or not ready.\n"); +- return 1; + } + + if (remove) { |