Two-finger scroll with mouse wheel, changed right mouse click a bit
This commit is contained in:
@@ -166,10 +166,10 @@ AppTouchscreenKeyboardKeysAmount=0
|
|||||||
AppTouchscreenKeyboardKeysAmountAutoFire=0
|
AppTouchscreenKeyboardKeysAmountAutoFire=0
|
||||||
|
|
||||||
# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
|
# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
|
||||||
RedefinedKeysScreenKb="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
RedefinedKeysScreenKb="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS UNDO HELP"
|
||||||
|
|
||||||
# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
|
# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
|
||||||
RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE PLUS MINUS UNDO KEYBOARD"
|
||||||
|
|
||||||
# On-screen keys theme
|
# On-screen keys theme
|
||||||
# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)
|
# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)
|
||||||
|
|||||||
@@ -97,12 +97,15 @@ SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_7)),
|
|||||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_8)),
|
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_8)),
|
||||||
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_9))
|
SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_SCREENKB_KEYCODE_9))
|
||||||
};
|
};
|
||||||
static int multitouchGestureKeyPressed[MAX_MULTITOUCH_GESTURES] = { 0, 0, 0, 0 };
|
|
||||||
static int multitouchGestureSensitivity = 0;
|
static int multitouchGestureSensitivity = 0;
|
||||||
static int multitouchGestureDist = -1;
|
static int multitouchGestureDist = -1;
|
||||||
static int multitouchGestureAngle = 0;
|
static int multitouchGestureAngle = 0;
|
||||||
static int multitouchGestureX = -1;
|
static int multitouchGestureX = -1;
|
||||||
static int multitouchGestureY = -1;
|
static int multitouchGestureY = -1;
|
||||||
|
static int multitouchGestureMiddleX = -1;
|
||||||
|
static int multitouchGestureMiddleY = -1;
|
||||||
|
static int multitouchGestureHappened = 0;
|
||||||
|
enum { MULTITOUCH_MOUSE_WHEEL_DIST = 20 };
|
||||||
int SDL_ANDROID_TouchscreenCalibrationWidth = 480;
|
int SDL_ANDROID_TouchscreenCalibrationWidth = 480;
|
||||||
int SDL_ANDROID_TouchscreenCalibrationHeight = 320;
|
int SDL_ANDROID_TouchscreenCalibrationHeight = 320;
|
||||||
int SDL_ANDROID_TouchscreenCalibrationX = 0;
|
int SDL_ANDROID_TouchscreenCalibrationX = 0;
|
||||||
@@ -290,14 +293,8 @@ static void ProcessMultitouchGesture( int x, int y, int action, int pointerId )
|
|||||||
multitouchGestureX = -1;
|
multitouchGestureX = -1;
|
||||||
multitouchGestureY = -1;
|
multitouchGestureY = -1;
|
||||||
multitouchGestureDist = -1;
|
multitouchGestureDist = -1;
|
||||||
for(i = 0; i < MAX_MULTITOUCH_GESTURES; i++)
|
multitouchGestureMiddleX = -1;
|
||||||
{
|
multitouchGestureMiddleY = -1;
|
||||||
if( multitouchGestureKeyPressed[i] )
|
|
||||||
{
|
|
||||||
multitouchGestureKeyPressed[i] = 0;
|
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[i], 0 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( !hardwareMouseDetected )
|
else if( !hardwareMouseDetected )
|
||||||
{
|
{
|
||||||
@@ -310,35 +307,32 @@ static void ProcessMultitouchGesture( int x, int y, int action, int pointerId )
|
|||||||
{
|
{
|
||||||
int dist = abs( x - multitouchGestureX ) + abs( y - multitouchGestureY );
|
int dist = abs( x - multitouchGestureX ) + abs( y - multitouchGestureY );
|
||||||
int angle = atan2i( y - multitouchGestureY, x - multitouchGestureX );
|
int angle = atan2i( y - multitouchGestureY, x - multitouchGestureX );
|
||||||
|
int middleX = (x + multitouchGestureX) / 2;
|
||||||
|
int middleY = (y + multitouchGestureY) / 2;
|
||||||
if( multitouchGestureDist < 0 )
|
if( multitouchGestureDist < 0 )
|
||||||
{
|
{
|
||||||
multitouchGestureDist = dist;
|
multitouchGestureDist = dist;
|
||||||
multitouchGestureAngle = angle;
|
multitouchGestureAngle = angle;
|
||||||
|
multitouchGestureMiddleX = middleX;
|
||||||
|
multitouchGestureMiddleY = middleY;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int distMaxDiff = SDL_ANDROID_sFakeWindowHeight / ( 1 + (1 + multitouchGestureSensitivity) * 2 );
|
int distMaxDiff = SDL_ANDROID_sFakeWindowHeight / ( 1 + (1 + multitouchGestureSensitivity) * 2 );
|
||||||
int angleMaxDiff = atan2i_PI / 2 / ( 1 + (1 + multitouchGestureSensitivity) * 2 );
|
int angleMaxDiff = atan2i_PI * 2 / 3 / ( 1 + (1 + multitouchGestureSensitivity) * 2 );
|
||||||
|
int wheelThreshold = SDL_ANDROID_sFakeWindowHeight / MULTITOUCH_MOUSE_WHEEL_DIST;
|
||||||
if( dist - multitouchGestureDist > distMaxDiff )
|
if( dist - multitouchGestureDist > distMaxDiff )
|
||||||
{
|
{
|
||||||
multitouchGestureKeyPressed[0] = 1;
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureDist += distMaxDiff;
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[0], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[0], 0 );
|
||||||
}
|
|
||||||
else
|
|
||||||
if( multitouchGestureKeyPressed[0] )
|
|
||||||
{
|
|
||||||
multitouchGestureKeyPressed[0] = 0;
|
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[0], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[0], 0 );
|
||||||
}
|
}
|
||||||
if( multitouchGestureDist - dist > distMaxDiff )
|
if( multitouchGestureDist - dist > distMaxDiff )
|
||||||
{
|
{
|
||||||
multitouchGestureKeyPressed[1] = 1;
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureDist -= distMaxDiff;
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[1], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[1], 0 );
|
||||||
}
|
|
||||||
else
|
|
||||||
if( multitouchGestureKeyPressed[1] )
|
|
||||||
{
|
|
||||||
multitouchGestureKeyPressed[1] = 0;
|
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[1], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[1], 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,26 +345,48 @@ static void ProcessMultitouchGesture( int x, int y, int action, int pointerId )
|
|||||||
|
|
||||||
if( angleDiff < -angleMaxDiff )
|
if( angleDiff < -angleMaxDiff )
|
||||||
{
|
{
|
||||||
multitouchGestureKeyPressed[2] = 1;
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureAngle = angle;
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[2], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[2], 0 );
|
||||||
}
|
|
||||||
else
|
|
||||||
if( multitouchGestureKeyPressed[2] )
|
|
||||||
{
|
|
||||||
multitouchGestureKeyPressed[2] = 0;
|
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[2], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[2], 0 );
|
||||||
}
|
}
|
||||||
if( angleDiff > angleMaxDiff )
|
if( angleDiff > angleMaxDiff )
|
||||||
{
|
{
|
||||||
multitouchGestureKeyPressed[3] = 1;
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureAngle = angle;
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[3], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, multitouchGestureKeycode[3], 0 );
|
||||||
}
|
|
||||||
else
|
|
||||||
if( multitouchGestureKeyPressed[3] )
|
|
||||||
{
|
|
||||||
multitouchGestureKeyPressed[3] = 0;
|
|
||||||
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[3], 0 );
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, multitouchGestureKeycode[3], 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//__android_log_print(ANDROID_LOG_INFO, "libSDL", "middleY %d multitouchGestureMiddleY %d threshold %d", middleY, multitouchGestureMiddleY, wheelThreshold);
|
||||||
|
if( middleX - multitouchGestureMiddleX > wheelThreshold )
|
||||||
|
{
|
||||||
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureMiddleX += wheelThreshold;
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_X1 );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_X1 );
|
||||||
|
}
|
||||||
|
if( multitouchGestureMiddleX - middleX > wheelThreshold )
|
||||||
|
{
|
||||||
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureMiddleX -= wheelThreshold;
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_X2 );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_X2 );
|
||||||
|
}
|
||||||
|
if( middleY - multitouchGestureMiddleY > wheelThreshold )
|
||||||
|
{
|
||||||
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureMiddleY += wheelThreshold;
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_WHEELUP );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_WHEELUP );
|
||||||
|
}
|
||||||
|
if( multitouchGestureMiddleY - middleY > wheelThreshold )
|
||||||
|
{
|
||||||
|
multitouchGestureHappened = 1;
|
||||||
|
multitouchGestureMiddleY -= wheelThreshold;
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_WHEELDOWN );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_WHEELDOWN );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -627,7 +643,15 @@ static void ProcessMouseMultitouch( int action, int pointerId )
|
|||||||
else if( rightClickMethod == RIGHT_CLICK_WITH_MULTITOUCH )
|
else if( rightClickMethod == RIGHT_CLICK_WITH_MULTITOUCH )
|
||||||
{
|
{
|
||||||
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_LEFT );
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_LEFT );
|
||||||
SDL_ANDROID_MainThreadPushMouseButton( (action == MOUSE_DOWN) ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT );
|
if( action == MOUSE_UP )
|
||||||
|
{
|
||||||
|
if( !multitouchGestureHappened )
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_RIGHT );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_RIGHT );
|
||||||
|
}
|
||||||
|
multitouchGestureHappened = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user