Added support for external mouse in Samsung DeX mode
relative mode doesn't work, but absolute coordinates are functional
This commit is contained in:
parent
d8cdfc2a4b
commit
7d843b752b
7 changed files with 56 additions and 3 deletions
|
@ -215,6 +215,7 @@ static jmethodID midSetOrientation;
|
|||
static jmethodID midGetContext;
|
||||
static jmethodID midIsAndroidTV;
|
||||
static jmethodID midIsChromebook;
|
||||
static jmethodID midIsDeXMode;
|
||||
static jmethodID midInputGetInputDeviceIds;
|
||||
static jmethodID midSendMessage;
|
||||
static jmethodID midShowTextInput;
|
||||
|
@ -320,6 +321,8 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv* mEnv, jclass c
|
|||
"isAndroidTV","()Z");
|
||||
midIsChromebook = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
|
||||
"isChromebook", "()Z");
|
||||
midIsDeXMode = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
|
||||
"isDeXMode", "()Z");
|
||||
midInputGetInputDeviceIds = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
|
||||
"inputGetInputDeviceIds", "(I)[I");
|
||||
midSendMessage = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
|
||||
|
@ -354,7 +357,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv* mEnv, jclass c
|
|||
!midClipboardSetText || !midClipboardGetText || !midClipboardHasText ||
|
||||
!midOpenAPKExpansionInputStream || !midGetManifestEnvironmentVariables || !midGetDisplayDPI ||
|
||||
!midCreateCustomCursor || !midSetCustomCursor || !midSetSystemCursor || !midSupportsRelativeMouse || !midSetRelativeMouseEnabled ||
|
||||
!midIsChromebook) {
|
||||
!midIsChromebook || !midIsDeXMode) {
|
||||
__android_log_print(ANDROID_LOG_WARN, "SDL", "Missing some Java callbacks, do you have the latest version of SDLActivity.java?");
|
||||
}
|
||||
|
||||
|
@ -2036,6 +2039,12 @@ SDL_bool SDL_IsChromebook(void)
|
|||
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsChromebook);
|
||||
}
|
||||
|
||||
SDL_bool SDL_IsDeXMode(void)
|
||||
{
|
||||
JNIEnv *env = Android_JNI_GetEnv();
|
||||
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsDeXMode);
|
||||
}
|
||||
|
||||
const char * SDL_AndroidGetInternalStoragePath(void)
|
||||
{
|
||||
static char *s_AndroidInternalFilesPath = NULL;
|
||||
|
|
|
@ -673,3 +673,4 @@
|
|||
#define SDL_LinuxSetThreadPriority SDL_LinuxSetThreadPriority_REAL
|
||||
#define SDL_HasAVX512F SDL_HasAVX512F_REAL
|
||||
#define SDL_IsChromebook SDL_IsChromebook_REAL
|
||||
#define SDL_IsDeXMode SDL_IsDeXMode_REAL
|
||||
|
|
|
@ -714,4 +714,5 @@ SDL_DYNAPI_PROC(int,SDL_LinuxSetThreadPriority,(Sint64 a, int b),(a,b),return)
|
|||
SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX512F,(void),(),return)
|
||||
#ifdef __ANDROID__
|
||||
SDL_DYNAPI_PROC(SDL_bool,SDL_IsChromebook,(void),(),return)
|
||||
SDL_DYNAPI_PROC(SDL_bool,SDL_IsDeXMode,(void),(),return)
|
||||
#endif
|
||||
|
|
|
@ -721,6 +721,9 @@ SDL_SetRelativeMouseMode(SDL_bool enabled)
|
|||
} else if (mouse->SetRelativeMouseMode(enabled) < 0) {
|
||||
if (enabled) {
|
||||
/* Fall back to warp mode if native relative mode failed */
|
||||
if (!mouse->WarpMouse) {
|
||||
return SDL_SetError("No relative mode implementation available");
|
||||
}
|
||||
mouse->relative_mode_warp = SDL_TRUE;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue