Вы можете с достаточно высокой степенью достоверности определить, происходит ли касание пальцем или стилусом, захватив PointerEvent и проверив свойства его ширины и высоты, которые представляют размер наконечника.
Стилус обычно имеет меньшую ширину и высота, чем палец.
Обучение приложения распознаванию пальца и стилуса
Поскольку размер наконечника, вероятно, различается для разных экранов, пальцев и стилусов, возможной стратегией было бы заставить пользователя научить приложение распознавать различные типы касаний:
Команда «Это палец», за которой следует несколько касаний пальца, пока приложение не получит хороший образец размеров.
Команда «Это стилус», после которого следует несколько касаний стилуса.
MDN для Интерфейс PointerEvent .
Демонстрация, показывающая размер кончика стилуса (или пальца) каждого экрана касания .
Это будет отображать размер наконечника прикосновения или нажмите на экран:
let counter = 0;
// listen for 'pointerdown' events, detect tip size
window.addEventListener('pointerdown', (evt) => {
const w = Number(evt.width).toFixed(1);
const h = Number(evt.height).toFixed(1);
const div = document.getElementById('result');
counter++;
div.innerHTML = `${counter}: stylus width: ${w}, height: ${h}`;
});
body {
background-color: #eee;
color: black;
}
#result {
margin: 0.5rem;
width: 18rem;
min-height: 2rem;
padding: 0.5rem;
border: 1px solid gray;
color: green;
}
<h4>Test of Pointer Stylus Tip Size</h4>
<p>Touch or click anywhere...</p>
<div id="result"></div>