VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxBFE/ConsoleImpl.h@ 5965

Last change on this file since 5965 was 5965, checked in by vboxsync, 17 years ago

VBoxBFE: Forward port of the 1.5 branch enhancements (shared folders, savestate, L4 IDL interface)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
1/** @file
2 *
3 * VBox frontends: Basic Frontend (BFE):
4 * Declaration of Console class
5 */
6
7/*
8 * Copyright (C) 2006-2007 innotek GmbH
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License as published by the Free Software Foundation,
14 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
15 * distribution. VirtualBox OSE is distributed in the hope that it will
16 * be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#ifndef ____H_CONSOLEIMPL
20#define ____H_CONSOLEIMPL
21
22/*
23 * Host key handling.
24 *
25 * The golden rule is that host-key combinations should not be seen
26 * by the guest. For instance a CAD should not have any extra RCtrl down
27 * and RCtrl up around itself. Nor should a resume be followed by a Ctrl-P
28 * that could encourage applications to start printing.
29 *
30 * We must not confuse the hostkey processing into any release sequences
31 * either, the host key is supposed to be explicitly pressing one key.
32 *
33 * Quick state diagram:
34 *
35 * host key down alone
36 * (Normal) ---------------
37 * ^ ^ |
38 * | | v host combination key down
39 * | | (Host key down) ----------------
40 * | | host key up v | |
41 * | |-------------- | other key down v host combination key down
42 * | | (host key used) -------------
43 * | | | ^ |
44 * | (not host key)-- | |---------------
45 * | | | | |
46 * | | ---- other |
47 * | modifiers = 0 v v
48 * -----------------------------------------------
49 */
50typedef enum _HKEYSTATE
51{
52 /** The initial and most common state, pass keystrokes to the guest.
53 * Next state: HKEYSTATE_DOWN
54 * Prev state: Any */
55 HKEYSTATE_NORMAL = 1,
56 /** The host key has been pressed down.
57 * Prev state: HKEYSTATE_NORMAL
58 * Next state: HKEYSTATE_NORMAL - host key up, capture toggle.
59 * Next state: HKEYSTATE_USED - host key combination down.
60 * Next state: HKEYSTATE_NOT_IT - non-host key combination down.
61 */
62 HKEYSTATE_DOWN,
63 /** A host key combination was pressed.
64 * Prev state: HKEYSTATE_DOWN
65 * Next state: HKEYSTATE_NORMAL - when modifiers are all 0
66 */
67 HKEYSTATE_USED,
68 /** A non-host key combination was attempted. Send hostkey down to the
69 * guest and continue until all modifiers have been released.
70 * Prev state: HKEYSTATE_DOWN
71 * Next state: HKEYSTATE_NORMAL - when modifiers are all 0
72 */
73 HKEYSTATE_NOT_IT
74} HKEYSTATE;
75
76typedef enum _CONEVENT
77{
78 CONEVENT_SCREENUPDATE = 1,
79 CONEVENT_KEYUP,
80 CONEVENT_KEYDOWN,
81 CONEVENT_MOUSEMOVE,
82 CONEVENT_MOUSEBUTTONUP,
83 CONEVENT_MOUSEBUTTONDOWN,
84 CONEVENT_FOCUSCHANGE,
85
86 CONEVENT_USR_QUIT,
87 CONEVENT_USR_SCREENUPDATERECT,
88 CONEVENT_USR_SCREENRESIZE,
89 CONEVENT_USR_TITLEBARUPDATE,
90 CONEVENT_USR_SECURELABELUPDATE,
91 CONEVENT_USR_MOUSEPOINTERCHANGE,
92
93 CONEVENT_QUIT,
94
95 CONEVENT_NONE
96} CONEVENT;
97
98class Console
99{
100public:
101 Console()
102 {
103 enmHKeyState = HKEYSTATE_NORMAL;
104 mfInitialized = false;
105 mfInputGrab = false;
106 }
107 virtual ~Console() {}
108
109 virtual void updateTitlebar() = 0;
110 virtual void updateTitlebarProgress(const char *pszStr, int iPercent) = 0;
111
112 virtual void inputGrabStart() = 0;
113 virtual void inputGrabEnd() = 0;
114 virtual bool inputGrabbed() { return mfInputGrab; }
115 virtual void resetCursor() {}
116
117 virtual void mouseSendEvent(int dz) = 0;
118 virtual void onMousePointerShapeChange(bool fVisible,
119 bool fAlpha, uint32_t xHot,
120 uint32_t yHot, uint32_t width,
121 uint32_t height, void *pShape) = 0;
122
123 virtual CONEVENT eventWait() = 0;
124 virtual void eventQuit() = 0;
125 bool initialized() { return mfInitialized; }
126 virtual void progressInfo(PVM pVM, unsigned uPercent, void *pvUser) = 0;
127 virtual void resetKeys(void) = 0;
128
129protected:
130 HKEYSTATE enmHKeyState;
131 bool mfInitialized;
132 bool mfInputGrab;
133};
134
135extern Console *gConsole;
136
137#endif // ____H_CONSOLEIMPL
Note: See TracBrowser for help on using the repository browser.

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