相关疑难解决方法(0)

CGEventTapCreate在Cocoa中观看键盘输入

问候.我试着让孩子控制应用程序.键盘记录器是此应用程序的一部分.我使用CGEventTapCreate来观看键盘.这很好用,但有时我会重复关键事件.它们没有设置[NSEvent isARepeat],只是重复.例如,我可以输入"qwerty"但应用程序会获取这些字符的关键事件:"qqwweerrttyy".也许有人经历过这样的喜欢吗?我在10.5和10.6上都遇到了这个问题(两者都是英特尔).

我在这里发布键盘记录器安装和处理程序方法:

- (BOOL)installKeyboardLogger
{
  CGEventMask keyboardMask = CGEventMaskBit(kCGEventKeyDown);
  CGEventMask mouseMask = CGEventMaskBit(kCGEventMouseMoved) |   CGEventMaskBit(kCGEventLeftMouseDown) |
      CGEventMaskBit(kCGEventRightMouseDown);

  CGEventMask mask = keyboardMask + mouseMask;// + mouseMask;//CGEventMaskBit(kCGEventKeyDown) | CGEventMaskBit(kCGEventMouseMoved);

  // Try to create keyboard-only hook. It will fail if Assistive Devices are not set.
  mMachPortRef =  CGEventTapCreate(
                                   kCGAnnotatedSessionEventTap,
                                   kCGTailAppendEventTap, // kCGHeadInsertEventTap
                                   kCGEventTapOptionListenOnly,
                                   keyboardMask,
                                   (CGEventTapCallBack)eventTapFunction,
                                   self );
  if (!mMachPortRef)
    [mLogFile logNeedAssistiveDevice: @"Can't install keyboard hook."];
  else
    CFRelease(mMachPortRef);

  mMachPortRef = CGEventTapCreate(
                                  kCGAnnotatedSessionEventTap,
                                  kCGTailAppendEventTap, // kCGHeadInsertEventTap
                                  kCGEventTapOptionListenOnly,
                                  mask,
                                  (CGEventTapCallBack)eventTapFunction,
                                  self );
  if (!mMachPortRef)
  { …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c

7
推荐指数
0
解决办法
3734
查看次数

根据鼠标和键盘交互检测计算机是否处于空闲状态

我正在用C++编写一个软件来控制MacBook Pro上的键盘背光,它运行Arch Linux作为主操作系统和Debian运行的funzies.该程序作为守护程序运行,现在可以打开键盘背光.下一步是让它密切关注计算机何时空闲(基于鼠标和键盘的交互)以及何时空闲一段时间,关闭背光,并且一旦注册了与键盘或鼠标的交互,再次打开背光.

我已经google了一下,但是我找不到任何可以检查最后鼠标和/或键盘交互的注册时间.

有什么想法,我怎么能做到这一点?我相信在任何Linux操作系统(也许是X?)的某些部分已经存在这样的功能,所以使用它会更好,而不是从头开始编写.

问候,...

c++ linux

3
推荐指数
1
解决办法
1075
查看次数

标签 统计

c++ ×1

cocoa ×1

linux ×1

macos ×1

objective-c ×1