blob: a72edfdc0dc0345ea0c48e0e4b6389929fbc7491 [file] [log] [blame]
hellner@google.com23a80652011-08-25 21:40:11 +00001/*
niklase@google.com470e71d2011-07-07 08:21:25 +00002 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000011#include "webrtc/system_wrappers/interface/event_wrapper.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000012
13#if defined(_WIN32)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000014#include <windows.h>
15#include "webrtc/system_wrappers/source/event_win.h"
sjlee@webrtc.org414fa7f2012-09-11 17:25:46 +000016#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000017#include <ApplicationServices/ApplicationServices.h>
18#include <pthread.h>
19#include "webrtc/system_wrappers/source/event_posix.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000020#else
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000021#include <pthread.h>
22#include "webrtc/system_wrappers/source/event_posix.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000023#endif
24
25namespace webrtc {
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000026EventWrapper* EventWrapper::Create() {
niklase@google.com470e71d2011-07-07 08:21:25 +000027#if defined(_WIN32)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000028 return new EventWindows();
niklase@google.com470e71d2011-07-07 08:21:25 +000029#else
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000030 return EventPosix::Create();
niklase@google.com470e71d2011-07-07 08:21:25 +000031#endif
32}
33
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000034int EventWrapper::KeyPressed() {
niklase@google.com470e71d2011-07-07 08:21:25 +000035#if defined(_WIN32)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000036 int key_down = 0;
37 for (int key = 0x20; key < 0x90; key++) {
38 short res = GetAsyncKeyState(key);
39 key_down |= res % 2; // Get the LSB
40 }
41 if (key_down) {
42 return 1;
43 } else {
44 return 0;
45 }
sjlee@webrtc.org414fa7f2012-09-11 17:25:46 +000046#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000047 bool key_down = false;
48 // loop through all Mac virtual key constant values
49 for (int key_index = 0; key_index <= 0x5C; key_index++) {
50 key_down |= CGEventSourceKeyState(kCGEventSourceStateHIDSystemState,
51 key_index);
52 }
53 if (key_down) {
54 return 1;
55 } else {
56 return 0;
57 }
niklase@google.com470e71d2011-07-07 08:21:25 +000058#else
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000059 return -1;
niklase@google.com470e71d2011-07-07 08:21:25 +000060#endif
61}
62} // namespace webrtc