arikm9
arikm9

Reputation: 185

Detect keypress with python (not msvct)

I'm looking for a python module that will allow me to detect keyboard events.. Now I know this module msvct, but it only works for key presses that are done in the console. I need to create a passive program that will hook to the keyboard but I cant find how..

Thank you for your help

Upvotes: 0

Views: 1069

Answers (2)

Yash Kumar Atri
Yash Kumar Atri

Reputation: 795

You can even try this code

sudo apt-get install python-xlib

Log.py

import os
import pyxhook

# This tells the keylogger where the log file will go.
# You can set the file path as an environment variable ('pylogger_file'),
# or use the default ~/Desktop/file.log
log_file = os.environ.get(
    'pylogger_file',
    os.path.expanduser('~/Desktop/file.log')
)
# Allow setting the cancel key from environment args, Default: `
cancel_key = ord(
    os.environ.get(
        'pylogger_cancel',
        '`'
    )[0]
)

# Allow clearing the log file on start, if pylogger_clean is defined.
if os.environ.get('pylogger_clean', None) is not None:
    try:
        os.remove(log_file)
    except EnvironmentError:
       # File does not exist, or no permissions.
        pass

#creating key pressing event and saving it into log file
def OnKeyPress(event):
    with open(log_file, 'a') as f:
        f.write('{}\n'.format(event.Key))

# create a hook manager object
new_hook = pyxhook.HookManager()
new_hook.KeyDown = OnKeyPress
# set the hook
new_hook.HookKeyboard()
try:
    new_hook.start()         # start the hook
except KeyboardInterrupt:
    # User cancelled from command line.
    pass
except Exception as ex:
    # Write exceptions to the log file, for analysis later.
    msg = 'Error while catching events:\n  {}'.format(ex)
    pyxhook.print_err(msg)
    with open(log_file, 'a') as f:
        f.write('\n{}'.format(msg))

This keylogger will append every key you press.

Upvotes: 1

user8167727
user8167727

Reputation:

Python has a keyboard module with many features. You Can Use It In Both Shell and Console. It Also Detect Key For The Whole Windows.
Install it, perhaps with this command:

pip3 install keyboard

Then use it in code like:

import keyboard #Using module keyboard
while True:  #making a loop
    try:  #used try so that if user pressed other than the given key error will not be shown
        if keyboard.is_pressed('a'): #if key 'a' is pressed 
            print('You Pressed A Key!')
            break #finishing the loop
        else:
            pass
    except:
        break  #if user pressed other than the given key the loop will break

You can set it to multiple Key Detection:

if keyboard.is_pressed('a') or keyboard.is_pressed('b') or keyboard.is_pressed('c'):  # and so on
    #then do this

Upvotes: 1

Related Questions