При беглом просмотре -- этот код рассчитывает на то, что джойстик замыкает только один контакт за раз. В реальном джойстике, если только это не специальный джойстик с крестовиной для пакмана, очень часто оказываются замкнуты два контакта сразу, как для движения по диагонали. В таком случае этот код провалится до joykon5, ничего не определив.
В Биноруме движение по диагонали не предусмотрено, значит надо или решить какое направление приоритетно, или допустим запоминать первое сработавшее и игнорировать остальные, пока первое не будет отпущено.
С кнопками аналогично, но конфликтная ситуация наверное возникает реже.




Ответить с цитированием