标签: keyboard

OSX:检测系统范围的keyDown事件?

我正在为Mac OSX开发一个打字导师应用程序,即使应用程序没有被关注,也需要将键击转发给它.

有没有办法让系统向应用程序转发击键,可能是通过NSDistributedNotificationCenter?我用谷歌搜索了自己,并且找不到答案......

编辑: 下面的示例代码.

感谢@NSGod指出我正确的方向 - 我最终使用addGlobalMonitorForEventsMatchingMask:handler:方法添加了一个全局事件监视器,它工作得非常好.为了完整起见,我的实现看起来像这样:

// register for keys throughout the device...
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask
                                       handler:^(NSEvent *event){

    NSString *chars = [[event characters] lowercaseString];
    unichar character = [chars characterAtIndex:0];

    NSLog(@"keydown globally! Which key? This key: %c", character);

}];
Run Code Online (Sandbox Code Playgroud)

对我来说,棘手的部分是使用块,所以我会给出一些描述,以防它帮助任何人:

关于上面代码的注意事项是它是NSEvent上的所有单个方法调用.该块作为参数直接提供函数.你可以认为它有点像内联委托方法.仅仅因为这需要一段时间才能让我沉沦,我将在这里一步一步地完成它:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask
Run Code Online (Sandbox Code Playgroud)

这第一位没问题.您在NSEvent上调用类方法,并告诉它您要监视哪个事件,在本例中为NSKeyDownMask.一个支持的事件类型的面罩的名单,可以发现在这里.

现在,我们来到棘手的部分:处理程序,它需要一个块:

handler:^(NSEvent *event){
Run Code Online (Sandbox Code Playgroud)

我花了一些编译错误才能做到这一点,但是(谢谢Apple)他们是非常有建设性的错误信息.首先要注意的是克拉^.这标志着块的开始.在那之后,在括号内,

NSEvent *event
Run Code Online (Sandbox Code Playgroud)

其中声明了您将在块中使用的变量来捕获事件.你可以打电话给它

NSEvent *someCustomNameForAnEvent
Run Code Online (Sandbox Code Playgroud)

没关系,你只是在块内使用该名称.然后,这就是它的全部内容.确保关闭大括号和括号以完成方法调用:

}];
Run Code Online (Sandbox Code Playgroud)

而且你已经完成了!这真的是一种"单线".在您的应用程序中执行此调用的位置无关紧要 - 我在AppDelegate的applicationDidFinishLaunching方法中执行此操作.然后,在块中,您可以从应用程序中调用其他方法.

keyboard macos keydown nsnotificationcenter

59
推荐指数
2
解决办法
2万
查看次数

在UIScrollView中关闭键盘

好吧,我有几个UITextFields并且UITextViews在里面UIScrollView,我想设置键盘在scrollview触摸或滚动时消失(当然,当你在文本字段/视图内部触地时).

我目前尝试这样做是替换UIScrollView子类,并将其设置为在touchesBegan方法内调用removeKeyboard函数(在主视图控制器中定义).但是,这只会移除键盘以进行正常触摸,而不是仅在滚动视图时.那么,删除内部键盘的最佳方法是UIScrollView什么?

在此先感谢您的帮助.

keyboard objective-c uiscrollview ios swift

59
推荐指数
5
解决办法
5万
查看次数

在javascript中检测按键的最简单方法

我对javascript中的游戏有一个想法(我将使用EaselJS制作它),我将不得不检测按键.在网上浏览后,我看到了很多建议(使用window.onkeypress,使用jQuery等),但对于几乎所有选项都有反驳.你们有什么建议?使用jQuery这听起来很容易,但我几乎没有使用该库的经验(我也不是特别是javascript的老手)所以我宁愿避免它.如果jQuery是最好的选择,有人可以给出一个很好的例子(解释会很棒)如何做到这一点?

我想这会被问到很多,但我找不到任何明确的答案.提前致谢!

javascript keyboard jquery html5 easeljs

57
推荐指数
5
解决办法
10万
查看次数

如何创建自定义键盘

如何创建一个自定义键盘/键盘,当有人在UITextField上点击时,它会显示出来?我想显示一个键盘,其中包含a,b,c,1,2,3和一个输入按钮,没有别的.键盘应该像标准键盘一样工作和行为(行为),但它肯定会有所不同.

我找不到任何例子,我发现最好的是用现有键盘过滤字符,这是一个不可接受的解决方案.

iphone keyboard objective-c ios

56
推荐指数
2
解决办法
5万
查看次数

如何将密钥重复率提高到操作系统限制以外?

我习惯使用键盘上的光标键来导航源代码.这是我15年来所做的事情,这当然意味着我的导航速度受到键盘速度的限制.在Vista和OS X(我双启动MacBook)上,我的密钥重复率一直在上升.但是在Visual Studio和其他应用程序中,速率仍然比我想要的要慢得多.

如何在Visual Studio和其他文本编辑器中更快地提高键重复率?

windows keyboard macos visual-studio

55
推荐指数
7
解决办法
4万
查看次数

活动开始时显示软键盘

我有2个活动,A和B.当A启动时,它检查一个条件,如果为true,则调用startActivityForResult()启动B.B只接受文本输入,因此软键盘在B启动时自动弹出是有意义的.当活动开始时,EditText已经具有焦点并准备输入.

问题是键盘永远不会出现,即使windowSoftInputMode="stateAlwaysVisible"<activity>B标签下的清单中设置也是如此.我也尝试将值设置为stateVisible.由于它没有自动显示,我必须点击EditText才能显示.

任何人都知道解决方案可能是什么?

keyboard android soft-keyboard

54
推荐指数
6
解决办法
4万
查看次数

带有两个滑块的交互式matplotlib图

我用matplotlib创建了一些情节,这取决于8个变量.我想研究当我改变一些情节时情节如何变化.我创建了一些调用matplotlib的脚本并生成不同的快照,稍后我将其转换为电影,它不错,但有点笨拙.

  1. 我想知道我是否可以使用键盘按键来增加/减少某些变量的值,并立即看到情节如何变化,从而与剧情再生相互作用.

  2. 对此最好的方法是什么?

  3. 另外,如果您可以通过两个滑块指向我有趣的链接或带有情节示例的链接?

python keyboard interactive matplotlib

54
推荐指数
4
解决办法
7万
查看次数

Android webview中隐藏在键盘下方的文本框

我创建了一个简单的iPhone/Android应用程序,包含一个普通的webview.此webview调用我的网站.

在我的网站上有几种输入类型= text或textarea的表单.当它们位于页面底部时,我遇到了问题!

1)在我的iPhone应用程序中,键盘将自动出现并将文本框推送到手机屏幕的可见区域.所以没有什么可做的.

2)但是在我的Android应用程序中,文本框将保持在同一个位置,并最终被我的键盘隐藏.所以用户唯一的选择是输入"盲".

我怎样才能解决这个问题?有没有其他人遇到这个问题?

keyboard hidden android textbox webview

54
推荐指数
4
解决办法
4万
查看次数

53
推荐指数
3
解决办法
8万
查看次数

尽管德国硬件键盘,iOS 8.1模拟器始终使用美国键盘布局

出于某种原因,我无法再使用我的原生德语键盘输入文本进入iOS模拟器.

下载Xcode 6.1(包含iOS 8.1)后,我陷入了美国布局.

我尝试过更改所有硬件/键盘设置,删除~/Library/Preferences/com.apple.iphonesimulator.plist和重置iOS模拟器等内容.

什么都没有帮助!

我应该重新安装完整的包裹吗?

keyboard xcode ios ios-simulator

53
推荐指数
5
解决办法
2万
查看次数