pynput 監聽多組合鍵


  def listener_mouse(self):
        self.keyoard_listener = pynput.keyboard.Listener(on_press=self.keyboard_input_press,
                                                         on_release=self.keyboard_input_release)
        self.mouse_listener.start()
        self.keyoard_listener.start()
        self.mouse_listener.join()
        self.keyoard_listener.join()
        return

    def keyboard_input_release(self, key):  # 按鍵釋放
        if self.press_list:
            print(self.press_list)
            if len(self.press_list) == 1:
                if self.release_flag:
                    self.mouse_keyboard_move.append(str(self.press_list))
                else:
                    self.release_flag = True
                self.press_list.remove(str(key))
            elif len(self.press_list) == 2:
                self.mouse_keyboard_move.append(str(self.press_list))
                if key in self.press_list:
                    self.press_list.remove(str(key))
                    self.release_flag = False
            else:
                self.mouse_keyboard_move.append(str(self.press_list))
                self.press_list.clear()
                self.release_flag = False

        if key == pynput.keyboard.Key.esc:
            self.stop_listener_keyoard()
            with open('aa.txt', "w") as f:
                for i in self.mouse_keyboard_move:
                    f.write(str(i) + ';')
                f.close()

    def keyboard_input_press(self, key):  # 按鍵按下
        self.press_list.add(str(key))

直接上代碼了,組合鍵用集合保存,寫入txt中,但后來發現個問題,由於大量邏輯在按鍵釋放時判斷,對造成程序在此處相對的處理速度很慢,如果打字快點的話就會出現順序顛倒的情況,難辦。

部分結果(woshishui?nizhidaoma?):

"'w'"};{"'o'"};{'Key.space'};{"'s'", "'h'"};{"'s'", "'i'", "'h'"};{"'s'"};{"'h'"};{"'i'", "'u'"};{"'i'", "'u'"};{'Key.space', "'i'", "'u'"};{"'a'", 'Key.shift'};{"'a'", 'Key.shift'};{'Key.shift_r', "'a'", "'/'", 'Key.shift'};{"'i'", "'n'"};{"'i'", "'n'"};{'Key.space', "'i'", "'n'"};{"'s'", "'h'"};{"'s'", "'i'", "'h'"};{"'d'"};{"'a'"};{"'o'"};{'Key.space'};{"'m'"};{"'a'"};{'Key.space'};{'Key.shift_r', "'/'"};{'Key.shift_r', "'/'"};{'Key.shift_r', "'/'", 'Key.esc'}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM