keyobserver.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import DomEventObserver from './domeventobserver.js';
  6. import { getCode } from '../../../utils/keyboard.js';
  7. /**
  8. * {@link engine.view.Document#keydown Key down} event observer.
  9. *
  10. * Note that this observer is attached by the {@link engine.view.Document} and is available by default.
  11. *
  12. * @memberOf engine.view.observer
  13. * @extends engine.view.observer.DomEventObserver
  14. */
  15. export default class KeyObserver extends DomEventObserver {
  16. constructor( document ) {
  17. super( document );
  18. this.domEventType = 'keydown';
  19. }
  20. onDomEvent( domEvt ) {
  21. this.fire( 'keydown', domEvt, {
  22. keyCode: domEvt.keyCode,
  23. altKey: domEvt.altKey,
  24. ctrlKey: domEvt.ctrlKey || domEvt.metaKey,
  25. shiftKey: domEvt.shiftKey,
  26. get keystroke() {
  27. return getCode( this );
  28. }
  29. } );
  30. }
  31. }
  32. /**
  33. * Fired when a key has been pressed.
  34. *
  35. * Introduced by {@link engine.view.observer.KeyObserver}.
  36. *
  37. * Note that because {@link engine.view.observer.KeyObserver} is attached by the {@link engine.view.Document}
  38. * this event is available by default.
  39. *
  40. * @see engine.view.observer.KeyObserver
  41. * @event engine.view.Document#keydown
  42. * @param {engine.view.observer.keyObserver.KeyEventData} keyEventData
  43. */
  44. /**
  45. * The value of the {@link engine.view.Document#keydown} event.
  46. *
  47. * @class engine.view.observer.keyObserver.KeyEventData
  48. * @extends engine.view.observer.DomEventData
  49. * @implements utils.keyboard.KeystrokeData
  50. */
  51. /**
  52. * Code of the whole keystroke. See {@link utils.keyboard.getCode}.
  53. *
  54. * @readonly
  55. * @member {Number} engine.view.observer.keyObserver.KeyEventData#keystroke
  56. */