linamh/net-misc/nx-X11/files/93_export_remote_keyboard_config.dpatch

87 lines
3.1 KiB
Plaintext
Raw Normal View History

#! /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 ||