Skip to main content

Context
Barcode scanner devices basically work as a normal keyboard attached to a phone, meaning it needs focus at some place on the screen where to put the scanned barcode. With barcode scanners with a touchscreen, it is very easy to unintentional lose the focus on the barcode field (even when there is only one editable task field and a default that sets @cursor_to_col_id), which will insert the barcode in the wrong field or not at all. For production/warehouse workers, this is simply not workable since scanning a barcode should just work without having to even look at the screen.

Idea
With this idea I would like a solution to make a fail-proof barcode scanner with the universal GUI which isn't limited to requiring focus on a specific field. In fact it should be optional to even show the barcode field to the user, since most times a barcode doesn't say much to the user.

Possible solution
A possible solution could be a setting at a tab-task. When a screen with that tab-task is opened in the Universal GUI, it will catch keyboard input and execute the task with the scanned input in the first parameter with a barcode domain. When there are more editable fields in the task, the task should not execute directly but open (with the barcode field filled in) so that the user can give input for the other parameters. 

Side notes
Important for this solution to be viable, is that it would always catch the keyboard input when the screen is opened. So even when the focus is on a different part of the screen, like a detail window or the breadcrum/title bar.

It should also distinguish the on-screen keyboard/normal keyboard from the barcode scanner input (with a prefix or time-based).

 

Quick and dirty
As a quick and dirty solution, would it be possible to add a custom javascript event listener that catches the keyboard input, distinguishes barcode input and calls Indicium to insert a record or execute a tab-task? Something similar as @Jasper wrote here: Upload multiple files using the Universal GUI | Thinkwise Community (thinkwisesoftware.com).

Hi Peter,

Capturing any input and starting a task with this may be a bit problematic. As you mentioned, a connected barcode scanner (not the camera) will simply send keystrokes.

It will be challenging to distinguish these keystrokes from the user simply working with the screen (searching, hotkeys, etc.).

If a task pop-up were to keep or restore the focus to the current parameter when you touch or click outside of the task area, would this resolve the original problem?


 

Hi Peter,

Capturing any input and starting a task with this may be a bit problematic. As you mentioned, a connected barcode scanner (not the camera) will simply send keystrokes.

It will be challenging to distinguish these keystrokes from the user simply working with the screen (searching, hotkeys, etc.).

I have found some solutions on the internet: jquery - Javascript: How to read a hand held barcode scanner best? - Stack Overflow / javascript - Detect when input box filled by keyboard and when by barcode scanner. - Stack Overflow. Of course I don't know if it is possible to actual use these solutions in the Universal GUI, but it doesn't seem impossible. 

 

If a task pop-up were to keep or restore the focus to the current parameter when you touch or click outside of the task area, would this resolve the original problem?

That would definitely be better than the current situation. But it would still limit the use of a barcode scanners in cases when you want to scan multiple items to do one action with. In those cases you want to show a (card)list with the scanned items while the user should be able to keep scanning new items (without having to open a task first). For example a scanner supermarkets use for customers to scan the products they want to buy. 


I have the same problem and already decided to create a seperate app for scanning, …. it requires more than this idea.

One thing is that the Thinkwise layout doesn’t allow enough to optimize for this usage, it has to be a seperate app, and … a lot of things. ( In our business case it should work offline ).

I will launch one additional idea because of this; that is to have a polling interface on the active tab. That would require a workflow to start from the active tab each second. The reason is that I would like to allow to scan in a different app, and to make the user interface popup without the difficulty to implement web sockets.