所以,不久前,我开始自学kivy.我从主要的kivy网站开始,经历了它的pong制作教程,在完成后我决定尝试给它关键输入.我似乎无法找到任何关键输入指南与kivy!有人知道某种教程或者可以提供一些易于理解的代码吗?我确实看过kivy的examples文件夹中的Keyboard Listener,但是如果我应该的话,我不太清楚如何使用它.
谢谢你的帮助.
我需要在python终端程序中监听某些按键而不暂停执行raw_input
.我已经看到人们使用一些窗口特定的方式来听键击,我看到人们使用像tkinter和pygame这样的大模块,我想避免.
是否有一个轻量级模块,这个跨平台(至少ubuntu,Windows,Mac)?或者有没有办法只使用来自tkinter,pygame等的事件系统......?
如果没有,我应该如何解决这个问题呢?我的第一个想法是将stdin重定向到另一个进程并继续检查它是否包含我的一个事件键.
感谢@unutbu花时间标记这个3岁的问题,并成功回答了另一个问题的副本,其答案不适用于这个问题,因为我特别询问了一个非阻塞解决方案.
我有自定义Android键盘:
public class CustomKeyboard extends Keyboard{...}
public class CustomKeyboardView extends KeyboardView{...}
public class CustomKeyboardIME extends InputMethodService implements KeyboardView.OnKeyboardActionListener{...}
Run Code Online (Sandbox Code Playgroud)
在一些按键,我有popupKeyboard
和popupCharacters
:
<Key android:codes="144" android:keyLabel="0" android:popupKeyboard="@xml/key_popup" android:popupCharacters=")" android:keyEdgeFlags="right"/>
Run Code Online (Sandbox Code Playgroud)
XML/key_popup.xml:
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="@dimen/key_height" >
</Keyboard>
Run Code Online (Sandbox Code Playgroud)
但是当我长按"0"键弹出")"显示时,它会一直保持在那里直到我按下"X"按钮或")"字符.它看起来像这样:
而且我希望它只在我按住手指时打开.像三星或HTC键盘上的东西:
有谁可以帮助我吗?
编辑至少可以改变这个弹出窗口的外观吗?我希望它具有与我制作的整个键盘相同的背景和键
keyboard android keyboard-events android-softkeyboard android-input-method
我的WPF应用程序具有由功能键(F1- F12)触发的行为.
我的代码是这样的:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.F1:
...
case Key.F2:
...
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于所有F键,除了F10.调试时,我发现e.Key == Key.System
当用户按下时F10.
在枚举定义,F10 = 99
并且System = 156
,这样我就可以排除它是一个重复的枚举值(像PageDown = Next = 20
).
那么,如何判断用户何时按下F10?
Key.System
相反,检查是否安全?这感觉有点脏 - 可能是Key.System
因为某些其他键被按下而导致的?或者是否有某些设置将F10报告作为Key.F10
?
我有一个RFID USB设备注册为HID设备(或多或少的USB键盘).
我正在寻找一种捕获此输入的方法,并在它到达普通键盘事件处理程序之前阻塞/过滤它(并将10位RFID代码输出到控制台).
我当然必须专门捕获这个设备,并留下真正的键盘输入(或传递它).
我最初的想法是在UDEV中阻止设备(所以usbhid/event/kbd内核模块没有绑定它)并为这个设备编写我自己的基本驱动程序 - 但我不知道从哪里开始,或者如果那样甚至会工作.
什么是伟大的(我不确定是否可以这样做) - 如果我编写一个事件过滤器模块,可以与事件驱动程序保持一致并捕获(然后过滤)来自RFID单元,但让其他一切都通过.我想这样一个模块不需要太多代码,而且最实用.
救命?
[编辑:我应该补充说没有安装Xorg - 仅限控制台]
cat /proc/bus/input:
I: Bus=0003 Vendor=0419 Product=0912 Version=0100
N: Name="NewRoad Sem. NewRoad System PS2 Interface"
P: Phys=usb-0000:00:1d.3-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.3/usb5/5-2/5-2:1.0/input/input20
U: Uniq=
H: Handlers=sysrq kbd mouse0 event3
B: PROP=0
B: EV=120017
B: KEY=70000 0 0 e080ffdf01cfffff fffffffffffffffe
B: REL=103
B: MSC=10
B: LED=1f
Run Code Online (Sandbox Code Playgroud)
更多信息:
lsusb -d 0419:0912 -v
Bus 005 Device 019: ID 0419:0912 Samsung Info. Systems America, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass …
Run Code Online (Sandbox Code Playgroud) 我用Swift 4.2得到了这个错误
类型'NSNotification.Name'没有成员'keyboardDidShowNotification'
这是我的代码:
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(notification:)), name: NSNotification.Name.keyboardDidShowNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)
下面一个用Swift 4工作正常,但没有用Swift 4.2
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
Run Code Online (Sandbox Code Playgroud)
我继承了一个Web应用程序,其中在任何输入字段中按下return的常规功能已被禁用,原因很简单,该页面包含多个表单,并且应用程序无法确定(或者,所以我被告知哪种形式行动起来.应用程序的设计使得没有提交按钮(如输入类型="提交"),相反,设计人员已经进行了onclick处理.以下是在其中一个页面上定义的两个按钮,包括在内
<input type="button" value="LOGIN" name="btnLoginOk" onclick="submit(); />"
<input type="button" class="button-click-grey" value="Find Link Partners"
onclick="raiseEvent('SubmitForm','',this);" style="cursor:pointer;" />
Run Code Online (Sandbox Code Playgroud)
但我真的希望能够允许用户按下返回,如果他们愿意,例如他们只是输入与LOGIN相关联的字段,然后检测并执行onclick ="submit();"
也许有一个jQuery的解决方案.
我正在开发一款游戏,一种基于WPF的Windows应用商店应用,用C#编写.当玩家按下Esc键时,我想暂停游戏并显示一个菜单(继续,退出等).
听起来很简单.可悲的是,事实并非如此.
游戏的故事发生在一个Windows.UI.Xaml.Controls.Page
和主要由数百Shape
在A S Canvas
,但没有一个单一的Button
,TextBox
否则任何支持键盘交互.唯一的互动是点击或点击形状.
我需要在整个页面上全局捕捉键盘事件,无论焦点是什么元素,或者根本没有任何焦点等等.每当按下Esc键时,必须触发一个事件.
我尝试了什么:
使用事件Page.KeyDown
或覆盖Page.OnKeyDown(KeyRoutedEventArgs e)
(或KeyUp):不会触发,除非有一个元素,如TextBox
键盘焦点.但是在我的UI中没有这样的元素.
使用不可见(Opacity = 0
和/或隐藏在Canvas下)TextBox作为黑客来使KeyDown工作:只要点击/点击Canvas或任何Shape,TextBox就会失去焦点并且黑客停止工作.因此,需要更多的黑客来保持焦点,这与其他东西(例如菜单按钮)有关.此外,TextBox偶尔会显示Windows软件键盘,这是非常不需要的.一个勉强工作,脆弱的黑客.
使用InputGestures
,KeyBinding
等:不适用于Windows应用商店的应用程序.
任何想法或解决方案?
当使用蓝牙键盘时,我找不到在iPad和Chrome上的文本字段中检测箭头键的方法.
使用此测试HTML和JavaScript,触摸输入字段以使其获得焦点.
使用箭头键没有任何反应,但输入字母和数字以及keydown事件.
<!DOCTYPE html>
<html>
<head>
<title>Test page.</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<form>
<input id="input" style="width: 600px;" type="textarea" />
</form>
<div id="keydisp" style="width 600px; height: 50px"></div>
<script type="text/javascript">
$(document).keydown(function(event) {
var keyCode = event.which;
document.getElementById("keydisp").innerHTML = "key pressed: " + keyCode;
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有可能检测到箭头吗?
我试图在键盘显示和消失时运行一个函数,并具有以下代码:
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(ViewController.keyBoardUp(Notification :)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
Run Code Online (Sandbox Code Playgroud)
以下功能keyBoardUp
:
func keyBoardUp( Notification: NSNotification){
print("HELLO")
}
Run Code Online (Sandbox Code Playgroud)
但是,当键盘显示时,该功能不会打印到控制台.非常感谢帮助