initial checkin of keyboard.py