6 votos

Clic izquierdo y derecho simultáneos con el trackpad

Estoy intentando jugar a un juego en mi MacBook (The Settlers bajo DOSBox) que hace uso de algo que el manual llama "clic especial": mantener pulsado el botón derecho del ratón y pulsar el botón izquierdo.

Parece que es imposible hacerlo con el trackpad. Aparte de conectar un ratón externo, ¿hay alguna forma de simular esa entrada?

0 votos

¿Hay ajustes de control en el juego que se puedan utilizar para eliminar la necesidad de hacer clic en ambos a la vez?

0 votos

No, los controles están codificados.

1voto

Gilean Puntos 6455

Resultó ser bastante fácil parchear DOSBox para permitir el uso de una tecla del teclado como botón del ratón. I presentó un parche para añadir esa funcionalidad al mapeador de claves.


Si quieres probar esto, guarda 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, revisa el último código de DOSBox desde Subversion:

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

Entre en el directorio y aplique el parche con el botón patch comando:

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

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

A continuación, siga las instrucciones del INSTALL para construir su nueva versión de DOSBox. Básicamente, son estos tres comandos:

./autogen.sh
./configure
make

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

0 votos

¿Cómo puedo utilizar su parche? Estoy corriendo un macbook pro 2011, con OSX 10.6.8 Estoy tratando de jugar Ultima VIII en una envoltura Dosbox, donde necesito este clic especial para realizar una acción. ¡Gracias!

0 votos

Consulta el código fuente de DOSBox en SVN aquí Aplicar el parche con patch -p0 < map-mouse-buttons.diff y siga las instrucciones del INSTALL archivo.

0 votos

Su parche parece tener problemas con Mac OS 10.13.3 . Me sale Parcheando archivo src/gui/sdl_mapper.cpp Hunk #1 FAILED at 32. patch: **** parche malformado en la línea 25: \ ¿podrías actualizar para que funcione? Gracias

1voto

ranklord Puntos 664

Puedes configurar el touchpad para realizar el clic derecho presionando su esquina inferior derecha (o izquierda). Si el clic normal se hace tocando el trackpad (no haciendo clic), entonces puedes realizar este truco mágico: presiona la esquina inferior para hacer clic derecho y toca el touchpad para hacer clic normal = dos clics simultáneos. enter image description here

0 votos

Esto podría funcionar, pero no funciona en el juego que estoy intentando jugar, porque tengo que mantener pulsado el botón izquierdo del ratón y luego el botón derecho. ¿Alguna otra idea?

0 votos

En la pregunta original era al revés. Pero incluso en tu caso debería funcionar. Yo tengo clic derecho por dos dedos toque. Por lo tanto, el clic normal en el touchpad (esto sería su clic izquierdo) y luego el clic derecho por dos dedos toque.

1 votos

Gracias. Eso funciona durante una fracción de segundo, pero para este juego necesito poder mantenerlos pulsados al mismo tiempo. Dado que mi problema es bastante diferente, tal vez publique una pregunta por separado.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X