osx获取全局键盘/鼠标事件
2011-11-30 14:57
387 查看
下面的代码可以获取osx下的键盘输入,这个是全局的,也就是说在其他Application中输入键盘事件,这些事件也能被捕获。
CGEventRef myCallBack(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo) { UniCharCount actualStringLength = 0; UniChar inputString[128]; CGEventKeyboardGetUnicodeString(event, 128, &actualStringLength, inputString); NSString* inputedString = [[NSString alloc] initWithBytes:(const void*)inputString length:actualStringLength encoding:NSUTF8StringEncoding]; CGEventFlags flag = CGEventGetFlags(event); NSLog(@"inputed string:%@, flags:%lld", inputedString, flag); return event; }
CFRunLoopRef theRL = CFRunLoopGetCurrent(); CFMachPortRef keyUpEventTap = CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap ,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventKeyUp) | CGEventMaskBit(kCGEventFlagsChanged),&myCallBack,NULL); CFRunLoopSourceRef keyUpRunLoopSourceRef = CFMachPortCreateRunLoopSource(NULL, keyUpEventTap, 0); CFRelease(keyUpEventTap); CFRunLoopAddSource(theRL, keyUpRunLoopSourceRef, kCFRunLoopDefaultMode); CFRelease(keyUpRunLoopSourceRef);
相关文章推荐
- [Flex]Flex编程注意之自动获取焦点、监听全局键盘事件
- C++实现全局鼠标、键盘消息hook,支持事件
- 关于鼠标和键盘的全局获取的一个类 选择自 hbxtlhx 的 Blog
- Flex 自动获取焦点 监听全局键盘事件
- swing jtable 单元编辑事件(包括通过键盘获取焦点后编辑和鼠标双击后进入编辑状态)
- .NET使用钩子捕获全局鼠标和键盘事件
- 关于鼠标和键盘的全局获取的一个类
- Java监听键盘鼠标全局事件
- C#监测全局键盘与鼠标事件
- QT中监控全局键盘鼠标事件
- C#监测全局键盘与鼠标事件
- C#监测全局键盘与鼠标事件
- 关于鼠标和键盘的全局获取的一个类
- Flex 自动获取焦点 监听全局键盘事件
- Flex 自动获取焦点 监听全局键盘事件
- 无聊中,写一段程序..根据以前的改的,可以获取(不是拦截)鼠标键盘的按键(全局的)
- Flex编程注意之自动获取焦点、监听全局键盘事件
- Java监听键盘鼠标全局事件
- 全局鼠标键盘事件实现应用程序的自动锁定
- Js学习---妙味课堂3-1 (事件对象和事件冒泡)--- 获取鼠标+键盘事件