Linux Joystick Mapper Wiki
Status: Beta
Brought to you by:
alexandrehardy
#HAT #7 0 1 #6 15 2 #5 4 3 var speed; var speed_setting; var base; global zero_throttle; global one_third_throttle; global two_third_throttle; global full_throttle; global speed_diff; global lazer_recharge; global shield_recharge; global lazer_direct; global shield_direct; global shield_select; global weapon; global sfoils; global firing_set; var shield_position; var old_shield_position; var sfoil_position; var old_sfoil_position; var lookdir; global oldlookdir; global looking; if ((firstscan == 1) || (js1.b[25])) { speed = 0; zero_throttle = 0; one_third_throttle = 0; two_third_throttle = 0; full_throttle = 0; speed_diff = 0; lookdir = 0; oldlookdir = 0; looking = 0; lazer_recharge = 0; shield_recharge = 0; lazer_direct = 0; shield_direct = 0; shield_select = 0; shield_position = 0; old_shield_position = 0; sfoil_position = 0; old_sfoil_position = 0; weapon = 0; firing_set = 0; } # throttle control speed_setting = (js1.a[2] + 32767) / 2000; if (speed_setting > 32) speed_setting = 32; if (speed_setting < 0) speed_setting = 0; speed_setting = 32 - speed_setting; if (speed != speed_setting) { base = speed; if (speed_setting == 0) { zero_throttle = 1; full_throttle = 0; one_third_throttle = 0; two_third_throttle = 0; base = 0; speed_diff = 0; } else if (speed_setting == 32) { full_throttle = 1; zero_throttle = 0; one_third_throttle = 0; two_third_throttle = 0; base = 32; speed_diff = 0; } if ((speed < 11) && (speed_setting >= 11)) { one_third_throttle = 1; zero_throttle = 0; full_throttle = 0; two_third_throttle = 0; base = 11; speed_diff = 0; } if ((speed < 21) && (speed_setting >= 21)) { two_third_throttle = 1; zero_throttle = 0; full_throttle = 0; one_third_throttle = 0; base = 21; speed_diff = 0; } if ((speed_setting < 21) && (speed >= 21)) { two_third_throttle = 1; zero_throttle = 0; full_throttle = 0; one_third_throttle = 0; base = 21; speed_diff = 0; } if ((speed_setting < 11) && (speed >= 11)) { one_third_throttle = 1; zero_throttle = 0; full_throttle = 0; two_third_throttle = 0; base = 11; speed_diff = 0; } speed_diff = speed_diff + (speed_setting - base); speed = speed_setting; } if (zero_throttle) { thread kbd { press("\"); delay(1); release("\"); delay(1); zero_throttle = 0; } } if (one_third_throttle) { thread kbd { press("["); delay(1); release("["); delay(1); one_third_throttle = 0; } } if (two_third_throttle) { thread kbd { press("]"); delay(1); release("]"); delay(1); two_third_throttle = 0; } } if (full_throttle) { thread kbd { #press("a"); press("backspace"); delay(1); #release("a"); release("backspace"); delay(1); full_throttle = 0; } } if (speed_diff > 0) { thread kbd { press("equal"); delay(1); release("equal"); delay(1); speed_diff = speed_diff - 1; } } if (speed_diff < 0) { thread kbd { press("minus"); delay(1); release("minus"); delay(1); speed_diff = speed_diff + 1; } } # looking around if (js0.b[10] && js0.b[11]) lookdir = 9; else if (js0.b[10] && js0.b[13]) lookdir = 7; else if (js0.b[12] && js0.b[11]) lookdir = 3; else if (js0.b[12] && js0.b[13]) lookdir = 1; else if (js0.b[10]) lookdir = 8; else if (js0.b[12]) lookdir = 2; else if (js0.b[11]) lookdir = 6; else if (js0.b[13]) lookdir = 4; else lookdir = 8; if ((oldlookdir != lookdir) && (!looking)) { looking = lookdir; } if (looking) { thread kbd { if (looking == 1) press("kp1"); else if (looking == 2) press("kp2"); else if (looking == 3) press("kp3"); else if (looking == 4) press("kp4"); else if (looking == 5) press("kp5"); else if (looking == 6) press("kp6"); else if (looking == 7) press("kp7"); else if (looking == 8) press("kp8"); else if (looking == 9) press("kp9"); delay(1); if (looking == 1) release("kp1"); else if (looking == 2) release("kp2"); else if (looking == 3) release("kp3"); else if (looking == 4) release("kp4"); else if (looking == 5) release("kp5"); else if (looking == 6) release("kp6"); else if (looking == 7) release("kp7"); else if (looking == 8) release("kp8"); else if (looking == 9) release("kp9"); delay(1); oldlookdir = looking; looking = 0; } } if (js1.b[10]) { lazer_recharge = 1; } if (js1.b[11]) { shield_recharge = 1; } if (js0.b[6]) { lazer_direct = 1; } if (js0.b[8]) { shield_direct = 1; } if (js0.b[18]) { weapon = 1; } old_shield_position = shield_position; if (js1.b[26]) { shield_position = 2; } else if (js1.b[27]) { shield_position = 1; } else { shield_position = 0; } if (shield_position > old_shield_position) { shield_select = shield_select + (shield_position - old_shield_position); } if (shield_position < old_shield_position) { shield_select = shield_select + (shield_position + 3 - old_shield_position); } if (js0.b[2]) { firing_set = 1; } if (lazer_recharge) { thread kbd { press("f9"); delay(1); release("f9"); wait(!js1.b[10]); lazer_recharge = 0; } } if (shield_recharge) { thread kbd { press("f10"); delay(1); release("f10"); wait(!js1.b[11]); shield_recharge = 0; } } if (shield_select) { thread kbd { press("s"); delay(1); release("s"); delay(1); shield_select = shield_select - 1; } } if (lazer_direct) { thread kbd { press(";"); delay(1); release(";"); delay(1); wait(!js0.b[6]); lazer_direct = 0; } } if (shield_direct) { thread kbd { press("'"); delay(1); release("'"); delay(1); wait(!js0.b[8]); shield_direct = 0; } } if (weapon) { thread kbd { press("w"); delay(1); release("w"); wait(!js0.b[18]); weapon = 0; } } if (firing_set) { thread kbd { press("x"); delay(1); release("x"); wait(!js0.b[2]); firing_set = 0; } }