Very ugly but maybe it's the solution you were looking for. Very sad the shift down solution doesn't work for you, because that's what I've always been using.
*^Space::
dx = 1
dy = 1
text_selection_is_on := !text_selection_is_on
if text_selection_is_on
{
MouseMove, %A_CaretX%, %A_CaretY%, 0
dx := A_CaretX
Send, {right}
dx := A_CaretX - dx
Send, {left}
dy := A_CaretY
Send, {down}
dy := A_CaretY - dy
Send, {up}
Send, {Click down}
}
else
Send, {Click up}
return
left::
if text_selection_is_on
MouseMove, % -dx, 0, 0, R
else
Send, {left}
return
right::
if text_selection_is_on
MouseMove, % dx, 0, 0, R
else
Send, {right}
return
down::
if text_selection_is_on
MouseMove, 0, % dy, 0, R
else
Send, {down}
return
up::
if text_selection_is_on
MouseMove, 0, % -dy, 0, R
else
Send, {up}
return
See How to combine three keys as a hotkey with Autohotkey? for the first half of your question.
As far as stripping formatting, it looks to be possible with something like this (from this Stack Overflow question):
Send ^c
clipboard = "%clipboard%"
; Remove space introduced by WORD
StringReplace, clipboard, clipboard,%A_SPACE%",", All
There's also this AutoHotkey forum post about it.
EDIT: The following is in the AutoHotkey documentation on Clipboard, ClipboardAll, and OnClipboardChange:
clipboard = %clipboard% ; Convert any copied files, HTML, or other formatted text to plain text.
Best Answer
Select text, press Alt-R
Converts:
"My Filename" to "my-filename"
"MY FILENAME" to "my-filename"
"my filename" to "MY-FILENAME"
Preserves original clipboard contents