Puedes combinar un callback multitáctil del espacio de usuario (a través de MTRegisterContactFrameCallback
) con un CGEventTap
para bloquear eventos de toque. A partir de la experimentación, la mala cancelación de la palma parece deberse al nivel de hardware, ya que si se observa el ID del dedo reportado en el marco multitáctil, parece pensar que la palma es un pulgar muchas veces. Por el contrario, el trackpad interno distingue correctamente y de manera consistente estos dos. Así que simplemente filtré basado en el fingerId (de todos modos nunca toco con el pulgar) y funciona para filtrar el 95% de los clics. Si quieres, también puedes jugar con otros parámetros como el tamaño, la orientación, etc. (el formato de marco de contacto está bien documentado, ver por ejemplo https://gist.github.com/rmhsilva/61cc45587ed34707da34818a76476e11 para ver un código de ejemplo sobre cómo usar eso)
Puedes ser más elaborado y considerar también la posición, que es cómo creo que BetterTouchTools hace cuando activas la función "filtrar toque para hacer clic en el borde del magic trackpad". No estoy seguro por qué el desarrollador de BTT dijo que esto era inviable (como uno de los otros comentaristas vinculó en un problema de github que ha sido eliminado), ya que BTT ya tiene una función para hacer esto (el mencionado prevenir tocar para hacer clic en el borde del trackpad). Pero eso no está implementado muy bien ya que parece aplicarse tanto a los trackpads internos como externos.
También podrías extender esto al movimiento del puntero que también se puede bloquear de manera similar con un cgeventtap. Pero la dificultad allí puede estar en correlacionar entre el evento de trackpad crudo y el posterior cgevent, lo cual puede ser por qué el desarrollador de BTT vaciló.
Por cierto, ¿alguna vez te has preguntado cómo BTT es capaz de voltear la orientación del magic trackpad incluso en 10.11 y posterior? Utiliza la llamada MTDeviceSetSurfaceOrientation
en el framework multitáctil privado. Sorprendente que no haya encontrado ninguna referencia a esto en la web. Después de 5 años pensarías que alguien podría haberse mostrado curioso...
0 votos
¿Cuál es el nombre de ese producto? También quiero comprarlo. Gracias.
0 votos
Aquí hay un producto similar: bullettrain.com/products/express-keyboard-platform, aunque no lo he probado.
0 votos
@Michael Prescott He estado buscando en todas partes exactamente ese producto específico, hasta ahora solo he encontrado cosas como el tren bala que son extremadamente voluminosas. Hice una búsqueda de imagen inversa pero no encontré nada al respecto. ¿Puedes decirnos el nombre del producto o dónde lo conseguiste?
0 votos
Si estás dispuesto/a a deshabilitar SIP y hacer modificaciones a nivel de kext, puedes hacer algo como github.com/cocoahuke/shrink_trackpad. Por lo que puedo decir, con el magic trackpad, el rechazo de la palma se realiza en el propio trackpad, no en el MacBook host. Si dumpfeas los frames entre multitouchdriver e interfaz HID, verás que la palma suele interpretarse como pulgar por alguna razón. (Aviso: es posible que multitouchdriver esté haciendo procesamiento, pero no vi evidencia alguna y la estructura de los frames coincide con la disposición de paquetes del controlador linux mt2).
0 votos
Desde que vi que palma suele interpretarse como pulgar por alguna razón, podrías hacer algo parecido al enlace de arriba, pero de manera más selectiva.
0 votos
Dicho eso, si solo te importa evitar el tap para hacer clic, probablemente puedas hacerlo con un evento de tap junto con una llamada de marco multitáctil a nivel de espacio de usuario. Esto podría ser cómo tiene la opción "no permitir tap para hacer clic en el lado derecho". Pero aún tendrás movimiento del mouse, y prevenir eso es más complicado (supongo que también podría ser posible a través de eventos de tap o algunas APIs de CG, pero no es muy limpio).