~onboard/virtkey/main

« back to all changes in this revision

Viewing changes to src/ucs2keysym.c

  • Committer: marmuta
  • Date: 2013-04-22 22:26:45 UTC
  • Revision ID: marmvta@gmail.com-20130422222645-7za48pdif8ute2cs
Fix press_unicode and release_unicode not typing the euro currency sign (LP #1164009).

Show diffs side-by-side

added added

removed removed

Lines of Context:
797
797
  { 0x0ef9, 0x11f0 }, /*  Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */
798
798
  { 0x0efa, 0x11f9 }, /*        Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
799
799
  { 0x0eff, 0x20a9 }, /*                  Korean_Won ₩ WON SIGN */
800
 
  { 0x13a4, 0x20ac }, /*                        Euro € EURO SIGN */
801
800
  { 0x13bc, 0x0152 }, /*                          OE Œ LATIN CAPITAL LIGATURE OE */
802
801
  { 0x13bd, 0x0153 }, /*                          oe œ LATIN SMALL LIGATURE OE */
803
802
  { 0x13be, 0x0178 }, /*                  Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
807
806
KeySym ucs2keysym(long ucs)
808
807
{
809
808
    int i;
810
 
    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
 
809
    int length = sizeof(keysymtab) / sizeof(*keysymtab);
811
810
    //int mid;
812
811
 
813
812
    /* first check for Latin-1 characters (1:1 mapping) */
816
815
        return ucs;
817
816
 
818
817
    /* binary search in table */
819
 
   /* while (max >= min) {
820
 
        mid = (min + max) / 2;
821
 
        if (keysymtab[mid].ucs < ucs)
822
 
            min = mid + 1;
823
 
        else if (keysymtab[mid].ucs > ucs)
824
 
            max = mid - 1;
825
 
        else {
826
 
            return keysymtab[mid].keysym;
827
 
        }
828
 
 
829
 
    }*/
830
 
    for(i = 0; i < max; i++){
831
 
        if (keysymtab[i].ucs == ucs){
832
 
                return keysymtab[i].keysym;
833
 
        }
834
 
        }
835
 
 
836
 
 
837
 
        return ucs | 0x01000000;
 
818
    /* while (max >= min) {
 
819
       mid = (min + max) / 2;
 
820
       if (keysymtab[mid].ucs < ucs)
 
821
       min = mid + 1;
 
822
       else if (keysymtab[mid].ucs > ucs)
 
823
       max = mid - 1;
 
824
       else {
 
825
       return keysymtab[mid].keysym;
 
826
       }
 
827
 
 
828
       }*/
 
829
    for(i = 0; i < length; i++)
 
830
    {
 
831
        if (keysymtab[i].ucs == ucs)
 
832
        {
 
833
            return keysymtab[i].keysym;
 
834
        }
 
835
    }
 
836
 
 
837
 
 
838
    return ucs | 0x01000000;
838
839
 
839
840
}