It's true that the hardware keyboard on Macintosh machines has:
Fn + ← = Home
Fn + → = End
Fn + ↑ = Pg up
Fn + ↓ = Pg down
So these "keys" fully exist already. This is apparent if you run Linux/Windows natively on your Mac.
However, macOS applications are responsible for handling these functions as they see fit, which is not something most of us expect. And the macOS Terminal application needs some tweaking to use them as we all expect.
I believe the reason for this is that macOS follows an old-school Unix tradition where:
ctrl + a = Home
ctrl + e = End
I now use this routinely, but my terminal-reflexes still demand a proper home,end,pg-up,pg-down...
Edit macOS's Terminal Keyboard Binding Settings to match
I tend to get this entered by copying a similar entry that already exists and then using that delete a character button to remove the different bits before typing in the rest.
Overall, this will look along these lines:
This meets all my expectations for how this should work. It works in vim and through ssh.
If you have a full keyboard you can use the pgup and pgdown keys on your keyboard, near the numpad.
If you are not using a full keyboard, function, labeled fn on your keyboard, plus the up and down arrow keys will give you a page up and down.
For certain applications, particularly in shell / terminal / tty windows, the expected behaviour is achieved with fn+shift+arrow up/down