Fixed Mac OS X mouse button mapping
This commit is contained in:
parent
32e0d708fd
commit
5f89be0e63
|
@ -55,7 +55,7 @@ static jfieldID fid_dy;
|
||||||
static jfieldID fid_dwheel;
|
static jfieldID fid_dwheel;
|
||||||
static jfieldID fid_buttons;
|
static jfieldID fid_buttons;
|
||||||
|
|
||||||
static unsigned char button_states[NUM_BUTTONS];
|
static jbyte button_states[NUM_BUTTONS];
|
||||||
static bool buffer_enabled;
|
static bool buffer_enabled;
|
||||||
/*static int x_axis_index = NUM_BUTTONS;
|
/*static int x_axis_index = NUM_BUTTONS;
|
||||||
static int y_axis_index = NUM_BUTTONS + 1;
|
static int y_axis_index = NUM_BUTTONS + 1;
|
||||||
|
@ -67,7 +67,13 @@ static int last_dx;
|
||||||
static int last_dy;
|
static int last_dy;
|
||||||
static int last_dz;
|
static int last_dz;
|
||||||
|
|
||||||
static void handleButton(unsigned char button_index, unsigned char state) {
|
static void handleButton(unsigned char button_index, jbyte state) {
|
||||||
|
if (button_index >= NUM_BUTTONS) {
|
||||||
|
#ifdef _DEBUG
|
||||||
|
printf("Button index %d out of range [0..%d]\n", button_index, NUM_BUTTONS);
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
}
|
||||||
button_states[button_index] = state;
|
button_states[button_index] = state;
|
||||||
if (buffer_enabled) {
|
if (buffer_enabled) {
|
||||||
putEventElement(&event_queue, button_index);
|
putEventElement(&event_queue, button_index);
|
||||||
|
@ -122,7 +128,7 @@ static void handleButtonEvent(EventRef event, unsigned char state) {
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
handleButton(button, state);
|
handleButton(button - 1, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleMovedEvent(EventRef event) {
|
static void handleMovedEvent(EventRef event) {
|
||||||
|
@ -159,6 +165,7 @@ void handleMouseEvent(EventRef event) {
|
||||||
case kEventMouseUp:
|
case kEventMouseUp:
|
||||||
handleButtonEvent(event, 0);
|
handleButtonEvent(event, 0);
|
||||||
break;
|
break;
|
||||||
|
case kEventMouseDragged:
|
||||||
case kEventMouseMoved:
|
case kEventMouseMoved:
|
||||||
handleMovedEvent(event);
|
handleMovedEvent(event);
|
||||||
break;
|
break;
|
||||||
|
@ -253,8 +260,8 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nPoll(JNIEnv * env, jclass cla
|
||||||
env->SetStaticIntField(clazz, fid_dx, (jint)dx);
|
env->SetStaticIntField(clazz, fid_dx, (jint)dx);
|
||||||
env->SetStaticIntField(clazz, fid_dy, (jint)dy);
|
env->SetStaticIntField(clazz, fid_dy, (jint)dy);
|
||||||
env->SetStaticIntField(clazz, fid_dwheel, (jint)dz);
|
env->SetStaticIntField(clazz, fid_dwheel, (jint)dz);
|
||||||
jbooleanArray buttons_array = (jbooleanArray)env->GetStaticObjectField(clazz, fid_buttons);
|
jbyteArray buttons_array = (jbyteArray)env->GetStaticObjectField(clazz, fid_buttons);
|
||||||
env->SetBooleanArrayRegion(buttons_array, 0, NUM_BUTTONS, button_states);
|
env->SetByteArrayRegion(buttons_array, 0, NUM_BUTTONS, button_states);
|
||||||
resetDeltas();
|
resetDeltas();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -514,8 +514,8 @@ static void UpdateMouseFields(JNIEnv *env, jclass clsMouse) {
|
||||||
diMouseState.rgbButtons[i] = JNI_FALSE;
|
diMouseState.rgbButtons[i] = JNI_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
jbooleanArray mButtonsArray = (jbooleanArray) env->GetStaticObjectField(clsMouse, fidMButtons);
|
jbyteArray mButtonsArray = (jbyteArray) env->GetStaticObjectField(clsMouse, fidMButtons);
|
||||||
env->SetBooleanArrayRegion(mButtonsArray, 0, mButtoncount, diMouseState.rgbButtons);
|
env->SetByteArrayRegion(mButtonsArray, 0, mButtoncount, diMouseState.rgbButtons);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue