return console->vtbl->GetDisplay(console, display);
}
+static nsresult
+_consoleGetKeyboard(IConsole *console, IKeyboard **keyboard)
+{
+ return console->vtbl->GetKeyboard(console, keyboard);
+}
+
static nsresult
_progressWaitForCompletion(IProgress *progress, PRInt32 timeout)
{
return hardDisk->vtbl->GetFormat(hardDisk, format);
}
+static nsresult
+_keyboardPutScancode(IKeyboard *keyboard, PRInt32 scancode)
+{
+ return keyboard->vtbl->PutScancode(keyboard, scancode);
+}
+
+static nsresult
+_keyboardPutScancodes(IKeyboard *keyboard, PRUint32 scancodesSize,
+ PRInt32 *scanCodes, PRUint32 *codesStored)
+{
+ return keyboard->vtbl->PutScancodes(keyboard, scancodesSize, scanCodes,
+ codesStored);
+}
+
static bool _machineStateOnline(PRUint32 state)
{
return ((state >= MachineState_FirstOnline) &&
.TakeSnapshot = _consoleTakeSnapshot,
.DeleteSnapshot = _consoleDeleteSnapshot,
.GetDisplay = _consoleGetDisplay,
+ .GetKeyboard = _consoleGetKeyboard,
};
static vboxUniformedIProgress _UIProgress = {
.GetFormat = _hardDiskGetFormat,
};
+static vboxUniformedIKeyboard _UIKeyboard = {
+ .PutScancode = _keyboardPutScancode,
+ .PutScancodes = _keyboardPutScancodes,
+};
+
static uniformedMachineStateChecker _machineStateChecker = {
.Online = _machineStateOnline,
.Inactive = _machineStateInactive,
pVBoxAPI->UIHNInterface = _UIHNInterface;
pVBoxAPI->UIDHCPServer = _UIDHCPServer;
pVBoxAPI->UIHardDisk = _UIHardDisk;
+ pVBoxAPI->UIKeyboard = _UIKeyboard;
pVBoxAPI->machineStateChecker = _machineStateChecker;
#if VBOX_API_VERSION <= 2002000 || VBOX_API_VERSION >= 4000000
PRUnichar *description, IProgress **progress);
nsresult (*DeleteSnapshot)(IConsole *console, vboxIIDUnion *iidu, IProgress **progress);
nsresult (*GetDisplay)(IConsole *console, IDisplay **display);
+ nsresult (*GetKeyboard)(IConsole *console, IKeyboard **keyboard);
} vboxUniformedIConsole;
/* Functions for IProgress */
nsresult (*GetFormat)(IHardDisk *hardDisk, PRUnichar **format);
} vboxUniformedIHardDisk;
+typedef struct {
+ nsresult (*PutScancode)(IKeyboard *keyboard, PRInt32 scancode);
+ nsresult (*PutScancodes)(IKeyboard *keyboard, PRUint32 scancodesSize,
+ PRInt32 *scanCodes, PRUint32 *codesStored);
+} vboxUniformedIKeyboard;
+
typedef struct {
bool (*Online)(PRUint32 state);
bool (*Inactive)(PRUint32 state);
vboxUniformedIHNInterface UIHNInterface;
vboxUniformedIDHCPServer UIDHCPServer;
vboxUniformedIHardDisk UIHardDisk;
+ vboxUniformedIKeyboard UIKeyboard;
uniformedMachineStateChecker machineStateChecker;
/* vbox API features */
bool domainEventCallbacks;