Всякие моментные кнопы лучше как раз через инверсию. В единый блок. Считал, сделал xor к старому, запомнил, результат — маска событий.
Ессно в момент восстановления сеанса связи предварительно реинициировать старое.
Да и читать лучше сразу все, включая текущий экран если их больше 1