`custom' versions: all known
That is, in 19.14 `custom' was a separate package, and later it is
bundled with xemacs.
It is `wid-edit.el'. It provides a "text field widget" implemented as
extent with a keymap bound to it.
1) Are `set-keymap-parents' for `widget-field-keymap' and friends
really necessary? Note that they set bindings for *extent* keymap,
which is searched first when dispatching key-presses. So in "text
field widgets" `global-map' key bindings shadow those of minor modes.
In particular, vi movement mode in viper is implemented through minor
mode, so one can not enjoy vi commands in "text fields".
2) If you decide to retain it. This code fragment looks strange.
(setq widget-text-keymap (make-sparse-keymap))
(set-keymap-parents widget-field-keymap global-map)
Apparently it initializes `widget-text-keymap', but looks like smb
forgot to replace `widget-field-keymap' from an expr above with
`widget-text-keymap'.