1*4882a593Smuzhiyun====================================== 2*4882a593SmuzhiyunParallel port LCD/Keypad Panel support 3*4882a593Smuzhiyun====================================== 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunSome LCDs allow you to define up to 8 characters, mapped to ASCII 6*4882a593Smuzhiyuncharacters 0 to 7. The escape code to define a new character is 7*4882a593Smuzhiyun'\e[LG' followed by one digit from 0 to 7, representing the character 8*4882a593Smuzhiyunnumber, and up to 8 couples of hex digits terminated by a semi-colon 9*4882a593Smuzhiyun(';'). Each couple of digits represents a line, with 1-bits for each 10*4882a593Smuzhiyunilluminated pixel with LSB on the right. Lines are numbered from the 11*4882a593Smuzhiyuntop of the character to the bottom. On a 5x7 matrix, only the 5 lower 12*4882a593Smuzhiyunbits of the 7 first bytes are used for each character. If the string 13*4882a593Smuzhiyunis incomplete, only complete lines will be redefined. Here are some 14*4882a593Smuzhiyunexamples:: 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun printf "\e[LG0010101050D1F0C04;" => 0 = [enter] 17*4882a593Smuzhiyun printf "\e[LG1040E1F0000000000;" => 1 = [up] 18*4882a593Smuzhiyun printf "\e[LG2000000001F0E0400;" => 2 = [down] 19*4882a593Smuzhiyun printf "\e[LG3040E1F001F0E0400;" => 3 = [up-down] 20*4882a593Smuzhiyun printf "\e[LG40002060E1E0E0602;" => 4 = [left] 21*4882a593Smuzhiyun printf "\e[LG500080C0E0F0E0C08;" => 5 = [right] 22*4882a593Smuzhiyun printf "\e[LG60016051516141400;" => 6 = "IP" 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun printf "\e[LG00103071F1F070301;" => big speaker 25*4882a593Smuzhiyun printf "\e[LG00002061E1E060200;" => small speaker 26*4882a593Smuzhiyun 27*4882a593SmuzhiyunWilly 28