Pynput modülü kullanarak yapılan bir keylogger buldum hangi harfe falan bastığımı anlıyor ve dosyaya
yazdırıyor. Bende bastığım harfin hangisi olduğunu bilmeye çalıştım yani ‘a’ harfine basınca mesela
ekrana merhaba yazsın istiyorum.Ama yapamadım yardımcı olursanız sevinirim.
from pynput.keyboard import Key, Listener
import logging
log_dir = ""
logging.basicConfig(filename=(log_dir + "key_log.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
def on_press(key):
logging.info(str(key))
with Listener(on_press=on_press) as listener:
listener.join()
Ben de eskiden pynput modülüyle ilgileniyordum. Uzun zaman olunca unutmuşum çoğu şeyi. Biraz araştırma yaparak bilgilerimi tazeledim.
from pynput.keyboard import Key, Listener
from pynput import keyboard
import logging
current = set()
log_dir = ""
COMBINATIONS = [
{keyboard.KeyCode(char='a')}, #a tuşuna basılırsa
{keyboard.Key.shift, keyboard.KeyCode(char='A') } #shift + a tuşuna basılırsa
]
logging.basicConfig(filename=(log_dir + "key_log.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
def on_press(key):
logging.info(str(key))
if any([key in COMBO for COMBO in COMBINATIONS]):
current.add(key)
if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS):
print("b") # ekrana b yazar
print(str(key)) #basılan tuşları ekrana yazar
if key == keyboard.Key.esc:
return False #esc basılırsa program kapanır
def on_release(key):
if any([key in COMBO for COMBO in COMBINATIONS]):
current.remove(key)
with Listener(on_press=on_press) as listener:
listener.join()
Bir şeyleri açıklamakta gerçekten kötüyüm. Eğer anlaşılmadıysa nereyi anlamadığınızı belirtirseniz bana yardımcı olursunuz. Böylelikle daha rahat anlatabilirim.
import pynput.keyboard as pyn
def on_press(key):
print("merhaba" if str(key)[1:-1] == "a" else str(key)[1:-1])
with pyn.Listener(on_press=on_press) as listener:
listener.join()
sizin kodlarınızdaki sorun str(key)[1:-1] yerine str(key) yazmanız.Çünkü pynput modülü ekrana tek tırnakların arasında keyleri yazıyor bizde [1:-1] bu şekilde baştaki ve sondaki tırnak işaretlerini siliyor tırnaksız bir şekilde keyi yazdırıyoruz sorun çözülmüş oluyor.
yani str(key) kodu ile eğer a harfine basarsak ekrana ‘a’ (a tırnaklar arasında) basıyor
böyle yazarsak str(key)[1:-1] ekrana tırnaksız bir şekilde a yazıyor