How to fire a trigger in Tulip when an Android PDA build-in barcode scanner read a barcode

Hi, every member,
Here I have a Zebra TC21 Android PDA which has a build-in scanner, now I’m stacking in how to fire a trigger when scanner read a barcode or QR code without widget. Everyone know that we can place an input text widget to store the value of bar code without any trigger, but in this way, end user need to touch the screen to hightlight text widget firstly, therefor soft keyboard pops up immediately and shrink Tulip Player to a very small size. If I have 10 text widgets on screen to collect 10 different barcodes, end user need to touch screen 10 times. They are eager to reduce times of screen touch.
So, I intend to have a solution that Tulip player could receive value of scanned barcode and pass it to a variable directly rather than a widget. this is my use case.
I have tried triggers under Machine and device, such as Barcode scanner or Serial Barcode scanner, seems PDA recoginize it’s build-in bar code scanner as an input device like Keyboard scan data would be accepted only if an input widget highlighted, my triggers have never been fired.

Do you have any idea?

1 Like

OK, I have workaround.
I can change the configuration from DataWdget(Tools of Zebra PDA to transform/format scanned data as specified) to archieve this purpose. Enable intent output, enable “send Tab key”, in Keystroke output setting, enable “send Tab key” as well, after scan one bar code, addtional Tab key will help you hight light next text widget automatically, although soft keyboard pops up but no need to manually change widget.

I think you should try building a custom text field widget, then add a event trigger to fire on input change. Just an idea.

1 Like

We have a similar challenge here and are desperately looking for a way to get the Zebra TC devices (in our case TC77) to work properly with the Tulip Player and the integrated Barcode Scanner.

The only semi-feasible way right now to make this work seems to be to deploy a custom widget which listens for incoming keystrokes. This allows us to read incoming barcode data without the player showing any distracting keyboard popping up.

However, still, the downside of this is that barcode reading via the built-in scanner is only possible IF the custom widget is in focus. I reached out to support already and currently there seems to be no way to influence how focus travels through the app.

Hence, in order to use the integrated barcode scanner, the operator first needs to touch the custom barcode widget for it to activate… then he can use the barcode button on the device to fire the laser to read the barcode and widget will fetch the result and fire an event accordingly.

It would be great if there was either

a) built in support by the player to make use of Zebra’s native APIs … (there is plenty of support material on their site on how to achieve this) preferred


b) get a custom widget to keep focus or at least tell an app to shift focus to a specific widget on initial load or via a dedicated “move focus to” trigger action.

Here is the demo code for anyone interested:

HTML section

<div id="pressed_keys" class="test"/>

Code section

const keypressoutput = document.getElementById('pressed_keys');

function keypressHandler(e) 
    if (e.keyCode == 13)    //  Enter key from DataWedge
        keypressoutput.innerHTML += "<BR>";
        keypressoutput.innerHTML += e.key;

document.addEventListener('keypress', keypressHandler);

For device setup you can find some further hints on the Zebra site:

hi, you may want to have a look at this:

Judging from what I read in your use-case description until we have native ability to control how widget focus is being moved around in an app on demand (e.g. via a dedicated trigger action, which is discussed as a feature already in a different thread: Tulip player cursor to Badge ID field )

I would probably just create 10 different steps in sequence, each with its own barcode scan trigger and an instruction for the operator which field to scan next.

And then a summary step at the end showing all capture input all-together for verification.

If you can setup your device like I did, it should work without the operator needing to touch anything between steps. He can just scan his way through :slight_smile:

@jinbootter.qian @sebme
Good idea about the Custom Widget.The demo here is e.code=13,that means the send sign is “ENTER”,the info I can see from your PDA SCANNER CONFIG ,the send sign is TAB,remember change the e.key.Also you can config the “suffix to data”,if the Zebra has the same logic with Honeywell EDA50,I think the suffix is “\n” or “/n”,it will auto send a ENTER sign after you scan the barcode.good luck! :grinning:

Hey All-

In r237 (rolling out throughout this week) any/all barcode scanners will trigger the barcode device trigger type. All player types, all scanner types, Bluetooth, USB, built-in, etc.

This work came out of a request for better Bluetooth support ~3mo ago on community! keep the recs coming and I will do what I can to get them on the roadmap!


The weekend upgrade to r237.1 caused the barcode reading functionality using the internal Zebra barcode reader to cease working.

I have raised this with support and since been rolled back to v236.1 until the issue is better understood. I hope there is a solution for this on the horizon.