Я нашел решение для этого. Я использую приложение ScanWedge, которое вставляет отсканированный штрих-код в текстовое поле с фокусом. Проблема была в том, что мне нужно было сфокусироваться перед сканированием.
В настройках ScanWedge есть опция для отправки префикса со штрих-кодом и возможность включить экранирование в префиксе (должен быть включен), я просто использую префикс \ x0D, что означает отправку нажатия клавиши ввода перед штрих-кодом.
Это работает, потому что метод focus () выделяет текстовое поле, но не вставляет курсор, однако, если клавиша ввода нажата, когда текстовое поле выделено, курсор вставляется.