Clic izquierdo y derecho simultáneos con trackpad

Estoy tratando de jugar un juego en mi MacBook (The Settlers bajo DOSBox) que hace uso de algo que el manual llama "clic especial": mantener presionado el botón derecho del mouse y hacer clic en el botón izquierdo del mouse.

Parece ser imposible hacer eso usando el trackpad. Además de conectar un mouse externo, ¿hay alguna forma de simular dicha entrada?

¿Hay configuraciones de control en el juego que pueda usar para eliminar la necesidad de hacer clic en ambos a la vez?
No, los controles están codificados.

Respuestas (2)

Puede configurar el panel táctil para que haga clic con el botón derecho presionando su esquina inferior derecha (o izquierda). Si su clic normal se realiza tocando el panel táctil (sin hacer clic en él), entonces puede realizar este truco mágico: presione la esquina inferior para hacer clic con el botón derecho y toque el panel táctil para hacer un clic normal = dos clics simultáneamente.ingrese la descripción de la imagen aquí

Esto podría funcionar, pero no funciona en el juego que intento jugar, porque tengo que mantener presionado el botón izquierdo y luego el botón derecho. ¿Alguna idea más?
En la pregunta original era al revés. Pero incluso en tu caso debería funcionar. Tengo clic derecho con dos dedos. Por lo tanto, haga clic normalmente en el panel táctil (este sería su clic izquierdo) y luego haga clic derecho con dos dedos.
Gracias. Eso funciona por una fracción de segundo, pero para este juego necesito poder mantenerlos presionados al mismo tiempo. Dado que mi problema es lo suficientemente diferente, tal vez publique una pregunta por separado.
Esto no parece funcionar en la práctica. ¿Hay alguna manera de probarlo?

Resultó bastante fácil parchear DOSBox para permitir el uso de una tecla del teclado como botón del ratón. Envié un parche para agregar esa funcionalidad al mapeador de claves.


Si desea probar esto, guarde lo siguiente en un archivo de texto llamado 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 */

Luego, en la terminal, consulte el código DOSBox más reciente de Subversion:

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

Ingrese al directorio y aplique el parche con el patchcomando:

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

(Esto supone que el archivo de parche se guarda en el directorio principal de dosbox-svn. Si está en otro lugar, ajuste el comando según sea necesario).

Luego, siga las instrucciones en el INSTALLarchivo para construir su nueva versión de DOSBox. Básicamente, son estos tres comandos:

./autogen.sh
./configure
make

Aunque es posible que deba instalar varias dependencias, lo que se puede hacer a través de Macports y herramientas similares.

¿Cómo uso tu parche? Estoy ejecutando un macbook pro 2011, con OSX 10.6.8. Estoy tratando de reproducir Ultima VIII en un envoltorio de Dosbox, donde necesito este clic especial para realizar una acción. ¡Gracias!
Consulte el código fuente de DOSBox de SVN aquí , aplique el parche con patch -p0 < map-mouse-buttons.diffy siga las instrucciones del INSTALLarchivo.
Su parche parece tener problemas con Mac OS 10.13.3. Obtengo el archivo de parches src/gui/sdl_mapper.cpp Hunk #1 FAILED en 32. parche: **** parche con formato incorrecto en la línea 25: \ ¿Podría actualizar para que funcione? Gracias
Hm, funciona para mí... Podría valer la pena intentar descargar el archivo del parche directamente desde Sourceforge: sourceforge.net/p/dosbox/patches/264/attachment/…