Написать что знаю несколько языков это одно, но действительно знать, понимать, и применять на практике это совсем другое, поэтому плохо зная свой сигнатурный язык мышления, полученный от социальной среды с рождения, буду рассказывать в статье как правильно собирать данные нажатия, виртуальной клавиатуры Android в web проекте, используя javascript. Классика, сам не умею научу других. Для чего это может понадобиться, если у вас возник такой вопрос, то вы явно новичок во всех "этих движения", мой вариант ответа: безопасность, изучение характеристик психомоторики пользователя, дальше фантазия в помощь. Игровая площадка - сообщество.com, к сожалению без рекламы не обойтись, мой, своеобразный сборник различных решений для web проекта. Будьте осторожны заходя на этот ресурс, использую старый протокол http, хакеры из Мали могут украсть ваши персональные данные, предупредил если вдруг кто то решил зарегистрироваться. Пользователь использует интерфейс web проекта, набирает текст для публикации своей мысли и генерации изображения. Регистрация нажатия клавиши Регистрация отпускания клавиши Вычисление времени нажатия При сохранении публикации, отправлять данные в сервер ВАЖНО! Сохранять данные нажатий клавиш только те которые отображаются в полях набора текста HTML, все события виртуальной клавиатуры меня не интересуют, в этой задачи. Ожидаемый вид данных: список из словарей, в последовательности получаемых символов из клавиатуры с учетом их последовательности в тексте. В общем цель задана, план не кажется сложным, приступаю к реализации. Так как я великолепный писатель плагиатор javascript, сразу отправляюсь за советом к поисковику. Нахожу нужные фрагменты кода и формирую из этого своё решение: Полученный сборник чужих идей, проверяю в Chromium, Firefox, операционной системы Ubuntu, работает так как ожидалось. А как дела в android? Сначала выясняю что не работает. Дальше узнаю что просто так взять и посмотреть что там происходит в log браузера телефона не могу, без дополнительных манипуляций, которые к слову не принесут должного комфорта, итог: добро пожаловать, мне, в мир эмулятора. Умные люди напишут что можно установить плагины, всякие экранные клавиатуры и отслеживать нужное без всяких эмуляторов, этим замечательным удачи. А я не умный, поэтому трачу сутки на установку Android SDK в Ubuntu. Почему так долго? Живу в новом Донецке, ошибка 403, лучшее объяснение от github: Так что да здравствует бесплатный vpn и 104 кб/с. Проверил два варианта установки: бесплатным prox, конфигурирую SDK под свою задачу, дальше в браузере с бесплатным vpn выкачиваю нужные компоненты вручную и сортирую по папкам ноутбук с Windows и бесплатным адекватным vpn, раздаю интернет серверу с Ubuntu  Принципиально не хотел использовать платный промежуточный пк для скачивания бесплатного программного обеспечения. Вопрос живущим на материке: доступ к unreal engine открыт? https://android.tutorials24x7.com/blog/how-to-install-android-sdk-tools-on-ubuntu https://stackoverflow.com/questions/41311344/installing-android-emulator-in-android-studio-with-zip-files https://androidsdkoffline.blogspot.com/p/android-sdk-9-api-28-pie-direct-download.html Запуск эмулятора в terminal: ВАЖНО! Использовать браузер Chrome или Chromium Эмулятор установлен, продолжаю... Подключаюсь к браузеру, вижу ошибку 229 при нажатии с виртуальной клавиатуры. Снова как продвинутый программист обращаюсь за советом к накопленным человеческим знаниям. Выясняю что это вовсе не проблема, так задумано(https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode, https://www.w3.org/TR/uievents/#keys-IME), в силу нескольких обстоятельств : безопасность, кстати в ios код ПК версии работает без проблем мультиязычность Обходных API на этот случай не предусмотрено, решение: отслеживать получаемый символ в полях набора текста HTML. Для соблюдения требования "сохранять данные нажатий клавиш только те которые отображаются..." , в версии для android, вынужден использовать Patience Diff алгоритм, а зачем дайте ответ самостоятельно (домашнее задание), подсказка автодополнение и перемещение каретки по тексту. Собственно android версия: Код уродлив, но точно понятен без объяснения каждой строки. Протестировал, работает. С нынешними вычислительными мощностями мобильных устройств, проблем с производительностью нет. Хорошей практикой будет сбор данных всех действий в вашем web проекте, в дополнение к реализации из статьи. Предложенный способ, поможет избежать вторичной обработки данных, получаемых с android устройств. Рабочий код https://github.com/naturalkind/social-network/blob/v0.5/static/js/keystroke.js  Создатель