Set the actual keypressfcn to a routine that you write, a key press dispatcher. The dispatcher would retrieve a cell array of function handles and invoke them one by one. In the places in the code that would set the keypressfcn, instead have them call a "register" function that adds the given function handle to the list of known callbacks.
Alternately, you might be be able to do this by invoking listeners on an event. You can have as many listeners on the same event as you want, with MATLAB internally doing the registration and invocation.
For example,
el = addlistener(fig, 'CurrentKey', 'PostSet', @(varargin) disp('keyed!'))
but not this exactly: the above does not "eat" the key presses, and they end up being forwarded to the command line. But you can then
set(fig,'KeyPressFcn', @(varargin) disp('eating key'))
and this will eat the keypress . (In practice you would just have it do nothing, gracefully, such as @(varargin) 0 )