ctrls->enabled_ctrls|= change; /* yay - re-enabled it */
[...]
------------------
once this code is run, enabled_ctrls has XkbMouseKeysMask is set, no matter what.
This code hasn't changed in years, so I don't really see how that has ever
worked in the first place.
I spent some time investigating this and found some weird code that I don't
understand:
xkbi->desc- >ctrls- >ctrls_ enabled is a bitmask of the enabled features. If I
disable MouseKeys for a device, bit 0x16 is set to 0.
from xkb/xkbActions. c:_XkbFilterCon trols
------- ------- ------- -----
[...]
change= XkbActionCtrls( &pAction- >ctrls) ; /* 16 for mouse keys */
[...]
if (pAction- >type== XkbSA_LockContr ols) { >enabled_ ctrls&change) ; >enabled_ ctrls; /* change stays 16 */
filter->priv= (ctrls-
change&= ~ctrls-
}
if (change) { /* always true */ sNotify cn; nfoPtr sli;
xkbControl
XkbSrvLedI
ctrls- >enabled_ ctrls|= change; /* yay - re-enabled it */
[...]
------------------
once this code is run, enabled_ctrls has XkbMouseKeysMask is set, no matter what.
This code hasn't changed in years, so I don't really see how that has ever
worked in the first place.