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

Comparing rxvt-unicode/src/xdefaults.C (file contents):
Revision 1.154 by sf-exg, Mon May 30 18:39:04 2011 UTC vs.
Revision 1.159 by sf-exg, Fri Dec 2 09:03:43 2011 UTC

584 * Define key from XrmEnumerateDatabase. 584 * Define key from XrmEnumerateDatabase.
585 * quarks will be something like 585 * quarks will be something like
586 * "rxvt" "keysym" "0xFF01" 586 * "rxvt" "keysym" "0xFF01"
587 * value will be a string 587 * value will be a string
588 */ 588 */
589int 589static int
590rxvt_define_key (XrmDatabase *database ecb_unused, 590rxvt_define_key (XrmDatabase *database ecb_unused,
591 XrmBindingList bindings ecb_unused, 591 XrmBindingList bindings ecb_unused,
592 XrmQuarkList quarks, 592 XrmQuarkList quarks,
593 XrmRepresentation *type ecb_unused, 593 XrmRepresentation *type ecb_unused,
594 XrmValue *value, 594 XrmValue *value,
663 // parse modifiers 663 // parse modifiers
664 while (str < key) 664 while (str < key)
665 { 665 {
666 unsigned int i; 666 unsigned int i;
667 667
668 for (i=0; i < ecb_array_length (keysym_vocabulary); ++i) 668 for (i = 0; i < ecb_array_length (keysym_vocabulary); ++i)
669 { 669 {
670 if (strncmp (str, keysym_vocabulary [i].name, keysym_vocabulary [i].len) == 0) 670 if (strncmp (str, keysym_vocabulary [i].name, keysym_vocabulary [i].len) == 0)
671 { 671 {
672 state |= keysym_vocabulary[i].value; 672 state |= keysym_vocabulary[i].value;
673 str += keysym_vocabulary[i].len; 673 str += keysym_vocabulary[i].len;
690 sym = strtol (str, &end, 16); 690 sym = strtol (str, &end, 16);
691 if (*end) 691 if (*end)
692 return -1; 692 return -1;
693 } 693 }
694 694
695 wchar_t *ws = rxvt_mbstowcs (arg);
696 if (!HOOK_INVOKE ((this, HOOK_REGISTER_COMMAND, DT_INT, sym, DT_INT, state, DT_WCS_LEN, ws, wcslen (ws), DT_END)))
695 keyboard->register_user_translation (sym, state, arg); 697 keyboard->register_user_translation (sym, state, ws);
698 free (ws);
696 return 1; 699 return 1;
697} 700}
698 701
699# endif /* KEYSYM_RESOURCE */ 702# endif /* KEYSYM_RESOURCE */
700#endif /* NO_RESOURCES */ 703#endif /* NO_RESOURCES */
773 776
774 set_option (optList[entry].index, s); 777 set_option (optList[entry].index, s);
775 } 778 }
776 } 779 }
777 } 780 }
781#endif /* NO_RESOURCES */
782}
778 783
784void
785rxvt_term::extract_keysym_resources ()
786{
787#ifndef NO_RESOURCES
779 /* 788 /*
780 * [R5 or later]: enumerate the resource database 789 * [R5 or later]: enumerate the resource database
781 */ 790 */
782# ifdef KEYSYM_RESOURCE 791# ifdef KEYSYM_RESOURCE
792 XrmDatabase database = XrmGetDatabase (dpy);
783 XrmName name_prefix[3]; 793 XrmName name_prefix[3];
784 XrmClass class_prefix[3]; 794 XrmClass class_prefix[3];
785 795
786 name_prefix[0] = XrmStringToName (rs[Rs_name]); 796 name_prefix[0] = XrmStringToName (rs[Rs_name]);
787 name_prefix[1] = XrmStringToName ("keysym"); 797 name_prefix[1] = XrmStringToName ("keysym");
791 class_prefix[2] = NULLQUARK; 801 class_prefix[2] = NULLQUARK;
792 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ 802 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */
793 XrmEnumerateDatabase (database, name_prefix, class_prefix, 803 XrmEnumerateDatabase (database, name_prefix, class_prefix,
794 XrmEnumOneLevel, rxvt_define_key, NULL); 804 XrmEnumOneLevel, rxvt_define_key, NULL);
795# ifdef RESFALLBACK 805# ifdef RESFALLBACK
796 name_prefix[0] = XrmStringToName (RESFALLBACK);
797 name_prefix[1] = XrmStringToName ("keysym");
798 class_prefix[0] = XrmStringToName (RESFALLBACK); 806 name_prefix[0] = class_prefix[0] = XrmStringToName (RESFALLBACK);
799 class_prefix[1] = XrmStringToName ("Keysym");
800 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ 807 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */
801 XrmEnumerateDatabase (database, name_prefix, class_prefix, 808 XrmEnumerateDatabase (database, name_prefix, class_prefix,
802 XrmEnumOneLevel, rxvt_define_key, NULL); 809 XrmEnumOneLevel, rxvt_define_key, NULL);
803# endif 810# endif
804# endif 811# endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines