defaults.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """
  2. Default key bindings.::
  3. key_bindings = load_key_bindings()
  4. app = Application(key_bindings=key_bindings)
  5. """
  6. from __future__ import annotations
  7. from prompt_toolkit.filters import buffer_has_focus
  8. from prompt_toolkit.key_binding.bindings.basic import load_basic_bindings
  9. from prompt_toolkit.key_binding.bindings.cpr import load_cpr_bindings
  10. from prompt_toolkit.key_binding.bindings.emacs import (
  11. load_emacs_bindings,
  12. load_emacs_search_bindings,
  13. load_emacs_shift_selection_bindings,
  14. )
  15. from prompt_toolkit.key_binding.bindings.mouse import load_mouse_bindings
  16. from prompt_toolkit.key_binding.bindings.vi import (
  17. load_vi_bindings,
  18. load_vi_search_bindings,
  19. )
  20. from prompt_toolkit.key_binding.key_bindings import (
  21. ConditionalKeyBindings,
  22. KeyBindingsBase,
  23. merge_key_bindings,
  24. )
  25. __all__ = [
  26. "load_key_bindings",
  27. ]
  28. def load_key_bindings() -> KeyBindingsBase:
  29. """
  30. Create a KeyBindings object that contains the default key bindings.
  31. """
  32. all_bindings = merge_key_bindings(
  33. [
  34. # Load basic bindings.
  35. load_basic_bindings(),
  36. # Load emacs bindings.
  37. load_emacs_bindings(),
  38. load_emacs_search_bindings(),
  39. load_emacs_shift_selection_bindings(),
  40. # Load Vi bindings.
  41. load_vi_bindings(),
  42. load_vi_search_bindings(),
  43. ]
  44. )
  45. return merge_key_bindings(
  46. [
  47. # Make sure that the above key bindings are only active if the
  48. # currently focused control is a `BufferControl`. For other controls, we
  49. # don't want these key bindings to intervene. (This would break "ptterm"
  50. # for instance, which handles 'Keys.Any' in the user control itself.)
  51. ConditionalKeyBindings(all_bindings, buffer_has_focus),
  52. # Active, even when no buffer has been focused.
  53. load_mouse_bindings(),
  54. load_cpr_bindings(),
  55. ]
  56. )