/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide 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 dpavlin 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