按下或释放键盘键时写入串行

时间:2015-05-23 15:38:52

标签: python keyboard-events pyserial

我正在编写一个Python脚本,它将使用串口与Arduino通信。 Arduino将实现一个简单的音乐键盘。

所以期望的行为是:

  • 当我按下PC键盘上的某个键时,会通过串行发送一些字节;
  • 当我按下按键时,没有发送任何内容;
  • 当我释放该密钥时,会发送另一个给定的字节。

1 个答案:

答案 0 :(得分:1)

对于键盘输入的单个字符,请阅读this article

如果你真的想要坚韧不拔,最好用pygtk左右制作一个小的GUI。在那里,您可以轻松访问按键,键盘释放事件。它可以用很少的代码完成。

在串口端,我想到了PySerial - 这样可以更容易地改变波特率等以适应Arduino。

您是否尝试发送MIDI命令?

import pygtk
import gtk

class MainWindow(gtk.Window):
    def __init__(self, debug = None):
        gtk.Window.__init__(self)
        self.connect("delete-event", self.on_delete_event)
        self.set_size_request(400, 300)

        bff = gtk.TextBuffer()
        self.txtview = gtk.TextView(bff)
        self.add(self.txtview)

        self.connect("key-press-event", self.on_key_press)
        self.connect("key-release-event", self.on_key_release)

    def on_key_press(self, key, event):
        # Send something
        print("Key pressed")
        pass

    def on_key_release(self, key, event):
        # Send something
        print("Key released")
        pass

    def on_delete_event(self, win, data):
        gtk.main_quit()

    def run(self):
        self.show_all()
        gtk.mainloop()



def main():
    # Do you PySerial initializing here
    w = MainWindow()
    w.run()
    return 0

if __name__ == '__main__':
    main()