Commit ffc2c384 authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Keyboard.c: improve capslock and numlock handling

Fixes ArcticaProject/nx-libs#935
parent e74b9911
......@@ -713,6 +713,48 @@ XkbError:
}
#endif
#ifdef TEST
if (nxagentCapsLockKeycode != 0)
{
fprintf(stderr, "%s: Modifiers for CapsLock (%d): 0x%x\n", __func__, nxagentCapsLockKeycode, xkb->map->modmap[nxagentCapsLockKeycode]);
}
if (nxagentNumLockKeycode != 0)
{
fprintf(stderr, "%s: Modifiers for NumLock (%d): 0x%x\n", __func__, nxagentNumLockKeycode, xkb->map->modmap[nxagentNumLockKeycode]);
}
#endif
/* Users can add options to their xkb setup. E.g. setxkbmap
* -option caps:ctrl_modifier makes CapsLock behave like the
* Ctrl key. As we have special treatment for CapsLock and
* NumLock to keep them in sync with the real X server we
* check if they are assigned to another modifier. In that
* case we disable the sync treatment by setting the according
* keycode to 0.
*/
if (xkb && xkb->map && xkb->map->modmap)
{
if (nxagentCapsLockKeycode != 0 && xkb->map->modmap[nxagentCapsLockKeycode] != LockMask)
{
nxagentCapsLockKeycode = 0;
#ifdef TEST
fprintf(stderr, "%s: CapsLock key is mapped to some other modifier - disabling special treatment\n", __func__);
#endif
}
/* I have not found an xkb option definition for remapping
* NumLock. But users can still do that manually so let's be
* safe here.
*/
if (xkb->map->modmap[nxagentNumLockKeycode] != Mod2Mask)
{
nxagentNumLockKeycode = 0;
#ifdef TEST
fprintf(stderr, "%s: Numock key is mapped to some other modifier - disabling special treatment\n", __func__);
#endif
}
}
#ifdef DEBUG
fprintf(stderr, "%s: Going to set rules and init device: "
"[rules='%s',model='%s',layout='%s',variant='%s',options='%s'].\n", __func__,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment