I've been using keypebble but was getting frustrated at the lack of support for the newer encodings - so I went ahead and added them. I can't build for opie devices ATM so this release is for Sharp based ROMs only. Some features are a little experimental so this is not yet a full release.
You can get it here:
teakettle.ipkThe name-change (to teakettle) is temporary so you can keep keypebble installed alongside it just in case you have problems. Once I get it stable it'll become just a mod to keypebble. It appears as VNC Viewer2 on your Applications tab. If you do run keypebble alongside it, remember to turn off the new encodings in teakettle before opening up keypebble as the configuration file is shared and I believe keypebble will actually request some of the encodings it can't handle if they are enabled from teakettle.
If you could let me know how you get on and if there are any other features you want added, I'd be grateful.
From the README:
Additions to keypebble by Tim Wentford
======================================
1) Added ZRLE, zlib, hextile, CoRRE and RRE encoding support.
2) Added a "Fit remote desktop to local screen" scale method (set the
scale factor to 0 to see it in action).
3) Modified the way that the refresh rate is used to more closely
match the use documented in the rfb standard.
4) Added a "Request Refresh Now" and "Set Refresh Rate Slower/Faster"
items to the corner menu (I like to slow the refresh rate down when
I'm monitoring stuff, but to speed it back up when I'm controlling
it).
5) Modified the scaling mechanism to avoid missing pixels when
rectangles which aren't a multiple of the scale factor arrive (the
screen still gets "fuzzy" when this happens but it looks better
than the missing lines to me).
6) Added an experimental "Auto" mode to choose the preferred encoding
automatically based on an approximate measure of how long a screen
refresh would take.
7) Tried to improve the interactivity during a long refresh (I'm not
sure if I've succeeded in this so I haven't done it throughout - if
you want to experiment replace the call to start the timer in
endRect with a direct call to doOneRect: if it works, let me know
and I'll extend it to work better with hextile and ZRLE encodings
(by using the timer between tiles as well as between rectangles)).

Added local cursor encoding. This is supposed to save on bandwidth
by allowing the server to send updates to the cursor shape so that
the remote machine can draw the cursor itself. A server can then
take advantage of this by not sending updates every time the cursor
moves. I haven't found much advantage in using this yet, and I
don't really handle it properly since I choose not to draw the
cursor at all - which is probably appropriate for a touch screen
device).
9) Added resize encoding so that the remote device can handle screen
size changes properly.
10) Some attempts at optimisation - though currently I've probably
added more overhead than I've saved.
11) Added the SHARPROM #define so that it can be built more easily for
standard Qtopia devices.
Problems
========
1) Occasional floating point exception at connection.
I'm not sure if that is something I've added or not. If you get this persistently from a particular server try checking the "Request 8-bit session" box.
2) I can't currently build for opie based machines.
Even the original code freshly checked out of the CVS segfaults for me
when I build it for an Opie target so I have only tested this on a
Sharp ROM based Zaurus.
3) I'm not sure that I can get much of a sample to estimate bandwidth
in hextile encoding...
...so you may get stuck in hextile encoding when using auto mode.
4) I haven't tested auto mode in a wide enough set of networks, yet.
Which is why I'm making this release.