Full Code of Qiasfah/Null-Movement-Script for AI

master e7073f4ebdb8 cached
1 files
4.1 KB
1.4k tokens
1 requests
Download .txt
Repository: Qiasfah/Null-Movement-Script
Branch: master
Commit: e7073f4ebdb8
Files: 1
Total size: 4.1 KB

Directory structure:
gitextract_6zkxzwao/

└── Null Movement.ahk

================================================
FILE CONTENTS
================================================

================================================
FILE: Null Movement.ahk
================================================
; Null Movement Script for AutoHotkey v2
; This script updates the A and D keys so that only one is held down at a time
; This avoids the situation where game engines treat holding both strafe keys as not moving
; Instead, holding both strafe keys will cause you to move in the direction of the last one that was pressed
; The same logic is applied to the W and S keys (only one can be held at a time)
; Cheers to https://www.youtube.com/watch?v=Feny5bs2JCg&t=335s for mentioning this
; Changelog:
; 2024-08-10: simpler global usage with single global specifier
; 2024-07-26: Adding MaxThreads 1 and MaxThreadsBuffer 1
; 2024-07-26: Changing to use SendInput instead of Send, removing a couple if statements in key down events
; 2024-07-25: Adding section to allow for end button to close script, leaving commented for the moment
; 2024-07-25: Changed to use scancodes for multi-layout keyboard support
; 2024-07-25: Added requires v2 line

; Scan Code Mappings:
; W   SC011
; A   SC01E
; S   SC01F
; D   SC020

#Requires AutoHotkey v2
#SingleInstance force
#MaxThreads 1
#MaxThreadsBuffer 1
Persistent true
ListLines False
KeyHistory 0
ProcessSetPriority "High"
A_MaxHotkeysPerInterval := 99000000
A_HotkeyInterval := 0

global a_held := 0  ; Variable that stores the actual keyboard state of the A key
global d_held := 0  ; Variable that stores the actual keyboard state of the D key
global a_scrip := 0 ; Variable that stores the state of the A key output from the script
global d_scrip := 0 ; Variable that stores the state of the D key output from the script

global w_held := 0
global s_held := 0
global w_scrip := 0
global s_scrip := 0

/* Un-comment this section if you want the end button to open a dialog that asks to close the script
ToolTip "Script Enabled",A_ScreenWidth/2,A_ScreenHeight/2
SetTimer () => ToolTip(), -1000

End:: ; <--- this button exits the script
{ 
    Result := MsgBox("Are you sure you want to exit?",, 4)
    if Result = "Yes" 
    {
        ExitApp
    }
}
*/

*$SC01E:: ; *$a:: ; Every time the a key is pressed, * to include occurences with modifiers (shift, control, alt, etc)
{   
    global

    a_held := 1  ; Track the actual state of the A key
    
    if d_scrip
    { 
        d_scrip := 0
        SendInput "{Blind}{SC020 up}" ; Release the D key if it's held down, {Blind} so it includes any key modifiers (shift primarily)
    }
    
    a_scrip := 1
    SendInput "{Blind}{SC01E down}" ; A down key
}

*$SC01E up:: ; *$a up:: ; Every time the a key is released
{    
    global

    a_held := 0
    
    if a_scrip
    {
        a_scrip := 0
        SendInput "{Blind}{SC01E up}"  ; A up key
    }
        
    if d_held && !d_scrip
    {
        d_scrip := 1
        SendInput "{Blind}{SC020 down}"  ; D down key if it's held
    }
}

*$SC020:: ; *$d::
{    
    global

    d_held := 1
    
    if a_scrip
    {
        a_scrip := 0
        SendInput "{Blind}{SC01E up}"  ; Release the A key if it's held down
    }
    
    d_scrip := 1
    SendInput "{Blind}{SC020 down}"  ; D down key
}

*$SC020 up:: ; *$d up::
{    
    global

    d_held := 0
    
    if d_scrip
    {
        d_scrip := 0
        SendInput "{Blind}{SC020 up}"  ; D up key
    }
    
    if a_held && !a_scrip
    {
        a_scrip := 1
        SendInput "{Blind}{SC01E down}"  ; A down key if it's held
    }
}

*$SC011:: ; *$w::
{    
    global

    w_held := 1

    if s_scrip 
    {
        s_scrip := 0
        SendInput "{Blind}{SC01F up}"
    }

    w_scrip := 1
    SendInput "{Blind}{SC011 down}"
}

*$SC011 up:: ; *$w up::
{    
    global

    w_held := 0

    if w_scrip
    {
        w_scrip := 0
        SendInput "{Blind}{SC011 up}"
    }

    if s_held && !s_scrip 
    {
        s_scrip := 1
        SendInput "{Blind}{SC01F down}"
    }
}

*$SC01F:: ; *$s::
{    
    global

    s_held := 1

    if w_scrip 
    {
        w_scrip := 0
        SendInput "{Blind}{SC011 up}"
    }

    s_scrip := 1
    SendInput "{Blind}{SC01F down}"
}

*$SC01F up:: ; *$s up::
{    
    global

    s_held := 0

    if s_scrip 
    {
        s_scrip := 0
        SendInput "{Blind}{SC01F up}"
    }

    if w_held && !w_scrip 
    {
        w_scrip := 1
        SendInput "{Blind}{SC011 down}"
    }
}
Download .txt
gitextract_6zkxzwao/

└── Null Movement.ahk
Condensed preview — 1 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5K chars).
[
  {
    "path": "Null Movement.ahk",
    "chars": 4229,
    "preview": "; Null Movement Script for AutoHotkey v2\n; This script updates the A and D keys so that only one is held down at a time\n"
  }
]

About this extraction

This page contains the full source code of the Qiasfah/Null-Movement-Script GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1 files (4.1 KB), approximately 1.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!