You need to specify three entries in the map as described in Scan code mapper for keyboards.
For instance, I use next remapping on my Windows 8.1 (but since XP times): CapsLock behaves the same way as LShift and its functionality is remapped to ScrollLock; of course, the latter functionality is lost i.e. ScrollLock now behaves the same way as CapsLock would before all remapping. That remapping appears in the registry as follows:
==> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v "Scancode Map"
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
Scancode Map REG_BINARY 0000000000000000030000002A003A003A00460000000000
i.e. in terms of registry editor export:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,2a,00,3a,00,3a,00,46,00,\
00,00,00,00
Description: (the following table contains these entries broken into DWORD
columns (little-endian format preserved) and the words are described in hexadecimal i.e. swapped)
00,00,00,00 ,00,00,00,00 ,03,00,00,00 ,2a,00,3a,00 ,3a,00,46,00 ,00,00,00,00
00000000 00000000 03000000 2A003A00 3A004600 00000000
│ │ │ │ │ │
│ │ │ │ │ └─ Null terminator
│ │ │ │ │
│ │ │ │ ├─ ScrollLock -> CapsLock
│ │ │ │ ╘═ 0x0046 -> 0x003A
│ │ │ │
│ │ │ ├─ CapsLock -> LShift
│ │ │ ╘═ 0x003A -> 0x002A
│ │ │
│ │ └─ Three entries in the map (including null entry)
│ │
│ └─ Header: Flags. Set to all zeroes.
│
└─ Header: Version. Set to all zeroes.
Read Keyboard-internal scancodes and Microsoft Keyboard Scan Code Specification for Insert key scan code value. I would say 0xE052
however can't see the sense of next note (applied to Insert, Delete, arrows etc.):
These keys may have additional “shift” and/or “unshift” scan codes
preceding the Base Make code and following the Base Break code,
depending upon the current state of Num Lock and the state of Shift
key/s (when multiple keys are held down at the same time).