>>660
tf.myKeyDownHook = function(key, shift){ foo; };
kag.keyDownHook.add(tf.myKeyDownHook);
// 場面転換
tf.myKeyDownHook = function(key, shift){ bar; };
みたいなことを言ってるの? 多分ムリじゃないかな
2度目以降の関数宣言(無名関数の代入)で新しい関数は別物として上書きする一方で
addした先は関数(変数)名ではなく関数そのものを受け取っており、関数名をたよりに
逐次実行しているわけじゃないはず

やるのであれば、一旦削除して新たに追加する
tf.myKeyDownHook = function(key, shift){ foo; };
kag.keyDownHook.add(tf.myKeyDownHook);
// 場面転換
kag.keyDownHook.remove(tf.myKeyDownHook);
tf.myKeyDownHook = function(key, shift){ bar; };
kag.keyDownHook.add(tf.myKeyDownHook);


自分はよくf.statusとかkag.current_labelあたりで条件分岐するものを1つ用意してる