2009-05-23 06:11:48 +00:00
|
|
|
/* PadNull
|
2009-05-23 05:15:03 +00:00
|
|
|
* Copyright (C) 2004-2009 PCSX2 Team
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
2010-07-04 22:49:00 +00:00
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
2009-05-23 05:15:03 +00:00
|
|
|
*/
|
2011-04-09 08:17:34 +00:00
|
|
|
#include <gdk/gdkx.h>
|
2009-05-23 05:15:03 +00:00
|
|
|
#include "PadLinux.h"
|
|
|
|
|
|
|
|
Display *GSdsp;
|
|
|
|
int autoRepeatMode;
|
|
|
|
|
|
|
|
void _PadUpdate(int pad)
|
|
|
|
{
|
|
|
|
XEvent evt;
|
|
|
|
KeySym key;
|
|
|
|
|
|
|
|
// keyboard input
|
|
|
|
while (XPending(GSdsp) > 0)
|
|
|
|
{
|
|
|
|
XNextEvent(GSdsp, &evt);
|
|
|
|
switch (evt.type)
|
|
|
|
{
|
|
|
|
case KeyPress:
|
|
|
|
key = XLookupKeysym((XKeyEvent *) &evt, 0);
|
|
|
|
|
|
|
|
// Add code to check if it's one of the keys we configured here on a real pda plugin..
|
|
|
|
|
|
|
|
event.evt = KEYPRESS;
|
|
|
|
event.key = key;
|
|
|
|
break;
|
2010-04-25 00:31:27 +00:00
|
|
|
|
2009-05-23 05:15:03 +00:00
|
|
|
case KeyRelease:
|
|
|
|
key = XLookupKeysym((XKeyEvent *) &evt, 0);
|
|
|
|
|
|
|
|
// Add code to check if it's one of the keys we configured here on a real pda plugin..
|
|
|
|
|
|
|
|
event.evt = KEYRELEASE;
|
|
|
|
event.key = key;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case FocusIn:
|
|
|
|
XAutoRepeatOff(GSdsp);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case FocusOut:
|
|
|
|
XAutoRepeatOn(GSdsp);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
s32 _PADOpen(void *pDsp)
|
|
|
|
{
|
2011-04-09 08:17:34 +00:00
|
|
|
|
|
|
|
GtkScrolledWindow *win;
|
|
|
|
|
|
|
|
win = *(GtkScrolledWindow**) pDsp;
|
|
|
|
|
|
|
|
if (GTK_IS_WIDGET(win))
|
|
|
|
{
|
|
|
|
// Since we have a GtkScrolledWindow, for now we'll grab whatever display
|
|
|
|
// comes along instead. Later, we can fiddle with this, but I'm not sure the
|
|
|
|
// best way to get a Display* out of a GtkScrolledWindow. A GtkWindow I might
|
|
|
|
// be able to manage... --arcum42
|
|
|
|
GSdsp = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GSdsp = *(Display**)pDsp;
|
|
|
|
}
|
|
|
|
|
2009-05-23 05:15:03 +00:00
|
|
|
XAutoRepeatOff(GSdsp);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void _PADClose()
|
2010-04-25 00:31:27 +00:00
|
|
|
{
|
2009-05-23 05:15:03 +00:00
|
|
|
XAutoRepeatOn(GSdsp);
|
2009-05-23 06:11:48 +00:00
|
|
|
}
|