Определение способа взаимодействия пользователя с интерфейсом

В браузерах существует отличие в визуальном поведении нативных контролов (ссылка, кнопка, чекбокс и т.д.) в зависимости от способа взаимодействия с ними: контрол подсвечивается рамкой только если он получил фокус при клавиатурном взаимодействии (кроме полей ввода input и textarea, они всегда подсвечиваются).
 
Блочные контролы (из библиотеки bem-components) выделялись свечением рамки независимо от того, клавиатурой или мышкой был поставлен фокус.
 
Появилась задача по устранению различия поведения нативных контролов и блоков.
Кратко ее можно сформулировать так:
 
"Вне зависимости от используемого контрола желтая рамка при клике на него появляется только при переходе табом. 
При клике мышкой никаких желтых рамок быть не должно.
Исключением являются поля ввода: input, textarea.”
 
Для определения способа взаимодествия пользователя с интерфейсом для блока i-ua: добавлен модификатор "interaction" с двумя значениями: pointer и keyboard.

Суть работы блока i-ua: он примешивается к блоку b-page, и слушает события mousedown и keydown на dom-узле "body".

При взаимодействии со страницей с помощью клавиатуры модификатор interaction
выставляется в значение keyboard, при взаимодействии мышкой (указателем) – в значение pointer.