Could you try running x11vnc with the -dk option and see what it prints when you press shift/fn + other keys? (You may want to use a paste bin for the output)
#################################### # Pressing Shift+t ('T' character) #################################### 07/09/2010 10:12:18 # keyboard(down, 0xffe1 "Shift_L") uip=0 175.8804 07/09/2010 10:12:18 modifier_tweak_keyboard: down keysym=0xffe1 07/09/2010 10:12:18 modifier_tweak_keyboard: KeySym 0xffe1 "Shift_L" -> KeyCode 0x32 07/09/2010 10:12:18 XTestFakeKeyEvent(dpy, keycode=0x32 "Shift_L", down) 07/09/2010 10:12:18 calling XTestFakeKeyEvent(50, 1) 175.8806 07/09/2010 10:12:18 # keyboard(down, 0x54 "T") uip=0 176.0173 07/09/2010 10:12:18 modifier_tweak_keyboard: down keysym=0x54 07/09/2010 10:12:18 tweak_mod: Start: down=1 index=3 mod_state=0x1 is_shift=1 07/09/2010 10:12:18 XTestFakeKeyEvent(dpy, keycode=0x32 "Shift_L", up) 07/09/2010 10:12:18 calling XTestFakeKeyEvent(50, 0) 176.0177 07/09/2010 10:12:18 tweak_mod: Finish: down=1 index=3 mod_state=0x1 is_shift=1 07/09/2010 10:12:18 modifier_tweak_keyboard: KeySym 0x54 "T" -> KeyCode 0x1c 07/09/2010 10:12:18 XTestFakeKeyEvent(dpy, keycode=0x1c "t", down) 07/09/2010 10:12:18 calling XTestFakeKeyEvent(28, 1) 176.0178 07/09/2010 10:12:18 tweak_mod: Start: down=0 index=3 mod_state=0x1 is_shift=1 07/09/2010 10:12:18 XTestFakeKeyEvent(dpy, keycode=0x32 "Shift_L", down) 07/09/2010 10:12:18 calling XTestFakeKeyEvent(50, 1) 176.0178 07/09/2010 10:12:18 tweak_mod: Finish: down=0 index=3 mod_state=0x1 is_shift=1 07/09/2010 10:12:18 # keyboard(up, 0x54 "T") uip=0 176.2423 07/09/2010 10:12:18 modifier_tweak_keyboard: up keysym=0x54 07/09/2010 10:12:18 modifier_tweak_keyboard: KeySym 0x54 "T" -> KeyCode 0x1c 07/09/2010 10:12:18 XTestFakeKeyEvent(dpy, keycode=0x1c "t", up) 07/09/2010 10:12:18 calling XTestFakeKeyEvent(28, 0) 176.2424