VirtualBox

Changeset 26440 in vbox


Ignore:
Timestamp:
Feb 11, 2010 4:18:31 PM (15 years ago)
Author:
vboxsync
Message:

Main: configurable HID types work

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/settings.h

    r26156 r26440  
    578578                        fAccelerate2DVideo;     // requires settings version 1.8 (VirtualBox 3.1)
    579579    FirmwareType_T      firmwareType;           // requires settings version 1.9 (VirtualBox 3.1)
     580    PointingHidType_T   pointingHidType;        // requires settings version 1.10 (VirtualBox 3.2)
     581    KeyboardHidType_T   keyboardHidType;        // requires settings version 1.10 (VirtualBox 3.2)
    580582
    581583    VRDPSettings        vrdpSettings;
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp

    r26401 r26440  
    674674    m_Machine.SetFirmwareType(fwType);
    675675
     676    // Set recommended human interface device types
     677    if (type.GetRecommendedUsbHid())
     678    {
     679        m_Machine.SetKeyboardHidType(KKeyboardHidType_USBKeyboard);
     680        m_Machine.SetPointingHidType(KPointingHidType_USBMouse);
     681    }
     682
    676683    /* Register the VM prior to attaching hard disks */
    677684    vbox.RegisterMachine(m_Machine);
  • trunk/src/VBox/Main/Global.cpp

    r26392 r26440  
    165165      VBOXOSTYPE_QNX,             VBOXOSHINT_HWVIRTEX,  512,   4,  4 * _1K, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4 },
    166166    { "MacOS",  "Mac OS X",             SchemaDefs_OSTypeId_MacOS,             "Mac OS X",
    167       VBOXOSTYPE_MacOS,           VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE,  1024,   4,  20 * _1K, NetworkAdapterType_I82543GC, 0, StorageControllerType_ICH6 },
     167      VBOXOSTYPE_MacOS,           VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_USBHID,  1024,   4,  20 * _1K, NetworkAdapterType_I82543GC, 0, StorageControllerType_ICH6 },
    168168    { "MacOS",  "Mac OS X",             SchemaDefs_OSTypeId_MacOS_64,          "Mac OS X (64 bit)",
    169       VBOXOSTYPE_MacOS_x64,       VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT ,  1024,   4,  20 * _1K, NetworkAdapterType_I82543GC, 0, StorageControllerType_ICH6 },
     169      VBOXOSTYPE_MacOS_x64,       VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT | VBOXOSHINT_USBHID,  1024,   4,  20 * _1K, NetworkAdapterType_I82543GC, 0, StorageControllerType_ICH6 },
    170170};
    171171
  • trunk/src/VBox/Main/GuestOSTypeImpl.cpp

    r26389 r26440  
    316316}
    317317
     318STDMETHODIMP GuestOSType::COMGETTER(RecommendedUsbHid) (BOOL *aRecommendedUsbHid)
     319{
     320    CheckComArgOutPointerValid(aRecommendedUsbHid);
     321
     322    AutoCaller autoCaller(this);
     323    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     324
     325    /* HID type is constant during life time, no need to lock */
     326    *aRecommendedUsbHid = !!(mOSHint & VBOXOSHINT_USBHID);
     327
     328    return S_OK;
     329}
    318330
    319331/* vi: set tabstop=4 shiftwidth=4 expandtab: */
  • trunk/src/VBox/Main/MachineImpl.cpp

    r26426 r26440  
    831831    mHWData.backup();
    832832    mHWData->mFirmwareType = aFirmwareType;
     833
     834    return S_OK;
     835}
     836
     837STDMETHODIMP Machine::COMGETTER(KeyboardHidType)(KeyboardHidType_T *aKeyboardHidType)
     838{
     839    CheckComArgOutPointerValid(aKeyboardHidType);
     840
     841    AutoCaller autoCaller(this);
     842    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     843
     844    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     845
     846    *aKeyboardHidType = mHWData->mKeyboardHidType;
     847
     848    return S_OK;
     849}
     850
     851STDMETHODIMP Machine::COMSETTER(KeyboardHidType)(KeyboardHidType_T  aKeyboardHidType)
     852{
     853    AutoCaller autoCaller(this);
     854    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     855    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     856
     857    int rc = checkStateDependency(MutableStateDep);
     858    if (FAILED(rc)) return rc;
     859
     860    setModified(IsModified_MachineData);
     861    mHWData.backup();
     862    mHWData->mKeyboardHidType = aKeyboardHidType;
     863
     864    return S_OK;
     865}
     866
     867STDMETHODIMP Machine::COMGETTER(PointingHidType)(PointingHidType_T *aPointingHidType)
     868{
     869    CheckComArgOutPointerValid(aPointingHidType);
     870
     871    AutoCaller autoCaller(this);
     872    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     873
     874    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     875
     876    *aPointingHidType = mHWData->mPointingHidType;
     877
     878    return S_OK;
     879}
     880
     881STDMETHODIMP Machine::COMSETTER(PointingHidType)(PointingHidType_T  aPointingHidType)
     882{
     883    AutoCaller autoCaller(this);
     884    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     885    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     886
     887    int rc = checkStateDependency(MutableStateDep);
     888    if (FAILED(rc)) return rc;
     889
     890    setModified(IsModified_MachineData);
     891    mHWData.backup();
     892    mHWData->mPointingHidType = aPointingHidType;
    833893
    834894    return S_OK;
     
    61946254        mHWData->mAccelerate2DVideoEnabled = data.fAccelerate2DVideo;
    61956255        mHWData->mFirmwareType = data.firmwareType;
     6256        mHWData->mPointingHidType = data.pointingHidType;
     6257        mHWData->mKeyboardHidType = data.keyboardHidType;
    61966258
    61976259#ifdef VBOX_WITH_VRDP
     
    72047266        // firmware
    72057267        data.firmwareType = mHWData->mFirmwareType;
     7268
     7269        // HID
     7270        data.pointingHidType = mHWData->mPointingHidType;
     7271        data.keyboardHidType = mHWData->mKeyboardHidType;
    72067272
    72077273        // boot order
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r26389 r26440  
    11051105    name="FirmwareType"
    11061106    uuid="b903f264-c230-483e-ac74-2b37ce60d371"
    1107   >
     1107   >
    11081108    <desc>
    11091109      Firmware type.
     
    11251125    </const>
    11261126  </enum>
     1127
     1128   <enum
     1129    name="PointingHidType"
     1130    uuid="0d3c17a2-821a-4b2e-ae41-890c6c60aa97"
     1131   >
     1132    <desc>
     1133      Type of pointing device.
     1134    </desc>
     1135    <const name="None"           value="1">
     1136      <desc>No mouse.</desc>
     1137    </const>
     1138    <const name="PS2Mouse"       value="2">
     1139      <desc>PS/2 auxillary device, a.k.a. mouse.</desc>
     1140    </const>
     1141    <const name="USBMouse"       value="3">
     1142      <desc>USB mouse (relative pointer).</desc>
     1143    </const>
     1144    <const name="USBTablet"      value="4">
     1145      <desc>USB tablet (absolute pointer).</desc>
     1146    </const>
     1147    <const name="ComboMouse"     value="5">
     1148      <desc>Combined device, working as PS/2 or USB mouse, depending on guest behavior.
     1149      Using of such device can have negative performance implications. </desc>
     1150    </const>
     1151  </enum>
     1152
     1153   <enum
     1154    name="KeyboardHidType"
     1155    uuid="5a5b0996-3a3e-44bb-9019-56979812cbcc"
     1156   >
     1157    <desc>
     1158      Type of keyboard device.
     1159    </desc>
     1160    <const name="None"              value="1">
     1161      <desc>No keyboard.</desc>
     1162    </const>
     1163    <const name="PS2Keyboard"       value="2">
     1164      <desc>PS/2 keyboard.</desc>
     1165    </const>
     1166    <const name="USBKeyboard"       value="3">
     1167      <desc>USB keyboard.</desc>
     1168    </const>
     1169    <const name="ComboKeyboard"     value="4">
     1170      <desc>Combined device, working as PS/2 or USB keyboard, depending on guest behavior.
     1171      Using of such device can have negative performance implications. </desc>
     1172    </const>
     1173  </enum>
     1174
     1175
    11271176
    11281177  <!--
     
    41784227  <interface
    41794228     name="IMachine" extends="$unknown"
    4180      uuid="6d7f40fa-77be-4366-a053-f58e81453a6a"
     4229     uuid="91470ab5-8457-48ab-8a3f-a2e68d8ae923"
    41814230     wsmap="managed"
    41824231     >
     
    44174466    </attribute>
    44184467
    4419      <attribute name="firmwareType" type="FirmwareType">
     4468    <attribute name="firmwareType" type="FirmwareType">
    44204469      <desc>Type of firmware (such as legacy BIOS or EFI), used for initial
    44214470       bootstrap in this VM.</desc>
     4471    </attribute>
     4472
     4473    <attribute name="pointingHidType" type="PointingHidType">
     4474      <desc>Type of pointing HID (such as mouse or tablet), used in this VM.</desc>
     4475    </attribute>
     4476
     4477    <attribute name="keyboardHidType" type="KeyboardHidType">
     4478      <desc>Type of keyboard HID, used in this VM.</desc>
    44224479    </attribute>
    44234480
     
    82078264  <interface
    82088265    name="IGuestOSType" extends="$unknown"
    8209     uuid="a44b7bab-bcfd-407b-8b4a-49877deb9d2d"
     8266    uuid="1498bf9c-c662-4cee-8f6f-59ec933fa892"
    82108267    wsmap="struct"
    82118268  >
     
    82678324    <attribute name="recommendedFirmware" type="FirmwareType" readonly="yes">
    82688325      <desc>Recommended firmware type.</desc>
     8326    </attribute>
     8327
     8328    <attribute name="recommendedUsbHid" type="boolean" readonly="yes">
     8329      <desc>Returns @c true if using USB Human Interface Devices, such as keyboard and mouse recommended.</desc>
    82698330    </attribute>
    82708331
  • trunk/src/VBox/Main/include/Global.h

    r26389 r26440  
    4141#define VBOXOSHINT_EFI                  RT_BIT(3)
    4242#define VBOXOSHINT_PAE                  RT_BIT(4)
     43#define VBOXOSHINT_USBHID               RT_BIT(5)
     44
    4345
    4446/**
  • trunk/src/VBox/Main/include/GuestOSTypeImpl.h

    r26389 r26440  
    7777    STDMETHOD(COMGETTER(RecommendedStorageController)) (StorageControllerType_T *aStorageControllerType);
    7878    STDMETHOD(COMGETTER(RecommendedPae)) (BOOL *aRecommendedExtHw);
     79    STDMETHOD(COMGETTER(RecommendedUsbHid)) (BOOL *aRecommendedUsbHid);
    7980
    8081    // public methods only for internal purposes
  • trunk/src/VBox/Main/include/MachineImpl.h

    r26323 r26440  
    265265        ~HWData();
    266266
    267         Bstr           mHWVersion;
    268         Guid           mHardwareUUID;   /**< If Null, use mData.mUuid. */
    269         ULONG          mMemorySize;
    270         ULONG          mMemoryBalloonSize;
    271         ULONG          mStatisticsUpdateInterval;
    272         ULONG          mVRAMSize;
    273         ULONG          mMonitorCount;
    274         BOOL           mHWVirtExEnabled;
    275         BOOL           mHWVirtExExclusive;
    276         BOOL           mHWVirtExNestedPagingEnabled;
    277         BOOL           mHWVirtExVPIDEnabled;
    278         BOOL           mAccelerate2DVideoEnabled;
    279         BOOL           mPAEEnabled;
    280         BOOL           mSyntheticCpu;
    281         ULONG          mCPUCount;
    282         BOOL           mCPUHotPlugEnabled;
    283         BOOL           mAccelerate3DEnabled;
    284 
    285         BOOL           mCPUAttached[SchemaDefs::MaxCPUCount];
    286 
    287         settings::CpuIdLeaf mCpuIdStdLeafs[10];
    288         settings::CpuIdLeaf mCpuIdExtLeafs[10];
    289 
    290         DeviceType_T   mBootOrder[SchemaDefs::MaxBootPosition];
     267        Bstr                 mHWVersion;
     268        Guid                 mHardwareUUID;   /**< If Null, use mData.mUuid. */
     269        ULONG                mMemorySize;
     270        ULONG                mMemoryBalloonSize;
     271        ULONG                mStatisticsUpdateInterval;
     272        ULONG                mVRAMSize;
     273        ULONG                mMonitorCount;
     274        BOOL                 mHWVirtExEnabled;
     275        BOOL                 mHWVirtExExclusive;
     276        BOOL                 mHWVirtExNestedPagingEnabled;
     277        BOOL                 mHWVirtExVPIDEnabled;
     278        BOOL                 mAccelerate2DVideoEnabled;
     279        BOOL                 mPAEEnabled;
     280        BOOL                 mSyntheticCpu;
     281        ULONG                mCPUCount;
     282        BOOL                 mCPUHotPlugEnabled;
     283        BOOL                 mAccelerate3DEnabled;
     284
     285        BOOL                 mCPUAttached[SchemaDefs::MaxCPUCount];
     286
     287        settings::CpuIdLeaf  mCpuIdStdLeafs[10];
     288        settings::CpuIdLeaf  mCpuIdExtLeafs[10];
     289
     290        DeviceType_T         mBootOrder[SchemaDefs::MaxBootPosition];
    291291
    292292        typedef std::list< ComObjPtr<SharedFolder> > SharedFolderList;
    293         SharedFolderList mSharedFolders;
    294 
    295         ClipboardMode_T mClipboardMode;
     293        SharedFolderList     mSharedFolders;
     294
     295        ClipboardMode_T      mClipboardMode;
    296296
    297297        typedef std::list<GuestProperty> GuestPropertyList;
    298         GuestPropertyList mGuestProperties;
    299         BOOL           mPropertyServiceActive;
    300         Utf8Str        mGuestPropertyNotificationPatterns;
    301 
    302         FirmwareType_T mFirmwareType;
     298        GuestPropertyList    mGuestProperties;
     299        BOOL                 mPropertyServiceActive;
     300        Utf8Str              mGuestPropertyNotificationPatterns;
     301
     302        FirmwareType_T       mFirmwareType;
     303        KeyboardHidType_T    mKeyboardHidType;
     304        PointingHidType_T    mPointingHidType;
    303305    };
    304306
     
    472474    STDMETHOD(COMGETTER(FirmwareType)) (FirmwareType_T *aFirmware);
    473475    STDMETHOD(COMSETTER(FirmwareType)) (FirmwareType_T  aFirmware);
     476    STDMETHOD(COMGETTER(KeyboardHidType)) (KeyboardHidType_T *aKeyboardHidType);
     477    STDMETHOD(COMSETTER(KeyboardHidType)) (KeyboardHidType_T  aKeyboardHidType);
     478    STDMETHOD(COMGETTER(PointingHidType)) (PointingHidType_T *aPointingHidType);
     479    STDMETHOD(COMSETTER(PointingHidType)) (PointingHidType_T  aPointingHidType);
    474480
    475481    STDMETHOD(QuerySavedThumbnailSize)(ULONG *aSize, ULONG *aWidth, ULONG *aHeight);
  • trunk/src/VBox/Main/xml/Settings.cpp

    r26424 r26440  
    14721472          fAccelerate2DVideo(false),
    14731473          firmwareType(FirmwareType_BIOS),
     1474          pointingHidType(PointingHidType_PS2Mouse),
     1475          keyboardHidType(KeyboardHidType_PS2Keyboard),
    14741476          clipboardMode(ClipboardMode_Bidirectional),
    14751477          ulMemoryBalloonSize(0),
     
    15161518                  && (fAccelerate2DVideo        == h.fAccelerate2DVideo)
    15171519                  && (firmwareType              == h.firmwareType)
     1520                  && (pointingHidType           == h.pointingHidType)
     1521                  && (keyboardHidType           == h.keyboardHidType)
    15181522                  && (vrdpSettings              == h.vrdpSettings)
    15191523                  && (biosSettings              == h.biosSettings)
     
    20472051                    throw ConfigFileError(this,
    20482052                                          pelmHwChild,
    2049                                           N_("Invalid value '%s' in Boot/Firmware/@type"),
     2053                                          N_("Invalid value '%s' in Firmware/@type"),
    20502054                                          strFirmwareType.c_str());
     2055            }
     2056        }
     2057        else if (pelmHwChild->nameEquals("HID"))
     2058        {
     2059            Utf8Str strHidType;
     2060            if (pelmHwChild->getAttributeValue("Keyboard", strHidType))
     2061            {
     2062                if (    (strHidType == "None")
     2063                        )
     2064                    hw.keyboardHidType = KeyboardHidType_None;
     2065                else if (    (strHidType == "USBKeyboard")
     2066                        )
     2067                    hw.keyboardHidType = KeyboardHidType_USBKeyboard;
     2068                else if (    (strHidType == "PS2Keyboard")
     2069                        )
     2070                    hw.keyboardHidType = KeyboardHidType_PS2Keyboard;
     2071                else if (    (strHidType == "ComboKeyboard")
     2072                        )
     2073                    hw.keyboardHidType = KeyboardHidType_ComboKeyboard;
     2074                else
     2075                    throw ConfigFileError(this,
     2076                                          pelmHwChild,
     2077                                          N_("Invalid value '%s' in HID/Keyboard/@type"),
     2078                                          strHidType.c_str());
     2079            }
     2080            if (pelmHwChild->getAttributeValue("Pointing", strHidType))
     2081            {
     2082                 if (    (strHidType == "None")
     2083                        )
     2084                    hw.pointingHidType = PointingHidType_None;
     2085                else if (    (strHidType == "USBMouse")
     2086                        )
     2087                    hw.pointingHidType = PointingHidType_USBMouse;
     2088                else if (    (strHidType == "UsbTablet")
     2089                        )
     2090                    hw.pointingHidType = PointingHidType_USBTablet;
     2091                else if (    (strHidType == "PS2Mouse")
     2092                        )
     2093                    hw.pointingHidType = PointingHidType_PS2Mouse;
     2094                else if (    (strHidType == "ComboMouse")
     2095                        )
     2096                    hw.pointingHidType = PointingHidType_ComboMouse;
     2097                else
     2098                    throw ConfigFileError(this,
     2099                                          pelmHwChild,
     2100                                          N_("Invalid value '%s' in HID/Pointing/@type"),
     2101                                          strHidType.c_str());
    20512102            }
    20522103        }
     
    29172968    }
    29182969
     2970    if (    (m->sv >= SettingsVersion_v1_10)
     2971       )
     2972    {
     2973         xml::ElementNode *pelmHid = pelmHardware->createChild("HID");
     2974         const char *pcszHid;
     2975
     2976         switch (hw.pointingHidType)
     2977         {
     2978            case PointingHidType_USBMouse:      pcszHid = "USBMouse";   break;
     2979            case PointingHidType_USBTablet:     pcszHid = "USBTablet";  break;
     2980            case PointingHidType_PS2Mouse:      pcszHid = "PS2Mouse";   break;
     2981            case PointingHidType_ComboMouse:    pcszHid = "ComboMouse"; break;
     2982            case PointingHidType_None:          pcszHid = "None";       break;
     2983            default:            Assert(false);  pcszHid = "PS2Mouse";   break;
     2984         }
     2985         pelmHid->setAttribute("Pointing", pcszHid);
     2986
     2987         switch (hw.keyboardHidType)
     2988         {
     2989            case KeyboardHidType_USBKeyboard:   pcszHid = "USBKeyboard";   break;
     2990            case KeyboardHidType_PS2Keyboard:   pcszHid = "PS2Keyboard";   break;
     2991            case KeyboardHidType_ComboKeyboard: pcszHid = "ComboKeyboard"; break;
     2992            case KeyboardHidType_None:          pcszHid = "None";          break;
     2993            default:            Assert(false);  pcszHid = "PS2Keyboard";   break;
     2994         }
     2995         pelmHid->setAttribute("Keyboard", pcszHid);
     2996    }
     2997
    29192998    xml::ElementNode *pelmBoot = pelmHardware->createChild("Boot");
    29202999    for (BootOrderMap::const_iterator it = hw.mapBootOrder.begin();
     
    34893568         && (    fRTCUseUTC
    34903569              || hardwareMachine.fCpuHotPlug
     3570              || hardwareMachine.pointingHidType != PointingHidType_PS2Mouse
     3571              || hardwareMachine.keyboardHidType != KeyboardHidType_PS2Keyboard
    34913572            )
    34923573       )
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette