/ /マウスとキーボードのリスナーをPythonで一緒に使用する - python、macos、keylistener

Pythonでマウスとキーボードのリスナーを併​​用する - python、macos、keylistener

私はモニタリング用にpynputライブラリを使っています私が直面している唯一の問題は、端末がCtrl + Cを押しても終了しないことです。私はマウスリスナーとキーボードリスナーを使う必要があります。これが私のコードです:

import os
import time
import re
from pynput import mouse
from pynput.keyboard import Key, Listener
f=open("maniac1.txt","a")

inc=1
f.write("<mouse_new>n")

def on_click(x, y, button, pressed):
f=open("maniac1.txt","a")
if button == mouse.Button.left:
print "Left"
f.write("leftn")

if button == mouse.Button.right:
print "right"
f.write("rightn")
if button == mouse.Button.middle:
print "middle"
f.write("middlen")

with mouse.Listener(on_click=on_click,on_scroll=on_scroll) as listener:
try:
listener.join()
except MyException as e:
print("Done".format(e.args[0]))

EscキーまたはCtrl + Cキーを押した後にこのコードを終了するにはどうすればよいですか?OSXを使用しています。

回答:

回答№1は1

インスタンスキーボードを作成します。マウスのリスナーに基づいてリスナーを起動および停止できるように、 "with"キーワードのないリスナー。マウスの右クリックの後でf8のキー押下を聞くのを止める下のコードをチェックしてください。

import os
import time
import re
from pynput import mouse
from pynput.keyboard import Key, Listener
#f=open("maniac1.txt","a")

inc=1
#f.write("<mouse_new>n")
from pynput import keyboard

def on_functionf8(key):
if (key==keyboard.Key.f8):
print("f8 is pressed")


key_listener = keyboard.Listener(on_release=on_functionf8)
key_listener.start()


def on_click(x, y, button, pressed):
f=open("maniac1.txt","a")
if button == mouse.Button.left:
print ("Left")
#f.write("leftn")

if button == mouse.Button.right:
key_listener.stop()
print ("right")
#f.write("rightn")
if button == mouse.Button.middle:
print ("middle")
#f.write("middlen")

with mouse.Listener(on_click=on_click) as listener:
try:
listener.join()
except MyException as e:
print("Done".format(e.args[0]))

プログラムを実行してF8キーを押すと、端末に "F8が押されました"と表示されます。しかし、右クリックしてf8を押します。マウスの右クリックでキーボードリスナーを止めたので、何も印刷されていません。

Mac用:

def on_press(key):
try:
print("alphanumeric key {0} pressed".format(
key.char))
except AttributeError:
print("special key {0} pressed".format(
key))



key_listener = keyboard.Listener(on_release=on_press)

cmd、altのようないくつかのキーだけが、デフォルトではMacでリッスンされます。