How to obtain the keycodes in Python
Take a look at pynput module in Python. It also has a nice tutorial using which you can easily create keyboard listeners for your code.
The official example for listeners is:
from pynput.keyboard import Key, Listener
def on_press(key):
print('{0} pressed'.format(
key))
def on_release(key):
print('{0} release'.format(
key))
if key == Key.esc:
# Stop listener
return False
# Collect events until released
with Listener(on_press=on_press,
on_release=on_release) as listener:
listener.join()
Hope this helps.
See tty standard module. It allows switching from default line-oriented (cooked) mode into char-oriented (cbreak) mode with tty.setcbreak(sys.stdin). Reading single char from sys.stdin will result into next pressed keyboard key (if it generates code):
import sys
import tty
tty.setcbreak(sys.stdin)
while True:
print ord(sys.stdin.read(1))
Note: solution is Unix (including Linux) only.
Edit: On Windows try msvcrt.getche()/getwche(). /me has nowhere to try...
Edit 2: Utilize win32 low-level console API via ctypes.windll (see example at SO) with ReadConsoleInput
function. You should filter out keypresses - e.EventType==KEY_EVENT
and look for e.Event.KeyEvent.wVirtualKeyCode
value. Example of application (not in Python, just to get an idea) can be found at http://www.benryves.com/tutorials/?t=winconsole&c=4.
Depending on what you are trying to accomplish, perhaps using a library such as pygame would do what you want. Pygame contains more advanced keypress handling than is normally available with Python's standard libraries.