Izquierda y derecha simultáneas con trackpad

3

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

Parece que es imposible hacerlo usando el trackpad. Además de colocar un mouse externo, ¿hay alguna manera de simular dicha entrada?

    
pregunta legoscia 13.05.2015 - 19:59

2 respuestas

1

Puede configurar el panel táctil para realizar un clic con el botón derecho al presionar la esquina inferior derecha (o izquierda). Si su clic normal se realiza al tocar el trackpad (no al hacer clic en él), puede realizar este truco de magia: presione la esquina inferior para hacer clic derecho y toque el touchpad para hacer clic normal = dos clics simultáneamente.

    
respondido por el Denis Rasulev 29.09.2015 - 07:12
1

Resultó ser bastante fácil parchar DOSBox para permitir el uso de una tecla del teclado como botón del mouse. envié un parche para agregar esa funcionalidad al asignador 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 el terminal, revisa el último código de DOSBox 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 comando patch :

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 archivo 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.

    
respondido por el legoscia 21.05.2015 - 03:45

Lea otras preguntas en las etiquetas