• We recently switched our forum platform. If you experience any issues please email support@crystalfontz.com

Linux USB 633 Keypad with lcdproc

syates

New member
Just wondering if anyone has had any joy getting the Keypad on a USB 633 to work using lcdproc.

lcdproc is out of CVS
current (0.5)
lcdproc-CVS-current-20040419

I've been debugging CFontz633io.c trying to read a byte from a keypress with out much luck.

Has anyone else been down this path?

Cheers

Simon
Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.
 

syates

New member
Thanks wyofreeride.

The 23: Configure Key Reporting needed to be set.

I have the keypad working with the test633 code in Linux now. When I've worked out a patch/work around to lcdproc I'll post it here.

Also, I'm trying to get the keypad working with freevo. If I need to patch lcd.py, I'll also post it.

Thanks again for the info - much appreciated
 
USB LCD Displays - Graphic and Character LCDs with a Keypad

syates

New member
Freevo patch to LCD for the 633 keypad

I'll leave this for anyone doing some archeology
Diff from CVS

--- /home/syates/lcd.py 2004-05-04 01:32:10.000000000 +1000
+++ lcd.py 2004-05-04 01:33:49.000000000 +1000
@@ -2,7 +2,7 @@
# -----------------------------------------------------------------------
# lcd.py - use PyLCD to display menus and players
# -----------------------------------------------------------------------
-# $Id: lcd.py,v 1.17 2004/02/23 05:30:28 gsbarbieri Exp $
+# $Id: lcd.py,v 1.6 2004/05/03 15:33:49 syates Exp $
#
# Notes:
# To activate, put the following line in local_conf.py:
@@ -13,6 +13,27 @@
# 3) Better (and more) LCD screens.
# -----------------------------------------------------------------------
# $Log: lcd.py,v $
+# Revision 1.17.1 2004/05/03 15:33:49 syates
+# Added support for CrystalFontz 633 keypad
+#
# Revision 1.17 2004/02/23 05:30:28 gsbarbieri
# Better i18n support. Changed a lot of strings to cooperate with translators
# and made the menu items (not dirs, audio or video ones!) to use translations.
@@ -101,6 +122,7 @@
import copy
import time
import plugin
+import rc
from event import *
import config
import util
@@ -442,23 +464,23 @@
{ 16 : # 16 chars per line
# Welcome screen
{ "welcome" :
- { "title" : ( "title",
- "1 1 Freevo",
+ { "title" : ( " title ",
+ "Freevo",
None )
},

"menu" :
{ "title_v" : ( "scroller",
- "1 1 %d 1 m 3 \"%s%s\"",
+ "1 1 %d 1 h 3 \"%s%s\"",
"( self.width, menu.heading, self.get_sepstrmscroll(menu.heading) )" ),
"item_v" : ( "scroller",
- "1 2 %d 2 m 3 \"%s%s\"",
+ "1 2 %d 2 h 3 \"%s%s\"",
"( self.width, title, self.get_sepstrmscroll(title) )" )
},

"audio_player" :
{ "music_v" : ( "scroller",
- "1 1 %d 1 m 3 \"%s%s\"",
+ "1 1 %d 1 h 3 \"%s%s\"",
"( self.width, title, self.get_sepstrmscroll(title) )" ),
"time_v1" : ( "string",
"2 2 '% 2d:%02d/'",
@@ -474,7 +496,7 @@
"video_player" :
{ "video_v" : ( "scroller",
- "1 1 %d 1 m 3 \"%s%s\"" ,
+ "1 1 %d 1 h 3 \"%s%s\"" ,
"( self.width, title, self.get_sepstrmscroll(title) )" ),
"time_v2" : ( "string",
"2 2 '%s'",
@@ -491,10 +513,10 @@

"tv" :
{ "chan_v" : ( "scroller",
- "1 1 %d 1 m 3 \"%s%s\"",
+ "1 1 %d 1 h 3 \"%s%s\"",
"( self.width, tv.channel_id, self.get_sepstrmscroll(tv.channel_id) )" ),
"prog_v" : ( "scroller",
- "1 2 %d 2 m 3 \"%s%s\"",
+ "1 2 %d 2 h 3 \"%s%s\"",
"( self.width, tv.title, self.get_sepstrmscroll(tv.title) )" )
}
},
@@ -717,7 +739,7 @@
__author_email__ = 'gustavo@linuxdicas.com.br'
__maintainer__ = __author__
__maintainer_email__ = __author_email__
- __version__ = '$Revision: 1.17 $'
+ __version__ = '$Revision: 1.6 $'

def __init__( self ):
"""
@@ -752,7 +774,12 @@

plugin.register( self, "lcd" )

-
+ self.lcd.send("client_add_key Up")
+ self.lcd.send("client_add_key Down")
+ self.lcd.send("client_add_key Left")
+ self.lcd.send("client_add_key Right")
+ self.lcd.send("client_add_key Enter")
+ self.lcd.send("client_add_key Escape")

# Show welcome screen:
for w in self.screens[ "welcome" ]:
@@ -764,7 +791,7 @@
except UnicodeError:
self.lcd.widget_set( "welcome", w, param )

- self.lcd.screen_set( "welcome", "-priority 192 -duration 2 -heartbeat off" )
+ self.lcd.screen_set( "welcome", "-priority background -heartbeat off" )
self.last_screen = "welcome"

self.lsv = { } # will hold last screen value (lsv)
@@ -888,14 +915,29 @@


if self.last_screen != sname:
- self.lcd.screen_set( self.last_screen, "-priority 128" )
- self.lcd.screen_set( sname, "-priority 64" )
+ self.lcd.screen_set( self.last_screen, "-priority background" )
+ self.lcd.screen_set( sname, "-priority foreground" )
self.last_screen = sname


def poll( self ):
if self.disable: return

+ lcd_keyPress = self.lcd.read().strip()
+
+ if lcd_keyPress == "key Up":
+ rc.post_event(Event(rc.key_event_mapper("UP")))
+ elif lcd_keyPress == "key Down":
+ rc.post_event(Event(rc.key_event_mapper("DOWN")))
+ elif lcd_keyPress == "key Left":
+ rc.post_event(Event(rc.key_event_mapper("LEFT")))
+ elif lcd_keyPress == "key Right":
+ rc.post_event(Event(rc.key_event_mapper("RIGHT")))
+ elif lcd_keyPress == "key Enter":
+ rc.post_event(Event(rc.key_event_mapper("SELECT")))
+ elif lcd_keyPress == "key Escape":
+ rc.post_event(Event(rc.key_event_mapper("EXIT")))
+
if self.playitem:
self.draw( ( 'player', self.playitem ), None )
 
Top