Does these 2 bindings have the same functioning?

In player scripts I found strange for me Binding:

ContextActionService:BindActionToInputTypes("forwardMovement", moveForwardFunc, false, Enum.PlayerActions.CharacterForward)
ContextActionService:BindActionToInputTypes("backwardMovement", moveBackwardFunc, false, Enum.PlayerActions.CharacterBackward)
ContextActionService:BindActionToInputTypes("leftMovement", moveLeftFunc, false, Enum.PlayerActions.CharacterLeft)
ContextActionService:BindActionToInputTypes("rightMovement", moveRightFunc, false, Enum.PlayerActions.CharacterRight)
ContextActionService:BindActionToInputTypes("jumpAction", jumpFunc, false, Enum.PlayerActions.CharacterJump)

does this work same as:

ContextActionService:BindActionToInputTypes("forwardMovement", moveForwardFunc, false, Enum.KeyCode.W)
ContextActionService:BindActionToInputTypes("backwardMovement", moveBackwardFunc, false, Enum.KeyCode.S)
ContextActionService:BindActionToInputTypes("leftMovement", moveLeftFunc, false, Enum.KeyCode.A)
ContextActionService:BindActionToInputTypes("rightMovement", moveRightFunc, false, Enum.KeyCode.W)
ContextActionService:BindActionToInputTypes("jumpAction", jumpFunc, false, Enum.KeyCode.Space)

or this have additional functions, or PlayerActions just better than KeyCode? (If they better, can you explain me, why?)

It might be that PlayerActions works with more input types than just keyboard, e.g. jumping with a gamepad or a touch screen

but why this only in keyboard script? in other scripts like gamepad, DPad, DynamicDPad, bindings contain “DPad” + Up, Down, Left, Right.