我正在开发一个应用程序,当用户在特定文本框上按CMD + LEFT时,我需要进行一些后处理.我需要在浏览器的默认功能之后执行此操作(即,在将插入符号放在当前物理行中的第一个位置之后).
问题keyup
是没有被触发左边的键(或与此有关的任何键),只要CMD键被按下.
我用CTRL和SHIFT键尝试了这个,发现keyup按预期触发了辅助键.因此,如果您执行CTRL + LEFT然后释放LEFT然后释放CTRL,则总共有4个事件,2个keydowns和2个keyup.但是对于CMD密钥,我们得到2个keydowns,但只有一个keyup事件(当我们最后发布它时,CMD密钥本身就是一个).
我用SHIFT键尝试了这个,发现keyup按照预期的次序触发.所以,如果你SHIFT +左键,然后松开左键,然后松开SHIFT,你在总共4个事件,2个keydowns和2个keyups.但是对于CMD密钥,我们得到2个keydowns,但只有一个keyup事件(当我们最后发布它时,CMD密钥本身就是一个).
会是什么呢?keyup
当CMD关闭时,有没有办法可以触发LEFT键(或任何键)?
我正在尝试使用OSX 10.9.5上的最新Google Chrome.Firefox上的行为也完全相同.所以这不是Chrome问题.
演示:http://jsfiddle.net/techfoobar/xu0o11nh/4/
实质上:
$('#mytextbox')
// this gets correctly triggered for the meta key as well as the secondary key
// when you press CMD and LEFT in sequence, you get two lines in the console one for
// the CMD key and one for the LEFT key
.keydown(function(_e) {
console.log('Keydown: ' + _e.keyCode);
})
// however, if …
Run Code Online (Sandbox Code Playgroud) 我正在为网站开发自动搜索功能.
它使用ajax来查询api.
在输入3个字符后,它将在每次按键时搜索.
我想要的是
案例1:
用户输入测试
2秒后执行搜索
情况2:
用户输入测试
1秒通过
用户按t
2秒
测试通过搜索
案例3:
用户输入测试
1秒通过
用户按下t
1.5秒通过
用户按下i
1.5秒通过
用户按下n
1.5秒通过
用户按g
2秒通过
搜索执行测试
如您所见,搜索操作仅在按键后两秒内没有按键(或粘贴等)时执行.
我的基本想法是.
on keydown调用一个设置超时的函数,该函数还设置一个包含文本框中最后一个条目的变量.当超时到期时,它会检查框中的值以查看它是否与变量中的值匹配.
如果匹配则没有变化.搜索也是如此
如果他们不做任何事情,因为后续按键的超时将跟随进行相同的检查.
这是唯一/最好的方法吗?
我怎样才能让我的自定义KeyListener
听取ALT
(或者CTRL
说那个)+多个其他键的组合?
假设我希望应用程序执行11个不同的操作,具体取决于按下的键的组合.ALT + 0
- ALT + 9
显然不会造成任何问题,而对于ALT + 1 + 0
(或"ALT + 10",因为它可以在帮助文件或类似文件中描述),我无法在网络上(或在我脑海中)的任何地方找到一个好的解决方案.我不相信这种带定时器的解决方案是唯一可行的方法.
提前一百万感谢您的任何建议!
编辑:操作0-9 +操作10 = 11个操作.谢谢@ X-Zero.
我是这个网站的总菜鸟,所以请耐心等待.我试图在没有任何用户交互或确认的情况下发起视频聊天/通话.
我找到了这个:
Uri imUri = new Uri.Builder().scheme("xmpp").authority("gtalk").query("call;type=video").appendPath(email).build();
Intent IM = new Intent(Intent.ACTION_SENDTO);
IM.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
IM.setData(imUri);
startActivity(IM);
Run Code Online (Sandbox Code Playgroud)
从这里:https://stackoverflow.com/a/8024626/1184256
这让我非常接近,但我必须点击"邀请"按钮才能继续.有没有办法可以模拟KeyEvent单击此按钮或完全使用root访问权限跳过弹出窗口?
如果有人通过Skype,Vtok,Fringe,ooVoo或任何没有用户互动的方式找到了与某个联系人发起视频通话的不同方式,我甚至不一定需要使用谷歌视频聊天.
我还发现OpenTok在我的网站上构建了一个示例服务器和客户端后,我发现它可以在桌面浏览器上运行,但在Android浏览器中却不行.请不要窃取/使用我的apiKey或sessionId.
我还找到了libjingle,这将允许我使用Google Talk的点对点语音和视频聊天.我认为这将是要走的路,但这意味着从头开始构建一个视频聊天应用程序并将它包装在这些库中......是的.有人这样做了吗?
我知道这本质上是一个重复的线程,但我已经搜索了几天和几天的答案,这是我最接近完成这一步.
BTW之所以我需要这个没有用户交互的原因是针对远程呈现机器人,因此当我发起这个呼叫时,不会有任何人实际持有/使用手机.
请帮忙!
我在NetBeans IDE中有一个Java Swing应用程序.
我创建了一个表单并将KeyListener附加到我的各种控件中:
jButton1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
keyTypedEvent(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
并keyTypedEvent
定义为:
private void keyTypedEvent(java.awt.event.KeyEvent evt)
{
System.out.println(evt);
appendDisplay(String.valueOf(evt.getKeyChar()));
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个println
,evt
看看会发生什么,并验证我的keylistener确实有效.当我构建并运行我的应用程序时,我意识到输出总是似乎有一个keycode = 0
为了验证这一点,我把println改为了evt.getKeyCode()
,它总是返回0.
我可能完全误解了KeyCode的功能,但我认为它可以与Oracle文档中的值进行协调:
http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_ESCAPE
例如,VK_ESCAPE的值为27.
我KeyListener
在我的代码(游戏或其他)中使用s作为我的屏幕对象对用户键输入做出反应的方式.这是我的代码:
public class MyGame extends JFrame {
static int up = KeyEvent.VK_UP;
static int right = KeyEvent.VK_RIGHT;
static int down = KeyEvent.VK_DOWN;
static int left = KeyEvent.VK_LEFT;
static int fire = KeyEvent.VK_Q;
public MyGame() {
// Do all the layout management and what not...
JLabel obj1 = new JLabel();
JLabel obj2 = new JLabel();
obj1.addKeyListener(new MyKeyListener());
obj2.addKeyListener(new MyKeyListener());
add(obj1);
add(obj2);
// Do other GUI things...
}
static void move(int direction, Object source) {
// do something
}
static …
Run Code Online (Sandbox Code Playgroud) 我发现删除键不会keypress
在Chrome中触发事件,而其他键可以正常工作.这个问题在Firefox中不会发生,只是在chrome中,为什么?这是我的代码:
document.addEventListener('keypress', function (e) {
console.log(e);
}, false);
Run Code Online (Sandbox Code Playgroud) 我正在尝试在android web视图中收听关键事件.用户填写表单时的示例,我应该收到关键事件.这是我的WebView代码
public class MyWebView extends WebView implements OnKeyListener
{
.....
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
Log.i("PcWebView", "onKeyDown keyCode=" + keyCode);
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
Log.i("PcWebView", "onKeyUp keyCode=" + keyCode);
return super.onKeyUp(keyCode, event);
}
@Override // Listener is initialized in the constructor
public boolean onKey(View v, int keyCode, KeyEvent event)
{
Log.i("PcWebView", "onKey keyCode=" + keyCode);
return false;
}
.....
}
Run Code Online (Sandbox Code Playgroud)
既不的方法onKeyDown
,onKeyUp
和onKey
被调用时用户键入文本框或文本域.是否有可能实现这一点,或者Android是否限制了这种可能的隐私泄露?
android keyevent webview android-webview android-softkeyboard
"连续发生了多个重复键事件,或正在传递复杂字符串.如果键码不是{#link KEYCODE_UNKNOWN,则{#link getRepeatCount()方法返回给定键码应执行的次数否则,如果密钥代码是KEYCODE_UNKNOWN,那么这是getCharacters()返回的一系列字符."
但它没有说明如何实际生成该事件.
如何生成KeyEvent.ACTION_MULTIPLE(作为用户,使用耳机控件)?
我只是通过按下按钮而不是F11来阅读这个问题:全屏页面
操作要求F11用其他热键替换,所以我想知道也许我可以模拟按下F11以使工作正常.
我了解到我可以在JQuery中使用触发器来模拟按键事件,所以我做了这样的事情:
$("body").keyup(function (e) {
alert(e.which);
});
var e = $.Event("keyup");
e.which = 122; // # Key code of F11
$("body").trigger(e);
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到警告说122,但它似乎没有给出希望的结果.那里有限制吗?
我在这里做了一个小提琴:http://jsfiddle.net/ap295/5/
keyevent ×10
java ×4
android ×3
javascript ×3
jquery ×3
swing ×3
keylistener ×2
button ×1
combinations ×1
dom-events ×1
headset ×1
key-bindings ×1
key-events ×1
timer ×1
videochat ×1
webview ×1