Estou desenvolvendo um aplicativo da Web (não um site com páginas de texto interessante) com uma interface muito diferente para toque (o dedo oculta a tela quando você clica) e o mouse (depende muito da visualização instantânea). Como posso detectar que meu usuário não tem mouse para apresentar a interface correta? Pretendo deixar uma opção para as pessoas com mouse e toque (como alguns notebooks).
O recurso de evento de toque no navegador não significa que o usuário esteja usando um dispositivo de toque (por exemplo, o Modernizr não o corta). O código que responde corretamente à pergunta deve retornar false se o dispositivo tiver um mouse, caso contrário, true. Para dispositivos com mouse e toque, ele deve retornar falso (não apenas tocar)
Como observação lateral, minha interface de toque também pode ser adequada para dispositivos apenas com teclado, por isso é mais a falta de mouse que estou procurando detectar.
Para tornar a necessidade mais clara, aqui está a API que estou procurando implementar:
// Level 1
// The current answers provide a way to do that.
hasTouch();
// Returns true if a mouse is expected.
// Note: as explained by the OP, this is not !hasTouch()
// I don't think we have this in the answers already, that why I offer a bounty
hasMouse();
// Level 2 (I don't think it's possible, but maybe I'm wrong, so why not asking)
// callback is called when the result of "hasTouch()" changes.
listenHasTouchChanges(callback);
// callback is called when the result of "hasMouse()" changes.
listenHasMouseChanges(callback);