#!/usr/bin/python import struct from PIL import Image, ImageDraw, ImageFont import time keys = { 0x00 : "", 0x03 : "1", 0x09 : "2", 0x0f : "3", 0x04 : "4", 0x0a : "5", 0x10 : "6", 0x05 : "7", 0x0b : "8", 0x11 : "9", 0x06 : "*", 0x0c : "0", 0x12 : "#", 0x02 : "yes", 0x07 : "+", 0x0e : "no", 0x01 : "left", 0x13 : "up", 0x16 : "down", 0x0d : "right", 0x19 : "vol+", 0x1c : "vol-", 0x1b : "mute", } file = open( "/dev/hidraw0", "w+b" ); def getKey(): buf = file.read(8) return keys[ord(buf[1])] def paint(): pixels = img.load() # create the pixel map pixels = img.transpose(Image.ROTATE_180).load() # create the pixel map b = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for r in range(0, 8): for s in range (0, 12): for i in range (0, 12): b[i] = 0 for j in range (0, 8): if (pixels[i + 12 * s, j + 8 * r] < 128): b[i] |= 2**j buf="0301".decode("hex")+chr(r)+chr(s*11)+chr(b[0])+chr(b[1])+chr(b[2])+chr(b[3])+chr(b[4])+chr(b[5])+chr(b[6])+chr(b[7])+chr(b[8])+chr(b[9])+chr(b[10])+chr(b[11]) file.write(buf) file.flush() def drawText(text): draw.text((0, 0), drawText.old , 255, font=font) draw.text((0, 0), text , 0, font=font) drawText.old = text paint() drawText.old = "" img = Image.new( '1', (144,64), "white") draw = ImageDraw.Draw(img) font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", 20) text = "" # draw logo into canvas logo = Image.open("logo.png").convert("1") img.paste(logo, (0,0)) # write canvas to display paint() # clear canvas draw.rectangle((0,0,142,63), fill=255) while( 1 ): k = getKey(); if (k == ""): 0 elif (k == "no"): text = "" drawText(text) elif (k == "yes"): text = "" drawText("calling...") else: text = text + k drawText(text) # img.show() file.close();