mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
git-svn-id: https://svn.macports.org/repository/macports/trunk/dports@98953 d073be05-634f-4543-b044-5fe20cf6d1d6
75 lines
2.9 KiB
Diff
75 lines
2.9 KiB
Diff
Index: src/gui/sdl_mapper.cpp
|
|
===================================================================
|
|
--- src/gui/sdl_mapper.cpp (Revision 3688)
|
|
+++ src/gui/sdl_mapper.cpp (Revision 3689)
|
|
@@ -2362,17 +2362,21 @@
|
|
if (!MAPPER_LoadBinds()) CreateDefaultBinds();
|
|
if (SDL_GetModState()&KMOD_CAPS) {
|
|
for (CBindList_it bit=caps_lock_event->bindlist.begin();bit!=caps_lock_event->bindlist.end();bit++) {
|
|
- (*bit)->ActivateBind(32767,true,true);
|
|
#if SDL_VERSION_ATLEAST(1, 2, 14)
|
|
+ (*bit)->ActivateBind(32767,true,false);
|
|
(*bit)->DeActivateBind(false);
|
|
+#else
|
|
+ (*bit)->ActivateBind(32767,true,true); //Skip the action itself as bios_keyboard.cpp handles the startup state.
|
|
#endif
|
|
}
|
|
}
|
|
if (SDL_GetModState()&KMOD_NUM) {
|
|
for (CBindList_it bit=num_lock_event->bindlist.begin();bit!=num_lock_event->bindlist.end();bit++) {
|
|
- (*bit)->ActivateBind(32767,true,true);
|
|
#if SDL_VERSION_ATLEAST(1, 2, 14)
|
|
+ (*bit)->ActivateBind(32767,true,false);
|
|
(*bit)->DeActivateBind(false);
|
|
+#else
|
|
+ (*bit)->ActivateBind(32767,true,true);
|
|
#endif
|
|
}
|
|
}
|
|
Index: src/gui/sdlmain.cpp
|
|
===================================================================
|
|
--- src/gui/sdlmain.cpp (Revision 3688)
|
|
+++ src/gui/sdlmain.cpp (Revision 3689)
|
|
@@ -1770,6 +1770,10 @@
|
|
|
|
/* Init SDL */
|
|
#if SDL_VERSION_ATLEAST(1, 2, 14)
|
|
+ /* Or debian/ubuntu with older libsdl version as they have done this themselves, but then differently.
|
|
+ * with this variable they will work correctly. I've only tested the 1.2.14 behaviour against the windows version
|
|
+ * of libsdl
|
|
+ */
|
|
putenv(const_cast<char*>("SDL_DISABLE_LOCK_KEYS=1"));
|
|
#endif
|
|
if ( SDL_Init( SDL_INIT_AUDIO|SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_CDROM
|
|
Index: src/ints/bios_keyboard.cpp
|
|
===================================================================
|
|
--- src/ints/bios_keyboard.cpp (Revision 3688)
|
|
+++ src/ints/bios_keyboard.cpp (Revision 3689)
|
|
@@ -33,6 +33,8 @@
|
|
* Define the following if this is the case */
|
|
#if SDL_VERSION_ATLEAST(1, 2, 14)
|
|
#define CAN_USE_LOCK 1
|
|
+/* For lower versions of SDL we also use a slight hack to get the startup states of numclock and capslock right.
|
|
+ * The proper way is in the mapper, but the repeating key is an unwanted side effect for lower versions of SDL */
|
|
#endif
|
|
|
|
static Bitu call_int16,call_irq1,call_irq6;
|
|
@@ -592,9 +594,14 @@
|
|
mem_writew(BIOS_KEYBOARD_BUFFER_TAIL,0x1e);
|
|
Bit8u flag1 = 0;
|
|
Bit8u leds = 16; /* Ack recieved */
|
|
-//MAPPER_Init takes care of this now ?
|
|
-// if(startup_state_capslock) { flag1|=0x40; leds|=0x04;}
|
|
-// if(startup_state_numlock){ flag1|=0x20; leds|=0x02;}
|
|
+
|
|
+#if SDL_VERSION_ATLEAST(1, 2, 14)
|
|
+//Nothing, mapper handles all.
|
|
+#else
|
|
+ if (startup_state_capslock) { flag1|=0x40; leds|=0x04;}
|
|
+ if (startup_state_numlock) { flag1|=0x20; leds|=0x02;}
|
|
+#endif
|
|
+
|
|
mem_writeb(BIOS_KEYBOARD_FLAGS1,flag1);
|
|
mem_writeb(BIOS_KEYBOARD_FLAGS2,0);
|
|
mem_writeb(BIOS_KEYBOARD_FLAGS3,16); /* Enhanced keyboard installed */
|