normally, xev only logs key press events when you actually press a key. but when the modifiers stop working it sees a continuous stream of key press/key release events.
following is a sample key press/key release/key press sequence from xev when the modifier keys stop working.
KeyPress event, serial 32, synthetic NO, window 0x3a00001,
root 0x5a, subw 0x0, time 28763460, (171,-12), root:(1529,853),
state 0x0, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 32, synthetic NO, window 0x3a00001,
root 0x5a, subw 0x0, time 28763494, (171,-12), root:(1529,853),
state 0x100, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 32, synthetic NO, window 0x3a00001,
root 0x5a, subw 0x0, time 28763494, (171,-12), root:(1529,853),
state 0x100, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
you can see that the second keypress event shown has the same timestamp as the previous keyrelease event. this is the same for all the ones i looked at.
so perhaps this phantom key press/release could be preventing key modifiers from working properly, eg you press shift, but then this phantom keypress occurs before you get a chance to press the i key, so the shift is cancelled and the i comes out lowercase.
normally, xev only logs key press events when you actually press a key. but when the modifiers stop working it sees a continuous stream of key press/key release events.
following is a sample key press/key release/key press sequence from xev when the modifier keys stop working.
KeyPress event, serial 32, synthetic NO, window 0x3a00001,
root 0x5a, subw 0x0, time 28763460, (171,-12), root:(1529,853),
state 0x0, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 32, synthetic NO, window 0x3a00001,
root 0x5a, subw 0x0, time 28763494, (171,-12), root:(1529,853),
state 0x100, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 32, synthetic NO, window 0x3a00001,
root 0x5a, subw 0x0, time 28763494, (171,-12), root:(1529,853),
state 0x100, keycode 101 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
you can see that the second keypress event shown has the same timestamp as the previous keyrelease event. this is the same for all the ones i looked at.
so perhaps this phantom key press/release could be preventing key modifiers from working properly, eg you press shift, but then this phantom keypress occurs before you get a chance to press the i key, so the shift is cancelled and the i comes out lowercase.