From e3ac55bc2f62d65daaad92d17db399c694394661 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 21:39:24 +0200 Subject: Drop unused define NXAGENT_KEYMAP_DIR_FILE --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 5cb4ff4d9..345373650 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -173,8 +173,6 @@ extern Status XkbGetControls( #define XKB_DFLT_KB_OPTIONS NULL #endif -#define NXAGENT_KEYMAP_DIR_FILE "keymap.dir" - extern int XkbDfltRepeatDelay; extern int XkbDfltRepeatInterval; -- cgit v1.2.3 From 8793e362b686985151d6174ee2f2a8e1bceb9ef5 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 21:40:10 +0200 Subject: Improve DEBUG/TEST output regarding keyboard stuff --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 49 ++++++++++++++++++++------- nx-X11/programs/Xserver/xkb/ddxLoad.c | 4 +-- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 345373650..3bb363b47 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -477,6 +477,11 @@ CARD8 nxagentConvertKeycode(CARD8 k) { if (nxagentKeycodeConversion != 0) { + #ifdef DEBUG + if (k != nxagentConvertedKeycodes[k]) + fprintf(stderr, "nxagentConvertKeycode: converting keycode [%d] to [%d]\n", k, nxagentConvertedKeycodes[k]); + #endif + return nxagentConvertedKeycodes[k]; } else @@ -501,10 +506,10 @@ static void nxagentCheckXkbBaseDirectory(void) #ifdef TEST fprintf(stderr, "nxagentCheckXkbBaseDirectory: " - "Before calling _NXGetXkbBasePath.\n"); + "Before calling _NXGetXkbBasePath:\n"); fprintf(stderr, "nxagentCheckXkbBaseDirectory: " - "XkbBaseDirectory varible [%s].\n", + "XkbBaseDirectory variable [%s].\n", XkbBaseDirectory); #endif @@ -512,10 +517,10 @@ static void nxagentCheckXkbBaseDirectory(void) #ifdef TEST fprintf(stderr, "nxagentCheckXkbBaseDirectory: " - "After calling _NXGetXkbBasePath.\n"); + "After calling _NXGetXkbBasePath:\n"); fprintf(stderr, "nxagentCheckXkbBaseDirectory: " - "XkbBaseDirectory varible [%s].\n", + "XkbBaseDirectory variable [%s].\n", XkbBaseDirectory); #endif @@ -877,6 +882,10 @@ XkbError: fprintf(stderr, "nxagentKeyboardProc: Using XKB extension.\n"); #endif + #ifdef TEST + fprintf(stderr, "nxagentKeyboardProc: nxagentKeyboard is [%s].\n", nxagentKeyboard ? nxagentKeyboard : "NULL"); + #endif + memset(&names, 0, sizeof(XkbComponentNamesRec)); rules = nxagentXkbGetRules(); @@ -988,6 +997,11 @@ XkbError: } fprintf(stderr, "nxagentKeyboardProc: Going to set rules and init device.\n"); #endif + #ifdef DEBUG + fprintf(stderr, "nxagentKeyboardProc: Going to set rules and init device: " + "[rules='%s',model='%s',layout='%s',variants='%s',options='%s'].\n", + rules, model, layout, variants, options); + #endif XkbSetRulesDflts(rules, model, layout, variants, options); XkbInitKeyboardDeviceStruct((void *)pDev, &names, &keySyms, modmap, @@ -1071,13 +1085,14 @@ XkbError: } else { - #ifdef TEST - fprintf(stderr, "nxagentKeyboardProc: No config file.\n"); - #endif - #ifdef TEST fprintf(stderr, "nxagentKeyboardProc: No config file, going to set rules and init device.\n"); #endif + #ifdef DEBUG + fprintf(stderr, "nxagentKeyboardProc: Going to set rules and init device: " + "[rules='%s',model='%s',layout='%s',variants='%s',options='%s'].\n", + rules, model, layout, variants, options); + #endif XkbSetRulesDflts(rules, model, layout, variants, options); XkbInitKeyboardDeviceStruct((void *)pDev, &names, &keySyms, modmap, @@ -1097,6 +1112,11 @@ XkbError: #ifdef TEST fprintf(stderr, "nxagentKeyboardProc: Going to set rules and init device.\n"); #endif + #ifdef DEBUG + fprintf(stderr, "nxagentKeyboardProc: Going to set rules and init device: " + "[rules='%s',model='%s',layout='%s',variants='%s',options='%s'].\n", + rules, model, layout, variants, options); + #endif XkbSetRulesDflts(rules, model, layout, variants, options); XkbInitKeyboardDeviceStruct((void *)pDev, &names, &keySyms, modmap, @@ -1402,8 +1422,8 @@ void nxagentCheckRemoteKeycodes() nxagentNumLockKeycode = XKeysymToKeycode(nxagentDisplay, XK_Num_Lock); #ifdef DEBUG - fprintf(stderr, "nxagentCheckRemoteKeycodes: Remote CapsLock keycode " - "is [%d] NumLock [%d].\n", nxagentCapsLockKeycode, + fprintf(stderr, "nxagentCheckRemoteKeycodes: Remote keycodes: CapsLock " + "[%d] NumLock [%d].\n", nxagentCapsLockKeycode, nxagentNumLockKeycode); #endif } @@ -1805,8 +1825,8 @@ void nxagentKeycodeConversionSetup(void) if (drulesLen != 0 && drules != NULL && dmodel != NULL) { fprintf(stderr, "nxagentKeycodeConversionSetup: " - "Remote: [%s,%s,%s,%s,%s].\n", drules, dmodel, dlayout, - dvariant, doptions); + "Remote: [rules='%s',model='%s',layout='%s',variant='%s',options='%s'].\n", + drules, dmodel, dlayout, dvariant, doptions); } else { @@ -1862,6 +1882,11 @@ void nxagentKeycodeConversionSetup(void) (strcmp(drules, "evdev") == 0 || strcmp(dmodel, "evdev") == 0)) { + #ifdef DEBUG + fprintf(stderr, "nxagentKeycodeConversionSetup: " + "Activating KeyCode conversion.\n"); + #endif + nxagentKeycodeConversion = 1; } diff --git a/nx-X11/programs/Xserver/xkb/ddxLoad.c b/nx-X11/programs/Xserver/xkb/ddxLoad.c index dab94660d..d1fc87d3a 100644 --- a/nx-X11/programs/Xserver/xkb/ddxLoad.c +++ b/nx-X11/programs/Xserver/xkb/ddxLoad.c @@ -223,8 +223,8 @@ static int NXVerifyXkbBaseDirectory(const char *dirPath) { #ifdef TEST - fprintf(stderr, "NXVerifyXkbBaseDirectory: Can't find the keymap.dir file [%s].\n", - rulesBaseFilePath); + fprintf(stderr, "NXVerifyXkbBaseDirectory: Xkb Base Directory [%s] is not valid (can't find file [%s]).\n", + dirPath, rulesBaseFilePath); #endif free(rulesBaseFilePath); -- cgit v1.2.3 From 2f7f39b4987d6bb300d5f17145fdeb3054563009 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 21:41:11 +0200 Subject: Keyboard.c: Fix and simplify keyboard config file handling keyboard config file for nxagent/x2goagent was broken from the moment it got implemented. nxagentXkbConfigFilePath had never been filled. --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 3bb363b47..7df4ce838 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -871,8 +871,6 @@ XkbError: FILE *file; XkbConfigRtrnRec config; - int nxagentXkbConfigFilePathSize; - char *nxagentXkbConfigFilePath; XkbComponentNamesRec names; @@ -1019,22 +1017,15 @@ XkbError: XkbGetControls(nxagentDisplay, XkbAllControlsMask, xkb); if (nxagentX2go) - nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_X2GO); + nxagentXkbConfigFilePath = strdup(XKB_CONFIG_FILE_X2GO); else - nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_NX); - - nxagentXkbConfigFilePath = malloc((nxagentXkbConfigFilePathSize + 1) * sizeof(char)); + nxagentXkbConfigFilePath = strdup(XKB_CONFIG_FILE_NX); - if ( nxagentXkbConfigFilePath == NULL) + if (nxagentXkbConfigFilePath == NULL) { FatalError("nxagentKeyboardProc: malloc failed."); } - if (nxagentX2go) - nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_X2GO); - else - nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_NX); - #ifdef TEST fprintf(stderr, "nxagentKeyboardProc: nxagentXkbConfigFilePath [%s].\n", nxagentXkbConfigFilePath); -- cgit v1.2.3 From 2901aca364bd506a8beae520d268663b03720068 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 21:50:11 +0200 Subject: Keyboard.c: Fix wrong error msg prefix --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 7df4ce838..2f9d51664 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -1835,7 +1835,7 @@ void nxagentKeycodeConversionSetup(void) FILE *keyboard_file; if ( keyboard_file_path == NULL) { - FatalError("nxagentKeyboardProc: malloc failed."); + FatalError("nxagentKeycodeConversionSetup: malloc failed."); } strcpy(keyboard_file_path, sessionpath); strcat(keyboard_file_path, "/keyboard"); -- cgit v1.2.3 From 3ea601bcb2fc037963e2bbb0e15e3d8f029a41ef Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 22:52:43 +0200 Subject: Keyboard.c: remove superfluous whitespace --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 2f9d51664..cf1ce8f43 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -1833,7 +1833,7 @@ void nxagentKeycodeConversionSetup(void) 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) + if (keyboard_file_path == NULL) { FatalError("nxagentKeycodeConversionSetup: malloc failed."); } -- cgit v1.2.3 From 52848b785c3039d6a2b9362f0f1a1bbeee7d1e51 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 22:53:07 +0200 Subject: Keyboard.c: use NULL instead of 0 --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index cf1ce8f43..2779e0470 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -1800,11 +1800,11 @@ static int nxagentXkbGetNames(char **rules, char **model, char **layout, void nxagentKeycodeConversionSetup(void) { - char *drules = 0; - char *dmodel = 0; - char *dlayout = 0; - char *dvariant = 0; - char *doptions = 0; + char *drules = NULL; + char *dmodel = NULL; + char *dlayout = NULL; + char *dvariant = NULL; + char *doptions = NULL; unsigned int drulesLen; nxagentKeycodeConversion = 0; -- cgit v1.2.3 From b5cc3c94ed0de2d657edc2e5a95fd10e9db3c0a7 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 22:53:39 +0200 Subject: Keyboard.c: improve keyboard file creation Fixes ArcticaProject/nx-libs#239 --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 2779e0470..1eca33665 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -1841,15 +1841,15 @@ void nxagentKeycodeConversionSetup(void) strcat(keyboard_file_path, "/keyboard"); if ((keyboard_file = fopen(keyboard_file_path, "w")) != NULL) { if ( drules != NULL ) - fprintf(keyboard_file, "rules=%s\n", drules); + fprintf(keyboard_file, "rules=\"%s\"\n", drules[0] == '\0' ? "," : drules); if ( dmodel != NULL ) - fprintf(keyboard_file, "model=%s\n", dmodel); + fprintf(keyboard_file, "model=\"%s\"\n", dmodel[0] == '\0' ? "," : dmodel); if ( dlayout != NULL ) - fprintf(keyboard_file, "layout=%s\n", dlayout); + fprintf(keyboard_file, "layout=\"%s\"\n", dlayout[0] == '\0' ? "," : dlayout); if ( dvariant != NULL ) - fprintf(keyboard_file, "variant=%s\n", dvariant); + fprintf(keyboard_file, "variant=\"%s\"\n", dvariant[0] == '\0' ? "," : dvariant); if ( doptions != NULL ) - fprintf(keyboard_file, "options=%s\n", doptions); + fprintf(keyboard_file, "options=\"%s\"\n", doptions[0] == '\0' ? "," : doptions); fclose(keyboard_file); fprintf(stderr, "keyboard file created\n"); } -- cgit v1.2.3 From 718c5b9f1d16732773e60bb688a76beea7cb1253 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 22:59:35 +0200 Subject: Keyboard.c: more whitespace/formatting fixes --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 1eca33665..3dd8b0668 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -542,7 +542,7 @@ static char *nxagentXkbGetRules() sizeDflt = strlen(XKB_DFLT_RULES_FILE); sizeAlt = strlen(XKB_ALTS_RULES_FILE); size = strlen(XkbBaseDirectory) + strlen("/rules/"); - size += (sizeDflt > sizeAlt) ? sizeDflt: sizeAlt; + size += (sizeDflt > sizeAlt) ? sizeDflt : sizeAlt; if ((path = malloc((size + 1) * sizeof(char))) == NULL) { @@ -888,13 +888,13 @@ XkbError: rules = nxagentXkbGetRules(); - if ((nxagentKeyboard != NULL) && (strcmp(nxagentKeyboard, "query") !=0)) + if ((nxagentKeyboard != NULL) && (strcmp(nxagentKeyboard, "query") != 0)) { for (i = 0; nxagentKeyboard[i] != '/' && nxagentKeyboard[i] != 0; i++); if(nxagentKeyboard[i] == 0 || nxagentKeyboard[i + 1] == 0 || i == 0) { - ErrorF("Warning: Wrong keyboard type: %s.\n",nxagentKeyboard); + ErrorF("Warning: Wrong keyboard type: %s.\n", nxagentKeyboard); goto XkbError; } @@ -951,7 +951,7 @@ XkbError: options = XKB_DFLT_KB_OPTIONS; #ifdef TEST - fprintf(stderr, "nxagentKeyboardProc: XkbInitialMap [%s]\n", XkbInitialMap ? XkbInitialMap: "NULL"); + fprintf(stderr, "nxagentKeyboardProc: XkbInitialMap [%s]\n", XkbInitialMap ? XkbInitialMap : "NULL"); #endif if (XkbInitialMap) { @@ -1829,7 +1829,8 @@ void nxagentKeycodeConversionSetup(void) if (drulesLen != 0) { char *sessionpath = nxagentGetSessionPath(); - if (sessionpath != NULL){ + 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; @@ -1840,26 +1841,28 @@ void nxagentKeycodeConversionSetup(void) strcpy(keyboard_file_path, sessionpath); strcat(keyboard_file_path, "/keyboard"); if ((keyboard_file = fopen(keyboard_file_path, "w")) != NULL) { - if ( drules != NULL ) + if (drules != NULL) fprintf(keyboard_file, "rules=\"%s\"\n", drules[0] == '\0' ? "," : drules); - if ( dmodel != NULL ) + if (dmodel != NULL) fprintf(keyboard_file, "model=\"%s\"\n", dmodel[0] == '\0' ? "," : dmodel); - if ( dlayout != NULL ) + if (dlayout != NULL) fprintf(keyboard_file, "layout=\"%s\"\n", dlayout[0] == '\0' ? "," : dlayout); - if ( dvariant != NULL ) + if (dvariant != NULL) fprintf(keyboard_file, "variant=\"%s\"\n", dvariant[0] == '\0' ? "," : dvariant); - if ( doptions != NULL ) + if (doptions != NULL) fprintf(keyboard_file, "options=\"%s\"\n", doptions[0] == '\0' ? "," : doptions); fclose(keyboard_file); fprintf(stderr, "keyboard file created\n"); } - else { + else + { int save_err = errno; fprintf(stderr, "keyboard file not created: %s\n", strerror(save_err)); } free(keyboard_file_path); } - else { + else + { fprintf(stderr, "SessionPath not defined\n"); } } -- cgit v1.2.3 From e52799d5ce5189387a90b9d44f421ae90d00175c Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 25 Oct 2016 23:40:13 +0200 Subject: Keyboard.c: replace malloc/strcpy by str(n)dup --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 3dd8b0668..1529cd359 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -900,16 +900,10 @@ XkbError: } free_model = 1; - model = malloc(i + 1); - - strncpy(model, nxagentKeyboard, i); - - model[i] = '\0'; + model = strndup(nxagentKeyboard, i); free_layout = 1; - layout = malloc(strlen(&nxagentKeyboard[i + 1]) + 1); - - strcpy(layout, &nxagentKeyboard[i + 1]); + layout = strdup(&nxagentKeyboard[i + 1]); /* * There is no description for pc105 on Solaris. -- cgit v1.2.3 From d37f9f31176ab94304fcc72b4aef507e2147005a Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Wed, 26 Oct 2016 10:39:37 +0200 Subject: Reconnect.c: simplify code by using strndup Also abort reconnect on strndup failure. --- nx-X11/programs/Xserver/hw/nxagent/Reconnect.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c index c20386ea1..65e2ae795 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c @@ -438,22 +438,14 @@ Bool nxagentReconnectSession(void) if (nxagentKeyboard != NULL) { - int size; - - size = strlen(nxagentKeyboard); - - if ((nxagentOldKeyboard = malloc(size + 1)) != NULL) + nxagentOldKeyboard = strndup(nxagentKeyboard, strlen(nxagentKeyboard)); + if (nxagentOldKeyboard == NULL) { - strncpy(nxagentOldKeyboard, nxagentKeyboard, size); - - nxagentOldKeyboard[size] = '\0'; + /* 0 means reconnection failed */ + return 0; } - } - if (nxagentKeyboard) - { free(nxagentKeyboard); - nxagentKeyboard = NULL; } -- cgit v1.2.3 From 08ed062c4d90dc8a26bac939892f23188a1366a3 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Wed, 26 Oct 2016 11:01:57 +0200 Subject: Keyboard.c: move variable to inner scope --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 1529cd359..35a09958e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -697,10 +697,6 @@ int nxagentKeyboardProc(DeviceIntPtr pDev, int onoff) int free_model = 0, free_layout = 0; XkbDescPtr xkb = NULL; - #ifdef TEST - int ret; - #endif - switch (onoff) { case DEVICE_INIT: @@ -857,13 +853,15 @@ XkbError: (char *) values.auto_repeats, sizeof(values.auto_repeats)); #ifdef TEST - ret = + { + int ret = #endif - InitKeyboardDeviceStruct((DevicePtr) pDev, &keySyms, modmap, + InitKeyboardDeviceStruct((DevicePtr) pDev, &keySyms, modmap, nxagentBell, nxagentChangeKeyboardControl); #ifdef TEST - fprintf(stderr, "nxagentKeyboardProc: InitKeyboardDeviceStruct returns [%d].\n", ret); + fprintf(stderr, "nxagentKeyboardProc: InitKeyboardDeviceStruct returns [%d].\n", ret); + } #endif #ifdef XKB -- cgit v1.2.3 From 926e90abca82bebcd18b142f824d434e1c1b6992 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Mon, 2 Oct 2006 20:58:33 +0300 Subject: xkb: remove the world's most staggeringly broken vendor workaround Certain versions of LynxOS needed to sleep up to five seconds for closing a pipe to actually, y'know, be useful. Backported-to-NX-by: Ulrich Sibiller --- nx-X11/programs/Xserver/xkb/ddxLoad.c | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/nx-X11/programs/Xserver/xkb/ddxLoad.c b/nx-X11/programs/Xserver/xkb/ddxLoad.c index d1fc87d3a..53bae44df 100644 --- a/nx-X11/programs/Xserver/xkb/ddxLoad.c +++ b/nx-X11/programs/Xserver/xkb/ddxLoad.c @@ -767,36 +767,6 @@ char tmpname[PATH_MAX]; strncpy(nameRtrn,keymap,nameRtrnLen); nameRtrn[nameRtrnLen-1]= '\0'; } -#if defined(Lynx) && defined(__i386__) && defined(NEED_POPEN_WORKAROUND) - /* somehow popen/pclose is broken on LynxOS AT 2.3.0/2.4.0! - * the problem usually shows up with XF86Setup - * this hack waits at max 5 seconds after pclose() returns - * for the output of the xkbcomp output file. - * I didn't manage to get a patch in time for the 3.2 release - */ - { - int i; - char name[PATH_MAX]; -#ifdef NXAGENT_SERVER - if (_NXGetXkbCompPath(XkbBaseDirectory)!=NULL) - sprintf(name,"%s/%s%s.xkm", _NXGetXkbCompPath(XkbBaseDirectory) - ,xkm_output_dir, keymap); -#else - if (XkbBaseDirectory!=NULL) - sprintf(name,"%s/%s%s.xkm", XkbBaseDirectory - ,xkm_output_dir, keymap); -#endif - else - sprintf(name,"%s%s.xkm", xkm_output_dir, keymap); - for (i = 0; i < 10; i++) { - if (access(name, 0) == 0) break; - usleep(500000); - } -#ifdef DEBUG - if (i) ErrorF(">>>> Waited %d times for %s\n", i, name); -#endif - } -#endif if (buf != NULL) free (buf); return True; -- cgit v1.2.3 From 2f2ade61a8823bad012737b2b388dcc168cccbbf Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Thu, 27 Oct 2016 01:00:23 +0200 Subject: Keyboard.c: evdev is only existing on Linux Remove check for the remote side operating system because the evdev check will only succeed on Linux (and in future FreeBSD?) anyway. Besides, this makes keycode conversion work when using nxagent without nx transport (as an xnest replacement) or when not providing client=linux in the options. This fixes the second issue mentioned in ArcticaProject/nx-libs#239 (keyboard not working correctly). --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 35a09958e..2fd42d3cf 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -1863,10 +1863,9 @@ void nxagentKeycodeConversionSetup(void) fprintf(stderr, "Failed to create the keyboard file\n"); } - if (nxagentOption(ClientOs) == ClientOsLinux && - drules != NULL && dmodel != NULL && - (strcmp(drules, "evdev") == 0 || - strcmp(dmodel, "evdev") == 0)) + if (drules != NULL && dmodel != NULL && + (strcmp(drules, "evdev") == 0 || + strcmp(dmodel, "evdev") == 0)) { #ifdef DEBUG fprintf(stderr, "nxagentKeycodeConversionSetup: " -- cgit v1.2.3