⛏️ index : haiku.git

/*
 * Copyright 2014 Freeman Lou <freemanlou2430@yahoo.com>
 * All rights reserved. Distributed under the terms of the MIT license.
 */
#include "VirtualKeyboardInputDevice.h"

#include <InterfaceDefs.h>


extern "C" BInputServerDevice*
instantiate_input_device()
{
	return new(std::nothrow) VirtualKeyboardInputDevice();
}


VirtualKeyboardInputDevice::VirtualKeyboardInputDevice()
{
}


VirtualKeyboardInputDevice::~VirtualKeyboardInputDevice()
{
}


status_t
VirtualKeyboardInputDevice::InitCheck()
{
	static input_device_ref keyboard = {(char*)"VirtualKeyboard", B_KEYBOARD_DEVICE, (void*)this};
	static input_device_ref* devices[2] = {&keyboard, NULL};

	RegisterDevices(devices);
	return B_OK;
}


status_t
VirtualKeyboardInputDevice::Start(const char* name, void* cookie)
{
	fKeyboardWindow = new VirtualKeyboardWindow(this);
	fKeyboardWindow->Show();
	return B_OK;
}


status_t
VirtualKeyboardInputDevice::Stop(const char* name, void* cookie)
{
	if (fKeyboardWindow->Lock()) {
		fKeyboardWindow->Quit();
		fKeyboardWindow = NULL;
	}
	return B_OK;
}


status_t
VirtualKeyboardInputDevice::Control(const char* name, void* cookie, uint32 command,
	BMessage* message)
{
	if (command == B_KEY_MAP_CHANGED)
		fKeyboardWindow->PostMessage(kKeymapChange);
	return B_OK;
}