ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/command.C
(Generate patch)

Comparing rxvt-unicode/src/command.C (file contents):
Revision 1.550 by root, Thu May 22 18:54:32 2014 UTC vs.
Revision 1.552 by sf-exg, Fri Jul 25 17:03:38 2014 UTC

413 413
414void ecb_cold 414void ecb_cold
415rxvt_term::key_press (XKeyEvent &ev) 415rxvt_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 }
498
499 if (valid_keysym)
500 { 492 }
493
494 if (keysym != NoSymbol)
495 {
496 KeySym orig_keysym = keysym;
497
498 /* Shift + F1 - F10 generates F11 - F20 */
499 if (shft && keysym >= XK_F1 && keysym <= XK_F10)
500 {
501 keysym += (XK_F11 - XK_F1);
502 shft = 0; /* turn off Shift */
503 }
504
501 if (keysym >= 0xFF00 && keysym <= 0xFFFF) 505 if (keysym >= 0xFF00 && keysym <= 0xFFFF)
502 { 506 {
503 bool kp = priv_modes & PrivMode_aplKP ? !shft : shft; 507 bool kp = priv_modes & PrivMode_aplKP ? !shft : shft;
504 unsigned int newlen = 1; 508 unsigned int newlen = 1;
505 509
685 meta = 0; 689 meta = 0;
686 } 690 }
687#endif 691#endif
688 /* nil */ ; 692 /* nil */ ;
689 } 693 }
694
695 keysym = orig_keysym;
690 } 696 }
691 697
692 /* escape prefix */ 698 /* escape prefix */
693 if (len && meta 699 if (len && meta
694#ifdef META8_OPTION 700#ifdef META8_OPTION
701 } 707 }
702 708
703 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)))
704 return; 710 return;
705 711
706 if (valid_keysym) 712 if (keysym != NoSymbol)
707 { 713 {
708#ifdef KEYSYM_RESOURCE 714#ifdef KEYSYM_RESOURCE
709 if (keyboard->dispatch (this, keysym, ev.state, kbuf, len)) 715 if (keyboard->dispatch (this, keysym, ev.state, kbuf, len))
710 return; 716 return;
711#endif 717#endif
770#endif 776#endif
771 } 777 }
772 778
773 if (shft) 779 if (shft)
774 { 780 {
775 /* Shift + F1 - F10 generates F11 - F20 */
776 if (keysym >= XK_F1 && keysym <= XK_F10)
777 {
778 keysym += (XK_F11 - XK_F1);
779 shft = 0; /* turn off Shift */
780 }
781 else if (!ctrl && !meta && (priv_modes & PrivMode_ShiftKeys)) 781 if (!ctrl && !meta && (priv_modes & PrivMode_ShiftKeys))
782 { 782 {
783 switch (keysym) 783 switch (keysym)
784 { 784 {
785 /* normal XTerm key bindings */ 785 /* normal XTerm key bindings */
786 case XK_Insert: /* Shift+Insert = paste mouse selection */ 786 case XK_Insert: /* Shift+Insert = paste mouse selection */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines