VirtualBox

source: vbox/trunk/src/VBox/Main/include/KeyboardImpl.h@ 93115

Last change on this file since 93115 was 93115, checked in by vboxsync, 2 years ago

scm --update-copyright-year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1/* $Id: KeyboardImpl.h 93115 2022-01-01 11:31:46Z vboxsync $ */
2/** @file
3 * VirtualBox COM class implementation
4 */
5
6/*
7 * Copyright (C) 2006-2022 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef MAIN_INCLUDED_KeyboardImpl_h
19#define MAIN_INCLUDED_KeyboardImpl_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24#include "KeyboardWrap.h"
25#include "EventImpl.h"
26
27#include <VBox/vmm/pdmdrv.h>
28
29/** Limit of simultaneously attached devices (just USB and/or PS/2). */
30enum { KEYBOARD_MAX_DEVICES = 2 };
31
32/** Simple keyboard event class. */
33class KeyboardEvent
34{
35public:
36 KeyboardEvent() : scan(-1) {}
37 KeyboardEvent(int _scan) : scan(_scan) {}
38 bool i_isValid()
39 {
40 return (scan & ~0x80) && !(scan & ~0xFF);
41 }
42 int scan;
43};
44class Console;
45
46class ATL_NO_VTABLE Keyboard :
47 public KeyboardWrap
48{
49public:
50
51 DECLARE_COMMON_CLASS_METHODS(Keyboard)
52
53 HRESULT FinalConstruct();
54 void FinalRelease();
55
56 // public initializer/uninitializer for internal purposes only
57 HRESULT init(Console *aParent);
58 void uninit();
59
60 static const PDMDRVREG DrvReg;
61
62 Console *i_getParent() const
63 {
64 return mParent;
65 }
66
67private:
68
69 // Wrapped Keyboard properties
70 HRESULT getEventSource(ComPtr<IEventSource> &aEventSource);
71 HRESULT getKeyboardLEDs(std::vector<KeyboardLED_T> &aKeyboardLEDs);
72
73 // Wrapped Keyboard members
74 HRESULT putScancode(LONG aScancode);
75 HRESULT putScancodes(const std::vector<LONG> &aScancodes,
76 ULONG *aCodesStored);
77 HRESULT putCAD();
78 HRESULT releaseKeys();
79 HRESULT putUsageCode(LONG aUsageCode, LONG aUsagePage, BOOL fKeyRelease);
80
81 static DECLCALLBACK(void) i_keyboardLedStatusChange(PPDMIKEYBOARDCONNECTOR pInterface, PDMKEYBLEDS enmLeds);
82 static DECLCALLBACK(void) i_keyboardSetActive(PPDMIKEYBOARDCONNECTOR pInterface, bool fActive);
83 static DECLCALLBACK(void *) i_drvQueryInterface(PPDMIBASE pInterface, const char *pszIID);
84 static DECLCALLBACK(int) i_drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags);
85 static DECLCALLBACK(void) i_drvDestruct(PPDMDRVINS pDrvIns);
86
87 void onKeyboardLedsChange(PDMKEYBLEDS enmLeds);
88
89 Console * const mParent;
90 /** Pointer to the associated keyboard driver(s). */
91 struct DRVMAINKEYBOARD *mpDrv[KEYBOARD_MAX_DEVICES];
92
93 /* The current guest keyboard LED status. */
94 PDMKEYBLEDS menmLeds;
95
96 const ComObjPtr<EventSource> mEventSource;
97};
98
99#endif /* !MAIN_INCLUDED_KeyboardImpl_h */
100/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use