|
@@ -566,22 +566,20 @@ end: |
|
|
void on_keypress(XKeyEvent *kev) |
|
|
void on_keypress(XKeyEvent *kev) |
|
|
{ |
|
|
{ |
|
|
int i; |
|
|
int i; |
|
|
unsigned int sh; |
|
|
|
|
|
|
|
|
unsigned int sh = 0; |
|
|
KeySym ksym, shksym; |
|
|
KeySym ksym, shksym; |
|
|
char key; |
|
|
|
|
|
|
|
|
char dummy, key; |
|
|
bool dirty = false; |
|
|
bool dirty = false; |
|
|
|
|
|
|
|
|
|
|
|
XLookupString(kev, &key, 1, &ksym, NULL); |
|
|
|
|
|
|
|
|
if (kev->state & ShiftMask) { |
|
|
if (kev->state & ShiftMask) { |
|
|
kev->state &= ~ShiftMask; |
|
|
kev->state &= ~ShiftMask; |
|
|
XLookupString(kev, &key, 1, &shksym, NULL); |
|
|
|
|
|
|
|
|
XLookupString(kev, &dummy, 1, &shksym, NULL); |
|
|
kev->state |= ShiftMask; |
|
|
kev->state |= ShiftMask; |
|
|
XLookupString(kev, &key, 1, &ksym, NULL); |
|
|
|
|
|
sh = ksym != shksym ? ShiftMask : 0; |
|
|
|
|
|
} else { |
|
|
|
|
|
XLookupString(kev, &key, 1, &ksym, NULL); |
|
|
|
|
|
sh = 0; |
|
|
|
|
|
|
|
|
if (ksym != shksym) |
|
|
|
|
|
sh = ShiftMask; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (IsModifierKey(ksym)) |
|
|
if (IsModifierKey(ksym)) |
|
|
return; |
|
|
return; |
|
|
if (ksym == XK_Escape && MODMASK(kev->state) == 0) { |
|
|
if (ksym == XK_Escape && MODMASK(kev->state) == 0) { |
|
|