Clic sinistro e destro simultanei con trackpad

3

Sto provando a giocare sul mio MacBook (The Settlers sotto DOSBox) che fa uso di qualcosa che il manuale chiama "clic speciale": tenendo premuto il tasto destro del mouse e facendo clic con il pulsante sinistro del mouse.

Sembra impossibile farlo utilizzando il trackpad. Oltre al collegamento di un mouse esterno, esiste un modo per simulare tale input?

    
posta legoscia 13.05.2015 - 19:59
fonte

2 risposte

1

Puoi configurare il touchpad per eseguire il clic destro premendo il suo angolo inferiore destro (o sinistro). Se il tuo normale clic è fatto toccando il trackpad (non facendo clic), puoi eseguire questo trucco magico: premi l'angolo in basso per fare clic con il tasto destro e toccare il touchpad per fare clic normale = due clic simultaneamente.

    
risposta data 29.09.2015 - 07:12
fonte
1

È risultato abbastanza facile applicare PatchBox per consentire l'uso di un tasto della tastiera come pulsante del mouse. I ha inviato una patch per aggiungere tale funzionalità al key mapper.

Se vuoi provare questo, salva quanto segue in un file di testo chiamato map-mouse-buttons.diff :

Index: src/gui/sdl_mapper.cpp
===================================================================
--- src/gui/sdl_mapper.cpp  (revision 3914)
+++ src/gui/sdl_mapper.cpp  (working copy)
@@ -32,6 +32,7 @@
 #include "dosbox.h"
 #include "video.h"
 #include "keyboard.h"
+#include "mouse.h"
 #include "joystick.h"
 #include "support.h"
 #include "mapper.h"
@@ -1497,6 +1498,20 @@
    KBD_KEYS key;
 };

+class CMouseButtonEvent : public CTriggeredEvent {
+public:
+   CMouseButtonEvent(char const * const _entry,Bit8u _button) : CTriggeredEvent(_entry) {
+       button=_button;
+   }
+   void Active(bool yesno) {
+       if (yesno)
+           Mouse_ButtonPressed(button);
+       else
+           Mouse_ButtonReleased(button);
+   }
+   Bit8u button;
+};
+   
 class CJAxisEvent : public CContinuousEvent {
 public:
    CJAxisEvent(char const * const _entry,Bitu _stick,Bitu _axis,bool _positive,CJAxisEvent * _opposite_axis) : CContinuousEvent(_entry) {
@@ -1708,6 +1723,15 @@
    return event;
 }

+static CMouseButtonEvent * AddMouseButtonEvent(Bitu x,Bitu y,Bitu dx,Bitu dy,char const * const title,char const * const entry,Bit8u button) {
+   char buf[64];
+   strcpy(buf,"mouse_");
+   strcat(buf,entry);
+   CMouseButtonEvent * event=new CMouseButtonEvent(buf,button);
+   new CEventButton(x,y,dx,dy,title,event);
+   return event;
+}
+
 static CJAxisEvent * AddJAxisButton(Bitu x,Bitu y,Bitu dx,Bitu dy,char const * const title,Bitu stick,Bitu axis,bool positive,CJAxisEvent * opposite_axis) {
    char buf[64];
    sprintf(buf,"jaxis_%d_%d%s",stick,axis,positive ? "+" : "-");
@@ -1866,6 +1890,15 @@
    AddKeyButtonEvent(PX(XO+2),PY(YO+4),BW,BH,".","kp_period",KBD_kpperiod);
 #undef XO
 #undef YO
+#define XO 5
+#define YO 8
+   /* Mouse Buttons */
+   new CTextButton(PX(XO+0),PY(YO-1),3*BW,20,"Mouse");
+   AddMouseButtonEvent(PX(XO+0),PY(YO),BW,BH,"L","left",0);
+   AddMouseButtonEvent(PX(XO+1),PY(YO),BW,BH,"M","middle",2);
+   AddMouseButtonEvent(PX(XO+2),PY(YO),BW,BH,"R","right",1);
+#undef XO
+#undef YO
 #define XO 10
 #define YO 8
    /* Joystick Buttons/Texts */

Quindi, nel terminale, controlla l'ultimo codice DOSBox da Subversion:

svn co svn://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk dosbox-svn

Inserisci la directory e applica la patch con il comando patch :

cd dosbox-svn
patch -p0 < ../map-mouse-buttons.diff

(Ciò presuppone che il file patch venga salvato nella directory padre di dosbox-svn . Se è altrove, modifica il comando secondo necessità.)

Quindi, segui le istruzioni nel file INSTALL per creare la tua nuova versione di DOSBox. Fondamentalmente, sono questi tre comandi:

./autogen.sh
./configure
make

Anche se potrebbe essere necessario installare varie dipendenze, che possono essere eseguite tramite Macports e strumenti simili.

    
risposta data 21.05.2015 - 03:45
fonte

Leggi altre domande sui tag