Я наконец-то решил это.Я запустил код своего робота в потоке диспетчеризации событий вместе с кнопочными эффектами.Это означало, что ни одна из кнопок не могла реагировать на действия моего робота, пока мой робот не завершил выполнение.
Я не совсем уверен, почему это помешало бы моему роботу работать правильно в этом случае.Я обнаружил, что если я удалю команду ctrl-F4, робот ответит на команду ввода, но кажется, что обе команды должны были быть поставлены в очередь и выполнены правильно в тот момент, когда робот вернулся.Я предполагаю, что либо существует ограничение на количество событий в очереди, либо я каким-то образом получил данные между двумя событиями.В любом случае, перемещая своего робота в отдельную нить, я получаю желаемое поведение.
, кстати, причина, по которой я не смог создать SSCCE, заключалась в том, что я пытался встроить робота в кнопку и пытался заставить робота делатьнесколько событий одновременно;но я не пробовал кнопку, порождающую робота, делающего несколько событий.Чтобы воссоздать эту проблему, я бы закончил с кодом, столь же сложным, как и мой исходный код.