VirtualBox

Changeset 3938

Show
Ignore:
Timestamp:
07/31/07 13:45:46 (1 year ago)
Author:
vboxsync
Message:

Frontends/VirtualBox: fixed AltGr? again on Linux hosts

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/VBox/Frontends/VirtualBox/src/linux/keyboard.c

    r2529 r3938  
    10531053    VK_F1, VK_F2, 
    10541054    VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10,    /* FFC0 */ 
    1055     VK_F11, VK_F12, VK_F13, VK_F14, VK_F15, VK_F16, 0, 0,       /* FFC8 */ 
     1055    VK_F11, VK_F12, VK_LWIN /* VK_F13 */, VK_RWIN /* VK_F14 */, 
     1056    VK_F15, VK_F16, 0, 0,                                       /* FFC8 */ 
    10561057    0, 0, 0, 0, 0, 0, 0, 0,                                     /* FFD0 */ 
    10571058    0, 0, 0, 0, 0, 0, 0, 0,                                     /* FFD8 */ 
     
    10831084    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,              /* FF58 */ 
    10841085    /* misc keys */ 
    1085     /*?*/ 0, 0x137, /*?*/ 0, 0x152, 0x00, 0x00, 0x00, 0x00,      /* FF60 */ 
     1086    /*?*/ 0, 0x137, /*?*/ 0, 0x152, 0x00, 0x00, 0x00, 0x15D,      /* FF60 */ 
    10861087    /*?*/ 0, /*?*/ 0, 0x38, 0x146, 0x00, 0x00, 0x00, 0x00,       /* FF68 */ 
    10871088    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,              /* FF70 */ 
     
    10991100    0x3B, 0x3C, 
    11001101    0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44,              /* FFC0 */ 
    1101     0x57, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,              /* FFC8 */ 
     1102    0x57, 0x58, 0x15B, 0x15C, 0x00, 0x00, 0x00, 0x00,              /* FFC8 */ 
    11021103    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,              /* FFD0 */ 
    11031104    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,              /* FFD8 */ 
     
    18241825        if (!vkey) 
    18251826        { 
     1827            // @@@AH VBOX hack for AltGr 
     1828            if (e2.keycode == 0x71) 
     1829            { 
     1830                TRACE("VBOX HACK, mapping keycode 0x71 to scancode %X\n", VK_MENU); 
     1831                vkey = VK_MENU | 0x100; 
     1832            } else { 
    18261833            /* Others keys: let's assign OEM virtual key codes in the allowed range, 
    18271834             * that is ([0xba,0xc0], [0xdb,0xe4], 0xe6 (given up) et [0xe9,0xf5]) */ 
    1828             do 
    1829             { 
    1830                 switch (++OEMvkey) 
     1835                do 
    18311836                { 
    1832                 case 0xc1 : OEMvkey=0xdb; break; 
    1833                 case 0xe5 : OEMvkey=0xe9; break; 
    1834                 case 0xf6 : OEMvkey=0xf5; WARN("No more OEM vkey available!\n"); 
     1837                    switch (++OEMvkey) 
     1838                    { 
     1839                    case 0xc1 : OEMvkey=0xdb; break; 
     1840                    case 0xe5 : OEMvkey=0xe9; break; 
     1841                    case 0xf6 : OEMvkey=0xf5; WARN("No more OEM vkey available!\n"); 
     1842                    } 
     1843                } while (OEMvkey < 0xf5 && vkey_used[OEMvkey]); 
     1844 
     1845                vkey = VKEY_IF_NOT_USED(OEMvkey); 
     1846 
     1847                if (TRACE_ON(keyboard)) 
     1848                { 
     1849                    TRACE("OEM specific virtual key %X assigned to keycode %X:\n", 
     1850                                     OEMvkey, e2.keycode); 
     1851                    TRACE("("); 
     1852                    for (i = 0; i < keysyms_per_keycode; i += 1) 
     1853                    { 
     1854                        const char *ksname; 
     1855 
     1856                        keysym = XLookupKeysym(&e2, i); 
     1857                        ksname = XKeysymToString(keysym); 
     1858                        if (!ksname) 
     1859                            ksname = "NoSymbol"; 
     1860                        TRACE( "%lX (%s) ", keysym, ksname); 
     1861                    } 
     1862                    TRACE(")\n"); 
    18351863                } 
    1836             } while (OEMvkey < 0xf5 && vkey_used[OEMvkey]); 
    1837  
    1838             vkey = VKEY_IF_NOT_USED(OEMvkey); 
    1839  
    1840             if (TRACE_ON(keyboard)) 
    1841             { 
    1842                 TRACE("OEM specific virtual key %X assigned to keycode %X:\n", 
    1843                                  OEMvkey, e2.keycode); 
    1844                 TRACE("("); 
    1845                 for (i = 0; i < keysyms_per_keycode; i += 1) 
    1846                 { 
    1847                     const char *ksname; 
    1848  
    1849                     keysym = XLookupKeysym(&e2, i); 
    1850                     ksname = XKeysymToString(keysym); 
    1851                     if (!ksname) 
    1852                         ksname = "NoSymbol"; 
    1853                     TRACE( "%lX (%s) ", keysym, ksname); 
    1854                 } 
    1855                 TRACE(")\n"); 
    18561864            } 
    18571865        } 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy