… | |
… | |
413 | |
413 | |
414 | void ecb_cold |
414 | void ecb_cold |
415 | rxvt_term::key_press (XKeyEvent &ev) |
415 | rxvt_term::key_press (XKeyEvent &ev) |
416 | { |
416 | { |
417 | int ctrl, meta, shft, len; |
417 | int ctrl, meta, shft, len; |
418 | KeySym keysym; |
418 | KeySym keysym = NoSymbol; |
419 | int valid_keysym; |
|
|
420 | char rkbuf[KBUFSZ + 1]; |
419 | char rkbuf[KBUFSZ + 1]; |
421 | char *kbuf = rkbuf + 1; |
420 | char *kbuf = rkbuf + 1; |
422 | |
421 | |
423 | #if ISO_14755 |
422 | #if ISO_14755 |
424 | if (iso14755buf & ISO_14755_52) |
423 | if (iso14755buf & ISO_14755_52) |
… | |
… | |
483 | } |
482 | } |
484 | } |
483 | } |
485 | else |
484 | else |
486 | len = 0; |
485 | len = 0; |
487 | } |
486 | } |
488 | |
|
|
489 | valid_keysym = status_return == XLookupKeySym |
|
|
490 | || status_return == XLookupBoth; |
|
|
491 | } |
487 | } |
492 | else |
488 | else |
493 | #endif |
489 | #endif |
494 | { |
490 | { |
495 | len = XLookupString (&ev, kbuf, KBUFSZ, &keysym, &compose); |
491 | len = XLookupString (&ev, kbuf, KBUFSZ, &keysym, &compose); |
496 | valid_keysym = keysym != NoSymbol; |
|
|
497 | } |
492 | } |
498 | |
493 | |
499 | if (valid_keysym) |
494 | if (keysym != NoSymbol) |
500 | { |
495 | { |
501 | KeySym orig_keysym = keysym; |
496 | KeySym orig_keysym = keysym; |
502 | |
497 | |
503 | /* Shift + F1 - F10 generates F11 - F20 */ |
498 | /* Shift + F1 - F10 generates F11 - F20 */ |
504 | if (shft && keysym >= XK_F1 && keysym <= XK_F10) |
499 | if (shft && keysym >= XK_F1 && keysym <= XK_F10) |
… | |
… | |
712 | } |
707 | } |
713 | |
708 | |
714 | if (HOOK_INVOKE ((this, HOOK_KEY_PRESS, DT_XEVENT, &ev, DT_INT, keysym, DT_STR_LEN, kbuf, len, DT_END))) |
709 | if (HOOK_INVOKE ((this, HOOK_KEY_PRESS, DT_XEVENT, &ev, DT_INT, keysym, DT_STR_LEN, kbuf, len, DT_END))) |
715 | return; |
710 | return; |
716 | |
711 | |
717 | if (valid_keysym) |
712 | if (keysym != NoSymbol) |
718 | { |
713 | { |
719 | #ifdef KEYSYM_RESOURCE |
714 | #ifdef KEYSYM_RESOURCE |
720 | if (keyboard->dispatch (this, keysym, ev.state, kbuf, len)) |
715 | if (keyboard->dispatch (this, keysym, ev.state, kbuf, len)) |
721 | return; |
716 | return; |
722 | #endif |
717 | #endif |