AutoHotkey is the simplest solution to this. It took me a while to find the right mapping for my keyboard and I thought this was a good place to share it. (Thank you Ilan for showing the CTRL and SHIFT combinations.)
My Dell Precision 7510 laptop does not have dedicated Home and End buttons but it does have dedicated PrtScr and Insert buttons (like this). Because I normally use an external keyboard and I regularly use my Print Screen key I needed a way to toggle that button between being Print Screen and Home when using the laptop keyboard. Building upon the example from Iian, I setup Win+Print Screen to toggle the override.
; My Dell Precision 7510 laptop does not have dedicated Home and End buttons
; but it does have dedicated PrtScr and Insert buttons.
; This script will override those buttons as Home and End.
; Idea from: http://superuser.com/questions/412761/mini-keyboard-has-no-home-end-keys-how-to-type-them
; Use the Win+Printscreen key to toggle these hotkeys. They are only needed when using the laptop keyboard.
; Note that this script should be loaded after Snagit or other software that overrides the Print Screen key or those programs may fail to map properly.
#Printscreen::
T:=!T
if(T) ; If it's on
{
;--- Map the Printscreen and Insert keys ---
Hotkey, Printscreen, Printscreen, On
Hotkey, Insert, Insert, On
SoundBeep 423, 100
SoundBeep 423, 150
ToolTip, Laptop PrtScr/Insert remapped to Home/End...
Sleep, 1500
ToolTip
;=== Home ===
; Note that MsgBox, ToolTip, and SoundBeep lines are not executing after the first key is mapped. Hmm. BS 7/27/2016
; Home = start of line
Printscreen::Send {Home}
; Ctrl-Home = start of document
^Printscreen::Send {LCtrl down}{Home}{LCtrl up}
; Shift-Home = select to start of line
+Printscreen::Send {LShift down}{Home}{LShift up}
; Ctrl-Shift-Home = select to start of document
^+Printscreen::Send {LCtrl down}{LShift down}{Home}{LShift up}{LCtrl up}
;=== End ===
; End = end of line
Insert::Send {End}
; Ctrl-End = end of document
^Insert::Send {LCtrl down}{End}{LCtrl up}
; Shift-End = select to end of line
+Insert::Send {LShift down}{End}{LShift up}
; Ctrl-Shift-End = select to start of document
^+Insert::Send {LCtrl down}{LShift down}{End}{LShift up}{LCtrl up}
}
else
{
;--- Disable the Printscreen and Insert key mapping ---
Hotkey, Printscreen, Off
Hotkey, Insert, Off
SoundBeep 303, 150
ToolTip, Laptop PrtScr/Insert remapping disabled...
Sleep, 1500
ToolTip
}
Return