如何解决用python立即将打印键按下到屏幕上
| 我知道这个问题很长,但我真正想知道的是黑体字。 我希望在Linux上使用python。 我正在尝试制作一种类似于devorak的新键盘布局,但是根据您是否握有热键,该布局被设置为layout1或layout2(热键可能应该是ctrl?) 例如按d-> \“ z \”使用键layout1打印到屏幕 例如按ctrl d-> \“ x \”使用按键layout2打印到屏幕 我的主要问题(以及需要回答的问题)是字符需要在屏幕上打印的方式。 如果有人按此顺序按下键,则\“(a)(b)(c)(d)(ctrl + d)(shift + e = E)(f)(Enter)\” 现在让我们说这些按键的输出应该是“ oijzxKb” 我不希望输出用新行呈现:o
i
j
z
x
K
b
我希望这些字符在按下每个字符时立即出现在屏幕上(而不必等待它们按Enter键)。
e.g.
press o
Screenshot1 o
press i
Screenshot2 oi
press j
Screenshot3 oij
.. etc
我认为我将需要以下内容:
一种即时读取按键的方法
一种即时打印按键的方法(如果可以在任何很棒的编辑器上使用,则可以立即打印到终端或GUI或最简单的工具!)
我可能可以在PyGame中做到这一点(但后来我可能无法剪切和粘贴等),我猜测应该有一种更简单的方法。
我正在使用Logitech G110键盘,我可能最终希望在所有设备上的所有应用程序中将此键盘替代qwerty键盘。
谢谢!
编辑:解决方案:
多亏了第一个回应,
从http://code.activestate.com/recipes/134892/使用Getch
getch = _Getch()
word=\"\"
while True:
c=getch.impl()
if c==\"a\":
word+=\"z\"
elif ord(c)==127: #backspace
word=word[:-1]
else:
word+=c
print word
现在就足够了,谢谢。一旦对优化感到满意,我将考虑做一些底层操作,特定于操作系统而不使用python。
但是getch的一个问题是ctrl + A不能区分ctrl + A(例如,如果按住ctrl并按键,则无法区分大小写)
解决方法
如果可以依靠X窗口系统,则可以使用python-xlib模块或xpyb模块来访问X窗口系统,并使用XGrabKey调用来获取与键盘相关的事件。在每次“ 3”事件时,您都可以打印所按的键。
现在,如果您真的想编写一个键盘映射,这完全取决于OS /窗口系统。如果使用X窗口系统(Ubuntu使用),则需要检查X文档中有关如何编写新键盘映射的信息。在Ubuntu上,当前的键盘映射定义应为
/usr/share/X11/xkb
。看一看,然后尝试复制和编辑一个。然后可以使用ѭ5更改当前的键盘映射。
, 要修改键盘的键映射,必须使用操作系统提供的工具。出于安全原因,大多数应用程序不接受生成的事件。
在您的情况下,将是xmodmap
。不要忘记使用-pke
选项创建当前键盘映射的备份,因为这会导致错误-然后,键盘将不再起作用。
如果您还希望新的键盘映射在控制台上工作,请查看kbd
软件包,该软件包会在内核级别更改键盘布局。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。