Ok, I am a little stupid. Here is how NoSymbol is defined: /usr/include/X11/X.h 1: 146 #define NoSymbol 0L /* special KeySym */
So this is simply a Nul and our code is OK. Yet even though it will probably work on most (if not all?!) implementations, I would suggest to change anyway the test for a NoSymbol for logical reason (the definition tells us it returns NoSymbol, not 0L; hence we should not care how it is implemented in the reality because this is not guaranteed to stay as is). Jehan Jehan a écrit : > Hi guys, > > I made the test. As I expected, if I give to XStringToKeysym an invalid > string (just random string), it returns NoSymbol. So apparently I don't > see any case where it would return a nul. > > On the other hand if I apply this NoSymbol to XConvertCase, then it > returns as well NoSymbol for both the lower and upper keysyms. > And I even tried to apply a nul instead of NoSymbol (which should not > happen as the previous function never returns null apparently), it > converts to NoSymbol all the same. > > So I suggest to make a test on NoSymbol instead of 0L. Would you agree? > > Jehan > > Jehan a écrit : >> Hi all, >> >> related to this issue, after looking at this small part of the code, it >> looks like there is an test which may always succeed, or at least which >> is not the right test: >> >> Here is the part of the code: >> >> 336 /* >> 337 * Always store the keysym as upper case. That way we can >> treat shift >> 338 * correctly even when Caps Lock is pressed. >> 339 */ >> 340 { >> 341 KeySym upper; >> 342 XConvertCase(XStringToKeysym(keyname_nomods), &keysym, >> &upper); >> 343 } >> 344 >> 345 if (NOT_KEYSYM(keysym)) >> 346 { >> 347 rxvt_msg (DBG_ERROR, DBG_MACROS, "Invalid keysym %s. Skipping >> macro.", >> 348 keyname_nomods); >> 349 return -1; >> 350 } >> >> What strikes me is the test line 345. NOT_KEYSYM test whether the keysym >> is a nul (0L). So maybe in some case, it may have happened before when >> "tolower" function was used, as demonstrated this problem on IRIX. But >> with XConvertCase, I don't see in the manual what would be the behaviour >> if a wrng keysym is applied. >> Moreover the manual of XStringToKeysym writes that when the given >> string is not a valid keysym, it does not return nul, but the special >> NoSymbol. >> I am going to make a test (Linux only though), but I think this nul test >> is not really relevant here. Probably the test may be on NoSymbol (&& >> nul also maybe) instead. >> >> Jehan >> >> Jehan a écrit : >>> Hello Jackson, >>> >>> in the 0.5.2 (and even 0.5.3) code, there is indeed a strange operation >>> done on the keysym to make them lowercase (in macros.c:357, a function >>> meant to be applied to a character is applied to a keysym, which was >>> probably working on some common implementation only), and I guess this >>> is where your issue comes from. >>> >>> But this is probably fixed in the last release 0.5.4 (it has been out >>> today! A few hours ago...). Revision 253 in the subversion (done after >>> 0.5.3) is tagged "Added NetBSD portability patches by Tobias Nygren" and >>> there has been a change in the code on the exact line where I think your >>> issue comes from (the lowercase conversion was made using a dedicated X >>> function instead). There was not much more information (but probably in >>> the mailing list? I have not looked for this) on what was this >>> "portability patch", but I think it may be the same issue you have on Irix. >>> >>> So I suggest to update to last version 0.5.4, I think this will fix this >>> issue. >>> Bye! >>> >>> Jehan >>> >>> jackson312 a écrit : >>>> I got mrxvt built on IRIX, but when I run it I get the following warnings: >>>> mrxvt: Invalid keysym Prior. Skipping macro. >>>> mrxvt: Invalid keysym Next. Skipping macro. >>>> mrxvt: Invalid keysym Insert. Skipping macro. >>>> mrxvt: Invalid keysym KP_Add. Skipping macro. >>>> mrxvt: Invalid keysym KP_Subtract. Skipping macro. >>>> mrxvt: Invalid keysym Prior. Skipping macro. >>>> mrxvt: Invalid keysym Next. Skipping macro. >>>> mrxvt: Invalid keysym Left. Skipping macro. >>>> mrxvt: Invalid keysym Right. Skipping macro. >>>> mrxvt: Invalid keysym Left. Skipping macro. >>>> mrxvt: Invalid keysym Right. Skipping macro. >>>> mrxvt: Invalid keysym Tab. Skipping macro. >>>> mrxvt: Invalid keysym F12. Skipping macro. >>>> mrxvt: Invalid keysym Up. Skipping macro. >>>> mrxvt: Invalid keysym Down. Skipping macro. >>>> mrxvt: Invalid keysym Home. Skipping macro. >>>> mrxvt: Invalid keysym End. Skipping macro. >>>> mrxvt: Invalid keysym Delete. Skipping macro. >>>> mrxvt: Invalid keysym Return. Skipping macro. >>>> mrxvt: Invalid keysym Return. Skipping macro. >>>> mrxvt: Invalid keysym F1. Skipping macro. >>>> >>>> It works, but I cannot use the keyboard to create or navigate terminals. I >>>> would build newer versions, but I get c99 errors. The newest gcc for IRIX >>>> is >>>> 3.4.6. I could try compiling it with SGI's MIPSpro, but that may open >>>> another can of worms. I am using the configure settings below: >>>> >>>> Thanks in advance for any help, >>>> >>>> Jackson >>>> >>>> ./configure \ >>>> --enable-ourstrings \ >>>> --enable-24bits \ >>>> --disable-lastlog \ >>>> --enable-sgi-scroll \ >>>> --enable-frills \ >>>> --with-term=rxvt \ >>>> --enable-xft \ >>>> --enable-xim \ >>>> --with-x >>>> >>> ------------------------------------------------------------------------- >>> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >>> Build the coolest Linux based applications with Moblin SDK & win great >>> prizes >>> Grand prize is a trip for two to an Open Source event anywhere in the world >>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>> _______________________________________________ >>> Materm-devel mailing list >>> Materm-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/materm-devel >>> mrxvt home page: http://materm.sourceforge.net >>> >>> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >> Build the coolest Linux based applications with Moblin SDK & win great prizes >> Grand prize is a trip for two to an Open Source event anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Materm-devel mailing list >> Materm-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/materm-devel >> mrxvt home page: http://materm.sourceforge.net >> >> > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Materm-devel mailing list > Materm-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/materm-devel > mrxvt home page: http://materm.sourceforge.net > > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Materm-devel mailing list Materm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/materm-devel mrxvt home page: http://materm.sourceforge.net