a1308417c0
git-svn-id: https://svn.disconnected-by-peer.at/svn/linamh/trunk/linamh@2335 6952d904-891a-0410-993b-d76249ca496b
87 lines
3.1 KiB
Plaintext
87 lines
3.1 KiB
Plaintext
#! /bin/sh /usr/share/dpatch/dpatch-run
|
|
## 93_export_remote_keyboar_config.dpatch by <marceloshima@gmail.com>
|
|
##
|
|
## All lines beginning with `## DP:' are a description of the patch.
|
|
## DP: Export the client keyboard configurations to a file
|
|
|
|
@DPATCH@
|
|
Index: nx-x11-ubuntu/nxagent/programs/Xserver/hw/nxagent/Error.c
|
|
===================================================================
|
|
--- nx-x11-ubuntu.orig/nxagent/programs/Xserver/hw/nxagent/Error.c 2010-03-18 17:43:36.783686923 -0300
|
|
+++ nx-x11-ubuntu/nxagent/programs/Xserver/hw/nxagent/Error.c 2010-03-18 17:46:09.832447167 -0300
|
|
@@ -497,7 +497,7 @@
|
|
return rootPath;
|
|
}
|
|
|
|
-char *nxagentGetSessionPath()
|
|
+char *nxagentGetSessionPath(void)
|
|
{
|
|
|
|
char *rootPath;
|
|
Index: nx-x11-ubuntu/nxagent/programs/Xserver/hw/nxagent/Error.h
|
|
===================================================================
|
|
--- nx-x11-ubuntu.orig/nxagent/programs/Xserver/hw/nxagent/Error.h 2010-03-18 17:43:36.813686477 -0300
|
|
+++ nx-x11-ubuntu/nxagent/programs/Xserver/hw/nxagent/Error.h 2010-03-18 17:46:09.832447167 -0300
|
|
@@ -34,4 +34,6 @@
|
|
|
|
void nxagentEndRedirectToClientsLog(void);
|
|
|
|
+char *nxagentGetSessionPath(void);
|
|
+
|
|
#endif /* __Error_H__ */
|
|
Index: nx-x11-ubuntu/nxagent/programs/Xserver/hw/nxagent/Keyboard.c
|
|
===================================================================
|
|
--- nx-x11-ubuntu.orig/nxagent/programs/Xserver/hw/nxagent/Keyboard.c 2010-03-18 17:46:09.153703849 -0300
|
|
+++ nx-x11-ubuntu/nxagent/programs/Xserver/hw/nxagent/Keyboard.c 2010-03-18 17:46:09.832447167 -0300
|
|
@@ -52,6 +52,7 @@
|
|
#include "Keyboard.h"
|
|
#include "Events.h"
|
|
#include "Options.h"
|
|
+#include "Error.h"
|
|
|
|
#include "NXlib.h"
|
|
|
|
@@ -1770,6 +1771,42 @@
|
|
}
|
|
#endif
|
|
|
|
+ if (drulesLen != 0)
|
|
+ {
|
|
+ char *sessionpath = nxagentGetSessionPath();
|
|
+ if (sessionpath != NULL){
|
|
+ int keyboard_file_path_size = strlen(sessionpath) + strlen("/keyboard");
|
|
+ char *keyboard_file_path = malloc((keyboard_file_path_size + 1) * sizeof(char));
|
|
+ FILE *keyboard_file;
|
|
+ if ( keyboard_file_path == NULL)
|
|
+ {
|
|
+ FatalError("nxagentKeyboardProc: malloc failed.");
|
|
+ }
|
|
+ strcpy(keyboard_file_path, sessionpath);
|
|
+ strcat(keyboard_file_path, "/keyboard");
|
|
+ if ((keyboard_file = fopen(keyboard_file_path, "w")) != NULL) {
|
|
+ if ( drules != NULL )
|
|
+ fprintf(keyboard_file, "rules=%s\n", drules);
|
|
+ if ( dmodel != NULL )
|
|
+ fprintf(keyboard_file, "model=%s\n", dmodel);
|
|
+ if ( dlayout != NULL )
|
|
+ fprintf(keyboard_file, "layout=%s\n", dlayout);
|
|
+ if ( dvariant != NULL )
|
|
+ fprintf(keyboard_file, "variant=%s\n", dvariant);
|
|
+ if ( doptions != NULL )
|
|
+ fprintf(keyboard_file, "options=%s\n", doptions);
|
|
+ fclose(keyboard_file);
|
|
+ }
|
|
+ free(keyboard_file_path);
|
|
+ fprintf(stderr, "keyboard file created\n");
|
|
+ }
|
|
+ fprintf(stderr, "SessionPath not defined\n");
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ fprintf(stderr, "Failed to create the keyboard file\n");
|
|
+ }
|
|
+
|
|
if (nxagentOption(ClientOs) == ClientOsLinux &&
|
|
drules != NULL && dmodel != NULL &&
|
|
(strcmp(drules, "evdev") == 0 ||
|