KEYBOARDHINT=NONE is one of the options that has been suggested for those cases
http://4js.com/online_documentation/fjs-fgl-manual-html/#c_fgl_FSFAttributes_KEYBOARDHINT.html and that would certainly be beneficial for the case of barcode scanners that send keystrokes.
I had a support case with Genero Mobile asking a similar question. The solution for that customer was amending the dialog statement so that it was something like ...
WHILE TRUE
INPUT barcode, quantity
END INPUT
-- insert record
END WHILE
... the key being to exit out of the dialog once the record had been input and the user was ready to scan again. When the user first enters the dialog, the keyboard was not brought up.
For the case with Android Device with keyboards, that would not be the solution. I wold expect that to be done at system level e.g. quick google search with CN51 yielded
http://hsm.force.com/publickb/articles/HSM_Article/CN51-Android-How-to-prevent-virtual-keyboard-from-popping-up.
Another possibility to investigate is in the GBC initialisation code, there are tests, is this a touch device etc, that are then used for subsequent behaviour. It maybe that that test or its use needs refinement to cater for this case.
Reuben