Thank you for your post.
The script trigger OnLayoutKeystroke evaluates every keystroke. A desktop machine (Windows or Mac OS X) has a faster processor than iOS, so performance will be slower under iOS.
Do you get an error message? If so, what is it?
One possible workaround under iOS is to batch the information into a global field, and then have a script parse the data putting it into the proper fields/records.
In my own applications I am using a Motorola CS3000 series bluetooth scanner, but I tend not to use the batch function for a number of reasons which relate to the lack of instant feedback to the user as to what they have scanned.
What I have found works for me is a header table (day record) and a related transactions table. with this I have found that by using an iPad with a FMGO layout based on the header and a portal to the transactions I can scan directly into a new record, commit the request and advance to the next new record. There is only a slight delay as the characters 40 or 50 (EAN 128 with various AI's) of them are populated into the barcode scan field. All other extractions, lookups or auto enter data happen almost instantaneously.
It might be an approach worth considering.