Global vim-like (hjkl) navigation with numlock & xmodmap?

Wait 5 sec.

I'd like to be able mimic vim's hjkl navigation everywhere in the system by utilizing num lock (or scroll lock), and making hjkl keys act as arrows whenever num lock is on, and regular behavior otherwise. Additionaly I'd like to be able to make caps lock act as num lock for this purpose.How to achieve it via xmodmap or whatever is suitable (best when it's not desktop environment specific)?