Skip to content

Instantly share code, notes, and snippets.

@nico
Created July 21, 2018 01:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nico/2e37f3eb7e91f1155434ee8e7d3ad5b9 to your computer and use it in GitHub Desktop.
Save nico/2e37f3eb7e91f1155434ee8e7d3ad5b9 to your computer and use it in GitHub Desktop.
import Adafruit_SSD1306
import struct
import sys
import termios
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
# 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=24)
disp.begin()
width = disp.width
height = disp.height
disp.clear()
disp.display()
textimage = Image.new('1', (height, width))
textdraw = ImageDraw.Draw(textimage)
# Make sure the .ttf font file is in the same directory as this python script!
# Get it off Google Fonts.
font = ImageFont.truetype('VT323-Regular.ttf', 100)
fmt = '2IHHI' # On 64-bit, it's 4IHHI instead (bigger timestamp at front)
EV_KEY = 1
VAL_KEYDOWN, VAL_KEYUP = 1, 0
KEYS = {
2: '1', 3: '2', 4: '3', 5: '4', 6: '5', 7: '6', 8: '7', 9: '8', 10: '9',
11: '0', 12: '-', 13: '=',
16: 'q', 17: 'w', 18: 'e', 19: 'r', 20: 't', 21: 'y', 22: 'u', 23: 'i',
24: 'o', 25: 'p', 26: '[', 27: ']', 43: '\\',
30: 'a', 31: 's', 32: 'd', 33: 'f', 34: 'g', 35: 'h', 36: 'j', 37: 'k',
38: 'l', 39: ';', 40: '\'',
44: 'z', 45: 'x', 46: 'c', 47: 'v', 48: 'b', 49: 'n', 50: 'm', 51: ',',
52: '.', 53: '/',
}
f = open('/dev/input/event1', 'rb')
while True:
data = f.read(struct.calcsize(fmt))
t0, t1, evtype, code, val = struct.unpack(fmt, data)
if evtype != EV_KEY: continue
if val != VAL_KEYDOWN: continue
#print 'keydown' + KEYS.get(code, 'not found %d' % code)
if code not in KEYS: continue
textdraw.rectangle((0,0,height,width), outline=0, fill=0)
textdraw.text((0, 0), KEYS[code].upper(), font=font, fill=255)
disp.image(textimage.transpose(Image.ROTATE_90))
disp.display()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment