forked from osmocom/wireshark
Handle the case where the keycodemap entry for one of the keycodes
processed in the first loop in "keycode2keysymString()" is null. I don't know whether the right thing to do is to give up (as we're doing now) or to not check that map. In that routine, we set "syms" to "keycodemap[keycode]", and give up if it's null; use "syms" in that routine instead of "keycodemap[keycode]", so we know that those places don't have to worry about "keycodemap[keycode]" being null. Fix up indentation. svn path=/trunk/; revision=10459
This commit is contained in:
parent
0835079f6d
commit
d73ac9b48e
44
packet-x11.c
44
packet-x11.c
|
@ -3,7 +3,7 @@
|
||||||
* Copyright 2000, Christophe Tronche <ch.tronche@computer.org>
|
* Copyright 2000, Christophe Tronche <ch.tronche@computer.org>
|
||||||
* Copyright 2003, Michael Shuldman
|
* Copyright 2003, Michael Shuldman
|
||||||
*
|
*
|
||||||
* $Id: packet-x11.c,v 1.56 2004/03/22 22:53:56 deniel Exp $
|
* $Id: packet-x11.c,v 1.57 2004/03/23 18:03:28 guy Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -1600,7 +1600,9 @@ keycode2keysymString(int *keycodemap[256], int first_keycode,
|
||||||
return "<Unknown>";
|
return "<Unknown>";
|
||||||
|
|
||||||
for (kc = first_keycode, groupmodkc = numlockkc = -1; kc < 256; ++kc)
|
for (kc = first_keycode, groupmodkc = numlockkc = -1; kc < 256; ++kc)
|
||||||
for (keysym = 0; keysym < keysyms_per_keycode; ++keysym)
|
for (keysym = 0; keysym < keysyms_per_keycode; ++keysym) {
|
||||||
|
if (keycodemap[kc] == NULL)
|
||||||
|
return "<Unknown>";
|
||||||
switch (keycodemap[kc][keysym]) {
|
switch (keycodemap[kc][keysym]) {
|
||||||
case 0xff7e:
|
case 0xff7e:
|
||||||
groupmodkc = kc;
|
groupmodkc = kc;
|
||||||
|
@ -1618,6 +1620,7 @@ keycode2keysymString(int *keycodemap[256], int first_keycode,
|
||||||
lockmod_is_shiftlock = kc;
|
lockmod_is_shiftlock = kc;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1665,41 +1668,39 @@ keycode2keysymString(int *keycodemap[256], int first_keycode,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (numlockmod >= 0 && (bitmask & modifiermask[numlockmod])
|
if (numlockmod >= 0 && (bitmask & modifiermask[numlockmod])
|
||||||
&& ((keycodemap[keycode][1] >= 0xff80
|
&& ((syms[1] >= 0xff80
|
||||||
&& keycodemap[keycode][1] <= 0xffbd)
|
&& syms[1] <= 0xffbd)
|
||||||
|| (keycodemap[keycode][1] >= 0x11000000
|
|| (syms[1] >= 0x11000000
|
||||||
&& keycodemap[keycode][1] <= 0x1100ffff))) {
|
&& syms[1] <= 0x1100ffff))) {
|
||||||
if ((bitmask & ShiftMask) || lockmod_is_shiftlock)
|
if ((bitmask & ShiftMask) || lockmod_is_shiftlock)
|
||||||
return keysymString(keycodemap[keycode][groupmod + 0]);
|
return keysymString(syms[groupmod + 0]);
|
||||||
else
|
else
|
||||||
if (keycodemap[keycode][groupmod + 1] == NoSymbol)
|
if (syms[groupmod + 1] == NoSymbol)
|
||||||
return keysymString(keycodemap[keycode]
|
return keysymString(syms[groupmod + 0]);
|
||||||
[groupmod + 0]);
|
|
||||||
else
|
else
|
||||||
return keysymString(keycodemap[keycode]
|
return keysymString(syms[groupmod + 1]);
|
||||||
[groupmod + 1]);
|
|
||||||
}
|
}
|
||||||
else if (!(bitmask & ShiftMask) && !(bitmask & LockMask))
|
else if (!(bitmask & ShiftMask) && !(bitmask & LockMask))
|
||||||
return keysymString(keycodemap[keycode][groupmod + 0]);
|
return keysymString(syms[groupmod + 0]);
|
||||||
else if (!(bitmask & ShiftMask)
|
else if (!(bitmask & ShiftMask)
|
||||||
&& ((bitmask & LockMask) && lockmod_is_capslock))
|
&& ((bitmask & LockMask) && lockmod_is_capslock))
|
||||||
if (islower(keycodemap[keycode][groupmod + 0]))
|
if (islower(syms[groupmod + 0]))
|
||||||
/* return toupper(keysymString(keycodemap[keycode][groupmod + 0])); */
|
/* return toupper(keysymString(syms[groupmod + 0])); */
|
||||||
return "Uppercase"; /* XXX */
|
return "Uppercase"; /* XXX */
|
||||||
else
|
else
|
||||||
return keysymString(keycodemap[keycode][groupmod + 0]);
|
return keysymString(syms[groupmod + 0]);
|
||||||
|
|
||||||
else if ((bitmask & ShiftMask)
|
else if ((bitmask & ShiftMask)
|
||||||
&& ((bitmask & LockMask) && lockmod_is_capslock))
|
&& ((bitmask & LockMask) && lockmod_is_capslock))
|
||||||
if (islower(keycodemap[keycode][groupmod + 1]))
|
if (islower(syms[groupmod + 1]))
|
||||||
/* return toupper(keysymString(keycodemap[keycode][groupmod + 1])); */
|
/* return toupper(keysymString(syms[groupmod + 1])); */
|
||||||
return "Uppercase"; /* XXX */
|
return "Uppercase"; /* XXX */
|
||||||
else
|
else
|
||||||
return keysymString(keycodemap[keycode][groupmod + 1]);
|
return keysymString(syms[groupmod + 1]);
|
||||||
|
|
||||||
else if ((bitmask & ShiftMask)
|
else if ((bitmask & ShiftMask)
|
||||||
|| ((bitmask & LockMask) && lockmod_is_shiftlock))
|
|| ((bitmask & LockMask) && lockmod_is_shiftlock))
|
||||||
return keysymString(keycodemap[keycode][groupmod + 1]);
|
return keysymString(syms[groupmod + 1]);
|
||||||
#else /* _XTranslateKey() based code. */
|
#else /* _XTranslateKey() based code. */
|
||||||
|
|
||||||
while (keysyms_per_keycode > 2
|
while (keysyms_per_keycode > 2
|
||||||
|
@ -1712,7 +1713,8 @@ keycode2keysymString(int *keycodemap[256], int first_keycode,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numlockmod >= 0 && (bitmask & modifiermask[numlockmod])
|
if (numlockmod >= 0 && (bitmask & modifiermask[numlockmod])
|
||||||
&& keysyms_per_keycode > 1 && ((syms[1] >= 0xff80 && syms[1] <= 0xffbd)
|
&& keysyms_per_keycode > 1
|
||||||
|
&& ((syms[1] >= 0xff80 && syms[1] <= 0xffbd)
|
||||||
|| (syms[1] >= 0x11000000 && syms[1] <= 0x1100ffff))) {
|
|| (syms[1] >= 0x11000000 && syms[1] <= 0x1100ffff))) {
|
||||||
if ((bitmask & ShiftMask)
|
if ((bitmask & ShiftMask)
|
||||||
|| (bitmask & LockMask && lockmod_is_shiftlock))
|
|| (bitmask & LockMask && lockmod_is_shiftlock))
|
||||||
|
|
Loading…
Reference in New Issue