New to unity need help with movement

ive followed a couple tutorials to get movement down in a project and A and D always do the opposite movement input to what is selected. i dont know if its the code or something in the engine.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

[RequireComponent(typeof(CharacterController))]
public class NewBehaviourScript : MonoBehaviour
{
    private Vector2 _input;
    private CharacterController _characterController;
    private Vector3 _direction; 

    [SerializeField] private float speed;

    private void Awake()
    {
        _characterController = GetComponent<CharacterController>();
    }

    private void Update()
    {
        _characterController.Move(_direction * speed * Time.deltaTime);
    }

    public void move(InputAction.CallbackContext context)
    {
        _input = context.ReadValue<Vector2>();
        _direction = new Vector3(-_input.x, y:0.0f, z:_input.y);
    }
}
    public void move(InputAction.CallbackContext context)
    {
        _input = context.ReadValue<Vector2>();
        _direction = new Vector3(-_input.x, y:0.0f, z:_input.y);
        _direction = transform.TransformDirection(_direction);
    }

now my w and s are inverted but a and d are fixed

if i change w to down and s to up will it effect anything when i add rotation?

public void move(InputAction.CallbackContext context)
    {
        _input = context.ReadValue<Vector2>();
        _direction = new Vector3( _input.x, 0.0f, _input.y);
        _direction = transform.TransformDirection(_direction);
    }