This is a part of a program that scans a barcode and sends the scanned number to a vide recorder to be used as metadata.
Scanner is USB-type, program is written to scan numbers only but can be extended.
The scanner returns numbers according to keyboard rows/columns. Google for keyboard scan codes.
[{"id":"7ca6e4f9.5af774","type":"rpi-keyboard","z":"197d4b8a.b9c364","name":"","x":270,"y":520,"wires":[["c0dec102.7a94","71f7f7c0.bdd5d"]]},{"id":"bdf9e908.6ab278","type":"ui_text","z":"197d4b8a.b9c364","group":"e137936d.bca7a","order":1,"width":0,"height":0,"name":"","label":"raw text","format":"{{msg.payload}}","layout":"row-spread","x":1140,"y":520,"wires":[]},{"id":"c0dec102.7a94","type":"function","z":"197d4b8a.b9c364","name":"key scan decoder","func":"var msg2 = {};\nvar incoming = msg.payload;\nvar action = msg.action; // a 'down' indicates start of number\ncoi1= [\"\",\"\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"0\",\"-\",\"+\",\"\",\"\",\"Q\",\"W\",\"E\",\"R\",\"T\",\"Z\",\"U\",\"I\",\"O\",\"P\",\"\",\"\",\"\",\"\",\"A\",\"S\",\"D\",\"F\",\"G\",\"H\",\"J\",\"K\",\"L\",\"\",\"\",\"\",\"\",\"\",\"Y\",\"X\",\"C\",\"V\",\"B\",\"N\",\"M\",\",\",\".\"];\nif (action === \"down\") {\n // coi0= [\"\",\"\",\"!\",\"\",\"§\",\"$\",\"%\",\"&\",\"/\",\"(\",\")\",\"=\",\"-\",\"+\",\"\",\"\",\"Q\",\"W\",\"E\",\"R\",\"T\",\"Z\",\"U\",\"I\",\"O\",\"P\",\"\",\"\",\"\",\"\",\"A\",\"S\",\"D\",\"F\",\"G\",\"H\",\"J\",\"K\",\"L\",\"\",\"\",\"\",\"\",\"\",\"Y\",\"X\",\"C\",\"V\",\"B\",\"N\",\"M\",\",\",\".\"];\n if (incoming === 42) {\n // marker character for characters, not numbers\n // ignore it here\n }\n else if (incoming === 28) {\n // finished, send collection\n var outstr = flow.get(\"collect\");\n msg.payload = outstr;\n msg2.payload = 0;\n //flow.set(\"collect\",\"\");\n return [msg,msg2];\n }\n else {\n collected = flow.get(\"collect\");\n collected = collected + coi1[incoming];\n flow.set(\"collect\",collected);\n }\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":590,"y":520,"wires":[["bdf9e908.6ab278","71f7f7c0.bdd5d"],[]]},{"id":"7fc623f1.56a044","type":"comment","z":"197d4b8a.b9c364","name":"Barcode reader","info":"enthält noch nicht getestete Teile\nY-Z muß noch geprüft werden\nSonderzeichen müssen geprüft werden\n\nhttp://online-barcode-generator.net/","x":280,"y":400,"wires":[]},{"id":"71f7f7c0.bdd5d","type":"debug","z":"197d4b8a.b9c364","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":710,"y":440,"wires":[]},{"id":"e137936d.bca7a","type":"ui_group","name":"Vars and results","tab":"fe2dedb6.c42208","order":2,"disp":true,"width":"6","collapse":false},{"id":"fe2dedb6.c42208","type":"ui_tab","name":"Setup and Test","icon":"dashboard","order":1,"disabled":false,"hidden":false}]