* test the reading of the configuration file (will be safer with the previous configuration format).
* bump the version


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4748 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gregory.hainaut@gmail.com 2011-06-17 20:44:46 +00:00
parent f60012a209
commit d726be3364
4 changed files with 29 additions and 26 deletions

View File

@ -63,7 +63,7 @@ string KeyName(int pad, int key, int keysym)
case PAD_AXIS: case PAD_AXIS:
{ {
if (key_to_axis_type(pad,key)) if (key_to_axis_type(pad,key))
sprintf(&tmp[0], "JAxis %d Full", key_to_axis(pad, key), key_to_axis_sign(pad, key) ? "-" : "+"); sprintf(&tmp[0], "JAxis %d Full", key_to_axis(pad, key));
else else
sprintf(&tmp[0], "JAxis %d Half%s", key_to_axis(pad, key), key_to_axis_sign(pad, key) ? "-" : "+"); sprintf(&tmp[0], "JAxis %d Half%s", key_to_axis(pad, key), key_to_axis_sign(pad, key) ? "-" : "+");
break; break;
@ -169,12 +169,17 @@ void LoadConfig()
return; return;
} }
fscanf(f, "log = %d\n", &conf->log); u32 value;
fscanf(f, "options = %d\n", &conf->options); if (fscanf(f, "log = %d\n", &value) == 0) return;
fscanf(f, "mouse_sensibility = %d\n", &conf->sensibility); conf->log = value;
fscanf(f, "joy_pad_map = %d\n", &conf->joyid_map); if (fscanf(f, "options = %d\n", &value) == 0) return;
for (int pad = 0; pad < 2; pad++) conf->options = value;
if (fscanf(f, "mouse_sensibility = %d\n", &value) == 0) return;
conf->sensibility = value;
if (fscanf(f, "joy_pad_map = %d\n", &value) == 0) return;
conf->joyid_map = value;
for (int pad = 0; pad < 2; pad++)
{ {
for (int key = 0; key < MAX_KEYS; key++) for (int key = 0; key < MAX_KEYS; key++)
{ {

View File

@ -281,17 +281,12 @@ bool JoystickInfo::PollButtons(u32 &pkey)
{ {
continue; continue;
} }
// Pressure sensitive button are detected as both button (digital) and axe (analog). So better
// drop the button to emulate the pressure sensiblity of the ds2 :) -- Gregory
for (int j = 0; j < GetNumAxes(); ++j) {
int value = SDL_JoystickGetAxis(GetJoy(), j);
int old_value = GetAxisState(j);
bool full_axis = (old_value < -0x3FFF) ? true : false;
if (value != old_value && ((full_axis && value > -0x6FFF ) || (!full_axis && abs(value) > old_value))) {
return false;
}
} // Pressure sensitive button are detected as both button (digital) and axes (analog). So better
// drop the button to emulate the pressure sensiblity of the ds2 :) -- Gregory
u32 pkey_dummy;
if (PollAxes(pkey_dummy))
return false;
pkey = button_to_key(i); pkey = button_to_key(i);
return true; return true;
@ -315,19 +310,23 @@ bool JoystickInfo::PollAxes(u32 &pkey)
// Half+: 0 (release) -> 32768 // Half+: 0 (release) -> 32768
// Half-: 0 (release) -> -32768 // Half-: 0 (release) -> -32768
// Full (like dualshock 3): -32768 (release) ->32768 // Full (like dualshock 3): -32768 (release) ->32768
bool full_axis = (old_value < -0x2FFF) ? true : false; const s32 full_axis_ceil = -0x6FFF;
const s32 half_axis_ceil = 0x1FFF;
if ((!full_axis && abs(value) <= 0x1FFF) // Normally, old_value contains the release state so it can be used to detect the types of axis.
|| (full_axis && value <= -0x6FFF)) // we don't want this bool is_full_axis = (old_value < full_axis_ceil) ? true : false;
if ((!is_full_axis && abs(value) <= half_axis_ceil)
|| (is_full_axis && value <= full_axis_ceil)) // we don't want this
{ {
continue; continue;
} }
if ((!full_axis && abs(value) > 0x3FFF) if ((!is_full_axis && abs(value) > half_axis_ceil)
|| (full_axis && value > -0x6FFF)) || (is_full_axis && value > full_axis_ceil))
{ {
bool sign = (value < 0); bool sign = (value < 0);
pkey = axis_to_key(full_axis, sign, i); pkey = axis_to_key(is_full_axis, sign, i);
return true; return true;
} }

View File

@ -35,7 +35,7 @@ class JoystickInfo
{ {
public: public:
JoystickInfo() : devname(""), _id(-1), numbuttons(0), numaxes(0), numhats(0), axisrange(0x7fff), JoystickInfo() : devname(""), _id(-1), numbuttons(0), numaxes(0), numhats(0), axisrange(0x7fff),
deadzone(2000), pad(-1), joy(NULL) { deadzone(1500), pad(-1), joy(NULL) {
vbuttonstate.clear(); vbuttonstate.clear();
vaxisstate.clear(); vaxisstate.clear();
vhatstate.clear(); vhatstate.clear();
@ -94,7 +94,7 @@ class JoystickInfo
return pad; return pad;
} }
int GetDeadzone(/*int axis*/) int GetDeadzone()
{ {
return deadzone; return deadzone;
} }
@ -141,7 +141,6 @@ class JoystickInfo
} }
int GetAxisFromKey(int pad, int index); int GetAxisFromKey(int pad, int index);
private: private:
string devname; // pretty device name string devname; // pretty device name
int _id; int _id;
int numbuttons, numaxes, numhats; int numbuttons, numaxes, numhats;

View File

@ -47,7 +47,7 @@ std::string s_strLogPath("logs/");
bool toggleAutoRepeat = true; bool toggleAutoRepeat = true;
const u32 version = PS2E_PAD_VERSION; const u32 version = PS2E_PAD_VERSION;
const u32 revision = 0; const u32 revision = 1;
const u32 build = 1; // increase that with each version const u32 build = 1; // increase that with each version
int PadEnum[2][2] = {{0, 2}, {1, 3}}; int PadEnum[2][2] = {{0, 2}, {1, 3}};