Отслеживать время с момента последнего нажатия клавиши? - PullRequest
3 голосов
/ 09 июля 2020

Это мой готовый кейлоггер на данный момент. Я уже публиковал этот вопрос раньше, но мне было действительно трудно повторить. On_press и On_release - две основные функции в этом. Оба они отслеживают одно нажатие клавиши. Мне нужно отслеживать время, которое проходит между нажатиями клавиш, и я не совсем уверен, как это сделать. У меня была мысль, что я могу отслеживать время между добавлением строки. Мне нужно иметь возможность видеть время между нажатиями клавиш, потому что, если это больше, чем определенный период времени (десять секунд), я хочу, чтобы строка, содержащая нажатия клавиш (клавиши), была очищена. Спасибо всем!

import pynput
import time 
import os, sys
from pynput.keyboard import Key, Listener
import psutil 

count = 0
keys = []

if (time.time() - lastKeystroke > 10):
   keys =[]

def on_press(key):
    global keys, count
    
    keys.append(str(key).replace("'",'').replace("Key.space", ' ').replace("Key.shift", "").lower())

    print(keys)

    count += 1
def on_release(key):
    if key == Key.esc:
        return False

lastKeystroke = time.time()

with Listener(on_press, on_release =on_release) as listener:
    listener.join()

1 Ответ

1 голос
/ 09 июля 2020

Это минимальный пример получения времени между любыми двумя нажатыми клавишами.

При запуске он устанавливает previous_time с time.time(), и когда я нажимаю клавишу, он получает current_time и сравнивает с previous_time чтобы увидеть время до первого нажатия. И позже он сохраняет current_time в previous_time, чтобы вычислить его снова, когда я нажимаю следующую клавишу.

from pynput.keyboard import Key, Listener
import time

# --- functions ---

def on_press(key):
    global previous_time

    # get current time and calculate time between two pressed keys
    current_time = time.time()
    diff_time = current_time - previous_time

    print('seconds:', diff_time)
    
    # save current time for next calculation
    previous_time = current_time
    
    # use this value for something
    if diff_time > 10:
         print("Too late!")

def on_release(key):
    if key == Key.esc:
        return False

# --- main ---

previous_time = time.time() # value as start

with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...