I did start by have the player be able to use W/D but the problem is the Y distance from the player to the grapple point. Say if you press D when you are under the grapple point then you swing anti-clockwise, but if you are above and press D then you go clockwise. The problem with this is that when the Y distance is short, meaning that the player is very close to being classed as "above" or "below". As its a very close, you may try to press D to swing to the right as you are falling, only to be propelled clockwise, which is still to the right, but its above the grapple point instead of a natural swinging motion. Therefore I decided to base the direction from the cursor relative to the player and the grapple point.
I used grapple points because it makes for easier linear level design and it guides the player so that they know where to grapple.