Sugeriría una solución más simple: compruebe si el sensor de movimiento del mouse puede detectar cuándo se levanta el mouse (No sé si es factible, pero creo que lo es), si no, agregue un poco de sensor en la parte inferior del mouse, que comprueba si el mouse se encuentra en el suelo. Ahora, cuando el mouse se levanta, digamos 15 cm, se coloca el mouse en un estado "sin establecer", el primer botón que se presiona, después de que el mouse se encuentra en una superficie, define la orientación del botón.
Ejemplo: el mouse se encuentra a la derecha del teclado: levante el mouse y vuelva a colocarlo en el lado izquierdo del teclado.
Presione el botón del mouse a la derecha : el mouse ahora es un mouse del lado izquierdo (botón derecho = Botón 1).
Si el láser, que la mayoría de los ratones tiene hoy en día, o el led LED es capaz de detectar la distancia desde la superficie (o el movimiento hacia afuera de ellos), podría implementar la solución completamente en el software en el lado del conductor. Esto podría incluso funcionar con ratones estándar.
Para minimizar el cambio accidental de botones y permitir "deslizar" el mouse varias veces sobre la misma superficie, simplemente se activa el estado de "desarmado" después de que el mouse haya estado en el aire a una altura de ~ 15 cm y durante más de 2 segundos.