Since xpadder doesn't allow (actually) a custom curve for mouse speed emulation, i solved (partially) my problem with 2 sets. One with a base mouse speed and another with a lower speed for precise aiming (in war thunder).
To do this with an xbox360 pad and i click RB to switch from the set "base" to the set "fine aim". Anyway sometimes i'm not sure, and i would like to receive a feedback. Since the game doesn't allow a screen popup, can i play a (custom) sound when i click a button? I would like to register sounds like "Fine aim!" or "Normal aim" with some programs and then use these as feedback in xpadder.
Best solution so far. Since xpadder should focus on problems about emulation of kb and mouse (and not other) let use other programs (well-sized in term of resource usage and effort) to do the rest. We can use autoit (since xpadder is only for Windows)
Download autoit, create a new text file with the following code and rename it's extension to .au3
Code: Select all
#include <Misc.au3>
#comments-start
Program to give a feedback for xpadder set selectors. Xpadder is a program focused on keyboard and
mouse emulation and should optimize that features, not others. So it doesn not give any feedback for set selectors and it is ok.
Anyway, at least now in 2013, there are tons of scripting languages that can be combined with xpadder
to produce a powerful suite of gaming tools. So let xpadder focus on emulation and do other things with other languages
Then we simply associate a key combo to a set selector and listen for it and then produce the right feedback
(in this case, a beep)
#comments-end
dim const $sleepDuration_int = 50; in milliseconds
dim const $maxSleepCountsForUsefulCombo_int = 2
dim const $ctrl = 11
dim const $shift = 10
dim const $alt = 12
dim const $one = 31
dim const $two = 32
dim $keyCombo_arr[40] ;just large enought to capture the keys
resetKeyComboArr()
dim $sleepCountsPassedFromLastUsefulkey_int = 0 ; count sleep passed from the useful keypress, else is not a combination
dim $comboStarted_bool=0
Local $hDLL = DllOpen("user32.dll")
While 1
If _IsPressed(String($ctrl), $hDLL) Then
;set or overwrite
$keyCombo_arr[$ctrl] = 1
$comboStarted_bool = 1
endif
if _IsPressed(String($shift), $hDLL) Then
$keyCombo_arr[$shift] = 1
$comboStarted_bool = 1
EndIf
if _IsPressed(String($alt), $hDLL) Then
$keyCombo_arr[$alt] = 1
$comboStarted_bool = 1
EndIf
if _IsPressed(String($one), $hDLL) Then
$keyCombo_arr[$one] = 1
$comboStarted_bool = 1
EndIf
if _IsPressed(String($two), $hDLL) Then
$keyCombo_arr[$two] = 1
$comboStarted_bool = 1
EndIf
;before the sleep
if $comboStarted_bool = 1 _
and $sleepCountsPassedFromLastUsefulkey_int <= $maxSleepCountsForUsefulCombo_int _
and checkKeyComb() _
then ;reset
$comboStarted_bool = 0
$sleepCountsPassedFromLastUsefulkey_int = 0
endif
Sleep($sleepDuration_int) ;else the program listen continuosly
;updates
if $comboStarted_bool = 1 _
and $sleepCountsPassedFromLastUsefulkey_int <= $maxSleepCountsForUsefulCombo_int _
then
$sleepCountsPassedFromLastUsefulkey_int += 1
elseif $sleepCountsPassedFromLastUsefulkey_int > $maxSleepCountsForUsefulCombo_int then ;reset
$comboStarted_bool = 0
$sleepCountsPassedFromLastUsefulkey_int = 0
resetKeyComboArr()
endif
WEnd
DllClose($hDLL)
func oneBeep()
Beep( 500 , 50)
endfunc
func longBeep()
Beep( 500 , 150)
endfunc
func checkKeyComb()
if $keyCombo_arr[$ctrl] = 1 _
and $keyCombo_arr[$shift] = 1 _
and $keyCombo_arr[$alt] = 1 _
and $keyCombo_arr[$one] = 1 _
Then
oneBeep()
resetKeyComboArr()
return 1
elseif $keyCombo_arr[$ctrl] = 1 _
and $keyCombo_arr[$shift] = 1 _
and $keyCombo_arr[$alt] = 1 _
and $keyCombo_arr[$two] = 1 _
Then
longBeep()
resetKeyComboArr()
return 1
endif
endfunc
func resetKeyComboArr()
for $i=0 to (Ubound($keyCombo_arr)-1)
$keyCombo_arr[$i]=0
next
endfunc