1/* 2 * 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 11#include "event_wrapper.h" 12 13#if defined(_WIN32) 14 #include <windows.h> 15 #include "event_win.h" 16#elif defined(WEBRTC_MAC_INTEL) 17 #include <ApplicationServices/ApplicationServices.h> 18 #include <pthread.h> 19 #include "event_posix.h" 20#else 21 #include <pthread.h> 22 #include "event_posix.h" 23#endif 24 25namespace webrtc { 26EventWrapper* EventWrapper::Create() 27{ 28#if defined(_WIN32) 29 return new EventWindows(); 30#else 31 return EventPosix::Create(); 32#endif 33} 34 35int EventWrapper::KeyPressed() 36{ 37#if defined(_WIN32) 38 int keyDown = 0; 39 for(int key = 0x20; key < 0x90; key++) 40 { 41 short res = GetAsyncKeyState(key); 42 keyDown |= res%2; // Get the LSB 43 } 44 if(keyDown) 45 { 46 return 1; 47 } 48 else 49 { 50 return 0; 51 } 52#elif defined(WEBRTC_MAC_INTEL) 53 bool keyDown = false; 54 // loop through all Mac virtual key constant values 55 for(int keyIndex = 0; keyIndex <= 0x5C; keyIndex++) 56 { 57 keyDown |= CGEventSourceKeyState(kCGEventSourceStateHIDSystemState, keyIndex); 58 } 59 if(keyDown) 60 { 61 return 1; 62 } 63 else 64 { 65 return 0; 66 } 67#else 68 return -1; 69#endif 70} 71} // namespace webrtc 72