rpms/dosbox/F-10 dosbox-0.72-evdev.patch, NONE, 1.1 dosbox.spec, 1.31, 1.32
Lubomir Rintel
lkundrak at fedoraproject.org
Sun Mar 8 22:09:12 UTC 2009
Author: lkundrak
Update of /cvs/pkgs/rpms/dosbox/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6671
Modified Files:
dosbox.spec
Added Files:
dosbox-0.72-evdev.patch
Log Message:
* Sun Mar 08 2009 Lubomir Rintel <lkundrak at v3.sk> - 0.72-5.1
- Fix key mapping with evdev driver (#473875)
dosbox-0.72-evdev.patch:
--- NEW FILE dosbox-0.72-evdev.patch ---
Fix support for evdev (#473875)
Following upstream commits:
Author: c2woody <c2woody>
Date: Wed Dec 31 16:33:46 2008 +0000
add evdev-kbd compatible scancode remapping (disabled atm)
Author: qbix79 <qbix79>
Date: Thu Jan 22 13:14:33 2009 +0000
Add experimental evdev detection.
Author: qbix79 <qbix79>
Date: Thu Jan 22 21:44:14 2009 +0000
counting is hard
diff -up dosbox-0.72/src/gui/sdl_mapper.cpp.evdev dosbox-0.72/src/gui/sdl_mapper.cpp
--- dosbox-0.72/src/gui/sdl_mapper.cpp.evdev 2007-08-17 14:49:56.000000000 -0400
+++ dosbox-0.72/src/gui/sdl_mapper.cpp 2009-03-08 21:41:46.000000000 -0400
@@ -1614,7 +1614,7 @@ static struct {
static void change_action_text(const char* text,Bit8u col) {
- bind_but.action->Change(text);
+ bind_but.action->Change(text,"");
bind_but.action->SetColor(col);
}
@@ -2172,7 +2172,7 @@ static void CreateBindGroups(void) {
if (mapper.sticks.num) SDL_JoystickEventState(SDL_DISABLE);
#else
// enable joystick event handling
- if (numsticks) SDL_JoystickEventState(SDL_ENABLE);
+ if (mapper.sticks.num) SDL_JoystickEventState(SDL_ENABLE);
else return;
#endif
Bit8u joyno=0;
@@ -2276,6 +2276,11 @@ void MAPPER_Init(void) {
if (!MAPPER_LoadBinds()) CreateDefaultBinds();
}
+//Somehow including them at the top conflicts with something in setup.h
+#ifdef LINUX
+#include "SDL_syswm.h"
+#include <X11/XKBlib.h>
+#endif
void MAPPER_StartUp(Section * sec) {
Section_prop * section=static_cast<Section_prop *>(sec);
mapper.sticks.num=0;
@@ -2292,7 +2297,7 @@ void MAPPER_StartUp(Section * sec) {
virtual_joysticks[0].axis_pos[i]=0;
}
- usescancodes=false;
+ usescancodes = false;
if (section->Get_bool("usescancodes")) {
usescancodes=true;
@@ -2319,23 +2324,63 @@ void MAPPER_StartUp(Section * sec) {
sdlkey_map[0x5E]=SDLK_RALT;
sdlkey_map[0x40]=SDLK_KP5;
sdlkey_map[0x41]=SDLK_KP6;
-#elif !defined (WIN32) /* => Linux */
- sdlkey_map[0x5a]=SDLK_UP;
- sdlkey_map[0x60]=SDLK_DOWN;
- sdlkey_map[0x5c]=SDLK_LEFT;
- sdlkey_map[0x5e]=SDLK_RIGHT;
- sdlkey_map[0x59]=SDLK_HOME;
- sdlkey_map[0x5f]=SDLK_END;
- sdlkey_map[0x5b]=SDLK_PAGEUP;
- sdlkey_map[0x61]=SDLK_PAGEDOWN;
- sdlkey_map[0x62]=SDLK_INSERT;
- sdlkey_map[0x63]=SDLK_DELETE;
- sdlkey_map[0x68]=SDLK_KP_DIVIDE;
- sdlkey_map[0x64]=SDLK_KP_ENTER;
- sdlkey_map[0x65]=SDLK_RCTRL;
- sdlkey_map[0x66]=SDLK_PAUSE;
- sdlkey_map[0x67]=SDLK_PRINT;
- sdlkey_map[0x69]=SDLK_RALT;
+#elif !defined (WIN32) /* => Linux & BSDs */
+ //bool evdev_input = false;
+ bool evdev_input = true;
+#ifdef LINUX
+ SDL_SysWMinfo info;
+ SDL_VERSION(&info.version);
+ if (SDL_GetWMInfo(&info)) {
+ XkbDescPtr desc = NULL;
+ if((desc = XkbGetMap(info.info.x11.display,XkbAllComponentsMask,XkbUseCoreKbd))) {
+ if(XkbGetNames(info.info.x11.display,XkbAllNamesMask,desc) == 0) {
+ const char* keycodes = XGetAtomName(info.info.x11.display, desc->names->keycodes);
+// const char* geom = XGetAtomName(info.info.x11.display, desc->names->geometry);
+ if(keycodes) {
+ LOG(LOG_MISC,LOG_NORMAL)("keyboard type %s",keycodes);
+ if (strncmp(keycodes,"evdev",5) == 0) evdev_input = true;
+ }
+ XkbFreeNames(desc,XkbAllNamesMask,True);
+ }
+ XkbFreeClientMap(desc,0,True);
+ }
+ }
+#endif
+ if (evdev_input) {
+ sdlkey_map[0x67]=SDLK_UP;
+ sdlkey_map[0x6c]=SDLK_DOWN;
+ sdlkey_map[0x69]=SDLK_LEFT;
+ sdlkey_map[0x6a]=SDLK_RIGHT;
+ sdlkey_map[0x66]=SDLK_HOME;
+ sdlkey_map[0x6b]=SDLK_END;
+ sdlkey_map[0x68]=SDLK_PAGEUP;
+ sdlkey_map[0x6d]=SDLK_PAGEDOWN;
+ sdlkey_map[0x6e]=SDLK_INSERT;
+ sdlkey_map[0x6f]=SDLK_DELETE;
+ sdlkey_map[0x62]=SDLK_KP_DIVIDE;
+ sdlkey_map[0x60]=SDLK_KP_ENTER;
+ sdlkey_map[0x61]=SDLK_RCTRL;
+ sdlkey_map[0x77]=SDLK_PAUSE;
+ sdlkey_map[0x63]=SDLK_PRINT;
+ sdlkey_map[0x64]=SDLK_RALT;
+ } else {
+ sdlkey_map[0x5a]=SDLK_UP;
+ sdlkey_map[0x60]=SDLK_DOWN;
+ sdlkey_map[0x5c]=SDLK_LEFT;
+ sdlkey_map[0x5e]=SDLK_RIGHT;
+ sdlkey_map[0x59]=SDLK_HOME;
+ sdlkey_map[0x5f]=SDLK_END;
+ sdlkey_map[0x5b]=SDLK_PAGEUP;
+ sdlkey_map[0x61]=SDLK_PAGEDOWN;
+ sdlkey_map[0x62]=SDLK_INSERT;
+ sdlkey_map[0x63]=SDLK_DELETE;
+ sdlkey_map[0x68]=SDLK_KP_DIVIDE;
+ sdlkey_map[0x64]=SDLK_KP_ENTER;
+ sdlkey_map[0x65]=SDLK_RCTRL;
+ sdlkey_map[0x66]=SDLK_PAUSE;
+ sdlkey_map[0x67]=SDLK_PRINT;
+ sdlkey_map[0x69]=SDLK_RALT;
+ }
#else
sdlkey_map[0xc8]=SDLK_UP;
sdlkey_map[0xd0]=SDLK_DOWN;
Index: dosbox.spec
===================================================================
RCS file: /cvs/pkgs/rpms/dosbox/F-10/dosbox.spec,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- dosbox.spec 21 Sep 2008 08:27:20 -0000 1.31
+++ dosbox.spec 8 Mar 2009 22:08:42 -0000 1.32
@@ -1,6 +1,6 @@
Name: dosbox
Version: 0.72
-Release: 5%{?dist}
+Release: 5%{?dist}.1
Summary: x86/DOS emulator with sound and graphics
@@ -11,6 +11,7 @@
Source1: dosbox.desktop
Source2: dosbox.png
Patch0: dosbox-gcc43.patch
+Patch1: dosbox-0.72-evdev.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: libpng-devel
@@ -38,6 +39,7 @@
%prep
%setup -q
%patch0 -p1
+%patch1 -p1 -b .evdev
%build
%configure --enable-core-inline
@@ -75,6 +77,9 @@
%changelog
+* Sun Mar 08 2009 Lubomir Rintel <lkundrak at v3.sk> - 0.72-5.1
+- Fix key mapping with evdev driver (#473875)
+
* Sun Sep 21 2008 Ville Skyttä <ville.skytta at iki.fi> - 0.72-5
- Fix Patch0:/%%patch mismatch.
More information about the scm-commits
mailing list