Advertisement
Mangus875

Trackmania Hold Action Keys

Mar 11th, 2025 (edited)
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Requires AutoHotkey v2.0
  2. #SingleInstance
  3.  
  4. SetKeyDelay 0, 0
  5. A_HotkeyInterval := 0
  6. SetKeyDelay -1, 0
  7. SendMode "event"
  8. CoordMode "tooltip", "screen"
  9.  
  10. keyNames := ["1", "2", "3", "4", "5"]  ; action key binds
  11. keys := [0,0,0,0,0]
  12. lastKeys := [0,0,0,0,0]
  13. inputs := [0,0,0,0,0]
  14. curAk := 0
  15. newAk := 0
  16.  
  17. loop keyNames.length {
  18.   Hotkey "*" keyNames[A_index], nop
  19. }
  20. nop(thishotkey) {
  21.   return
  22. }
  23.  
  24. SetTimer(updateKeys, 1)
  25. #SuspendExempt 1
  26. !X::ExitApp
  27. !R::Reload
  28. !P:: {
  29.   Suspend
  30.   Pause
  31. }
  32.  
  33. updateKeys() {
  34.   global
  35.  
  36.   getInputs
  37.   updateAk
  38. }
  39.  
  40. getInputs() {
  41.   global
  42.  
  43.   loop keyNames.length {
  44.     i := A_index
  45.     lastKeys[i] := keys[i]
  46.     state := GetKeyState(keyNames[i], "P")
  47.     keys[i] := state
  48.     inputs[i] := state
  49.     if keys[i] && !lastKeys[i]
  50.       inputs[i] := 2
  51.     else if !keys[i] && lastKeys[i]
  52.       inputs[i] := -1
  53.   }
  54. }
  55.  
  56. updateAk() {
  57.   global
  58.  
  59.   loop inputs.length {
  60.     if inputs[A_index] == 2
  61.       newAk := A_index
  62.   }
  63.   loop inputs.length {
  64.     if inputs[A_index] == -1 && curAk == A_index {
  65.       curAk := 0
  66.       loop inputs.length {
  67.         if inputs[A_index] > 0
  68.           newAk := A_index
  69.       }
  70.       if newAk == 0
  71.         send keyNames[5]
  72.     }
  73.   }
  74.   if newAk > 0 {
  75.     send keyNames[newAk]
  76.     curAk := newAk
  77.     newAk := 0
  78.   }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement