/[pearpc]/src/system/ui/win32/syskeyboard.cc
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /src/system/ui/win32/syskeyboard.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 7 months ago) by dpavlin
File size: 2261 byte(s)
import upstream CVS
1 /*
2 * PearPC
3 * keyboard.cc - keyboard access functions for Windows
4 *
5 * Copyright (C) 1999-2004 Stefan Weyergraf
6 * Copyright (C) 1999-2004 Sebastian Biallas (sb@biallas.net)
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22 #define WIN32_LEAN_AND_MEAN
23 #include <windows.h>
24 #include <windowsx.h>
25
26 #undef FASTCALL
27
28 #include <cstdlib>
29
30 #include "system/systhread.h"
31 #include "syswin.h"
32
33 #include "system/display.h"
34 #include "system/keyboard.h"
35
36 class WinSystemKeyboard: public SystemKeyboard {
37 public:
38 virtual int getKeybLEDs()
39 {
40 int r = 0;
41 if (GetAsyncKeyState(VK_NUMLOCK) & 1) r |= KEYB_LED_NUM;
42 if (GetAsyncKeyState(VK_CAPITAL) & 1) r |= KEYB_LED_CAPS;
43 if (GetAsyncKeyState(VK_SCROLL) & 1) r |= KEYB_LED_SCROLL;
44 return r;
45 }
46
47 virtual void setKeybLEDs(int leds)
48 {
49 int r = getKeybLEDs() ^ leds;
50 if (r & KEYB_LED_NUM) {
51 keybd_event(VK_NUMLOCK, MapVirtualKey(VK_NUMLOCK, 0), KEYEVENTF_EXTENDEDKEY, 0);
52 keybd_event(VK_NUMLOCK, MapVirtualKey(VK_NUMLOCK, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
53 }
54 if (r & KEYB_LED_CAPS) {
55 keybd_event(VK_CAPITAL, MapVirtualKey(VK_CAPITAL, 0), KEYEVENTF_EXTENDEDKEY, 0);
56 keybd_event(VK_CAPITAL, MapVirtualKey(VK_CAPITAL, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
57 }
58 if (r & KEYB_LED_SCROLL) {
59 keybd_event(VK_SCROLL, MapVirtualKey(VK_SCROLL, 0), KEYEVENTF_EXTENDEDKEY, 0);
60 keybd_event(VK_SCROLL, MapVirtualKey(VK_SCROLL, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
61 }
62 }
63
64 virtual bool handleEvent(const SystemEvent &ev)
65 {
66 return SystemKeyboard::handleEvent(ev);
67 }
68 };
69
70 SystemKeyboard *allocSystemKeyboard()
71 {
72 if (gKeyboard) return NULL;
73 return new WinSystemKeyboard();
74 }

  ViewVC Help
Powered by ViewVC 1.1.26