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.