用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
软件包,该软件包会在内核级别更改键盘布局。     

要回复问题请先登录注册