Suggerirei una soluzione più semplice: controlla se il sensore di movimento del mouse può rilevare quando il mouse è sollevato (non so che sia fattibile, ma credo che lo sia), in caso contrario, aggiungi un piccolo sensore nella parte inferiore del mouse, che controlla se il mouse si trova a terra. Ora, quando il mouse viene sollevato di, diciamo 15 cm, metti il mouse in uno stato "non impostato", il primo pulsante che viene premuto, dopo che il mouse è atterrato su una superficie, definisce l'orientamento del pulsante.
Esempio: il mouse si trova sulla destra della tastiera: solleva il mouse e rimettilo sul lato sinistro della tastiera. Premi il pulsante destro del mouse: il mouse è ora un mouse sinistro (pulsante destro = pulsante 1).
Se il laser - che oggigiorno ha la maggior parte dei mouse - o il led led è in grado di rilevare la distanza dalla superficie (o il movimento da essa), è possibile implementare la soluzione completamente nel software lato driver . Potrebbe funzionare anche con i mouse standard.
Per ridurre al minimo la commutazione accidentale dei pulsanti e consentire di "far scorrere" il mouse più volte sulla stessa superficie, devi semplicemente attivare lo stato "non impostato" dopo che il mouse è stato in aria ad un'altitudine di ~ 15 cm e per più di 2 secondi.