The absolute simplest way would be to set the center of the camera to the average of the player's position and the cursor's position.
GML:
view_xview = clamp( ( player.x + mouse_x ) / 2, player.x - view_wview, player.x ) ;
view_yview = clamp( ( player.y + mouse_y ) / 2, player.y - view_hview, player.y ) ;
or smoothed
GML:
view_goal_x = clamp( ( player.x + mouse_x ) / 2 - view_wview / 2, player.x - view_wview, player.x ) ;
view_goal_y = clamp( ( player.y + mouse_y ) / 2 - view_hview / 2, player.y - view_hview, player.y ) ;
view_xview += ( view_goal_x - view_xview ) / 8 ;
view_yview += ( view_goal_y - view_yview ) / 8 ;
that should work as intended for "full look distance". For as your pictures show with cursor always in the middle, well, it's the same thing but you just turn the cursor off and draw your crosshairs in the middle!
Gizmo's code is the most condensed form of this, but it will leave the cursor and player off-screen in windowed mode if you don't limit it, and you mentioned you wanted the player to remain on-screen. It also won't make it smooth, but rather snappy and instant. Another preference decision to make for your aiming system.
But really any way you do this starts to become awkward, or might have unintended behaviors, if you don't have more intent to begin with. Have you played Soldat? Do you have any games that you might reference for the "feel" of the top-down aiming? Need more details or you'll have a rudimentary implementation that won't fit or won't feel juicy. Best way in my book would be to just calculate the direction and distance from player to cursor... then you can do any amount of tweening/lerping/altering/limiting of the numbers and you won't have "square" boundaries for aiming, you can set them up so there's a maximum looking distance in either a circle or an ellipse, you can add a smooth directional zoom in/out acceleration/deceleration, etc...
Sorry if you tried any of my pre-edit code. I tried so hard to cram the smoothed version into two lines, but I'm a mess. Time for bed.