..Okay, this is making very little sense.
On my oneplus with a keyboard:
These keys work in Textmaker, and in bVNC and Jump Desktop.
On the Gemini:
These keys only work in Textmaker.
What the heck is going on here?
OK, so I actually checked this out properly. The up arrow gives a key code of 19. The physical page up key (if your keyboard has one) is 92. When the gemini has the fn button pressed it adds a meta value of 8. The meta determines if other keys are down, eg. shift ctrl etc. So we get the following:
Up arrow => code = 19, meta = 0
Page up => code = 19, meta = 8
This is correct. Now there are two ways to get page up - the physical page up key (92) or a meta key (fn + 19). When people code key event listeners in android, they normally get a bit lazy and use functions like isShiftPressed() instead of checking the meta value. Text maker appears to correctly check the meta value of the key press to determine what key is pressed. This is how most desktop applications would do keyboard input if they are listening to the events. This correctly identifies page up. Android apps which go the lazy way just make use of a few built in functions. They will detect fn + 19 as just 19 as they don't have a function for fn (meta value

. Remember that normally, android has a soft keyboard and no real need for page up/down etc.
Now saying this, the gemini keyboard app is managing a few other keys, so it should possibly translate fn + 19 to 92, but it doesn't seem to. The problem about doing this is that apps which correctly look at the meta value might break. They would detect fn + 92 rather than fn + 19.
Anyway, this is why the page up/down/end/home only work in some apps. Those apps which correctly look at meta values will work, those that don't won't.