from arch wiki link I followed the steps and succeeded in "Arch Linux" and "Ubuntu 20.04" OS'es for While Keeping Caps Lock key + u,h,j,n etc keys. This method allows to highlight the text with Shift+Caps+h keys as mentioned in the link.
Before proceeding, read the Precautions & Preparations link 
Step 1
Edit the file /usr/share/X11/xkb/types/complete
Original Content in Ubuntu 20.04
default xkb_types "complete" {
    include "basic"
    include "mousekeys"
    include "pc"
    include "iso9995"
    include "level5"
    include "extra"
    include "numpad"
};
After Edits
default xkb_types "complete" {
    include "basic"
    include "mousekeys"
    include "pc"
    include "iso9995"
    include "level5"
    include "extra"
    include "numpad"
    
       type "CUST_CAPSLOCK" {
       modifiers= Shift+Lock; 
       map[Shift] = Level2;            //maps shift and no Lock. Shift+Alt goes here, too, because Alt isn't in modifiers.
       map[Lock] = Level3;
       map[Shift+Lock] = Level3;       //maps shift and Lock. Shift+Lock+Alt goes here, too.
       level_name[Level1]= "Base";
       level_name[Level2]= "Shift";
       level_name[Level3]= "Lock";
   };
};
Step 2
Edit the file /usr/share/X11/xkb/compat/complete
After Edits
default xkb_compatibility "complete" {
    include "basic"
    augment "iso9995"
    augment "mousekeys"
    augment "accessx(full)"
    augment "misc"
    augment "xfree86"
    augment "level5"
    augment "caps(caps_lock)"
    
       interpret Caps_Lock+AnyOfOrNone(all) {
       action= SetMods(modifiers=Lock);
   };
};
Step 3
Edit the file /usr/share/X11/xkb/symbols/us #change us with your actual symbols file.
Some of the edited content
    key <AC05> {    [     g,    G       ]   };
//  key <AC06> {    [     h,    H       ]   };
    key <AC06> {
       type= "CUST_CAPSLOCK",
       symbols[Group1]= [               h,               H,               Left],
       actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<LEFT>, clearmods=Lock) ]
  };
    key <AC07> {    [     j,    J       ]   };
    key <AC08> {    [     k,    K       ]   };
Like wise, edit the symbol files as per your requirement.
key symbols can be obtained by
xev | grep keysym command
$ xev | grep keysym
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    state 0x0, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    state 0x0, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    state 0x0, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    state 0x0, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    state 0x0, keycode 115 (keysym 0xff57, End), same_screen YES,
    state 0x0, keycode 115 (keysym 0xff57, End), same_screen YES,
$ 
Step 4
Run the below command to apply the changes immedeately
sudo udevadm trigger --subsystem-match=input --action=change
Source of above command is https://askubuntu.com/a/1075707/739431