@name @inputs KeyInput Reset @outputs Index Text:string @persist KeyLog:string Data:array Menu @trigger #Set menu to first if(first()) { Menu = 0 Index = 0 Reset = 0 } #Manual reset if(Reset) { Menu = 0 Index = 0 KeyLog = "" exit() } #Key Chars KEY_BACKSPACE = 127 KEY_LEFTSHIFT = 154 KEY_ENTER = 13 KEY_NUM1 = 49 KEY_NUM2 = 50 KEY_NUM3 = 51 #Delete character if(KeyInput == KEY_BACKSPACE) { KeyLog = KeyLog:sub(1,-2) } #Append to KeyLog elseif(KeyInput > 0 && KeyInput != KEY_LEFTSHIFT && KeyInput != KEY_ENTER) { KeyLog += toChar(KeyInput) } #Display Menu(s) MT = "" MT += "-- Menu Options --\n" MT += "- Addr " + Index + " -\n\n" #0 - No menu selected if(Menu == 0) { MT += "[1] Change Address\n" MT += "[2] Write data\n" MT += "[3] Read data\n" MT += "\nInput: "+KeyLog+"\n" #User has selected 'Change Address' if(KeyLog == "1" && KeyInput == KEY_ENTER) { Menu = 1 KeyLog = "" exit() } #User has selected 'Write Data' if(KeyLog == "2" && KeyInput == KEY_ENTER) { Menu = 2 KeyLog = "" exit() } #User has selected 'Write Data' if(KeyLog == "3" && KeyInput == KEY_ENTER) { Menu = 3 KeyLog = "" exit() } } #1 - Change their address if(Menu == 1) { MT += "Enter New Address (1 - 32):\n" MT += KeyLog + "\n" } #User has selected their address if(KeyInput == KEY_ENTER) { Index = KeyLog:toNumber() KeyLog = "" Menu = 0 exit() } #2 - Write to address if(Menu == 2) { MT += "Type 'exit' to return\n" MT += "Press enter to save input\n" MT += "Input:\n" + KeyLog if(KeyInput == KEY_ENTER) { if(KeyLog != "exit") { Data:setString(Index, KeyLog) } KeyLog = "" Menu = 0 exit() } } if(Menu == 3) { MT += "Address " + Index + " returned:\n" + Data:string(Index) if(KeyInput == KEY_ENTER) { Menu = 0 KeyLog = "" exit() } } #Write menu Text = MT exit()