Hello,

  the current nglWindow keyboard callbacks have some limitations, and
Meeloo asked for more proper support for keyboard shortcuts and input
methods. We came up with the following proposal: now OnKeyUp/Down
callback will pass a struct :

struct nglKeyEvent {
  nglTime    mTime;      ///< Time stamp of the key event
  nglKeyCode mCode;      ///< Code of the physical key
  nglString  mRawString; ///< Output string, with modifiers ignored
  nglString  mString;    ///< Output string, with normal input method
handling
};

  Notable differences :
 
  - new timestamp !

  - textual results from a key events are strings, because in some
circumstances, a single key event (maybe combined with the precedent
ones) can result in multiples caracters. Of course, a textual result is
not always available (eg: event on NK_SHIFT), this is already
documented. As an alternative, we could continue with nglChar, but in
this case NGL would synthetize fake key events to pass several
characters upon a simgle key stroke if necessary (that's what _should_
be implemented currently ! Sorry ...).

  - there are two textual result: the mRawString gives you the key as if
modifiers (shift, control, alt, etc.) where not taken into account. This
way you can correctly interpret the Ctrl+A sequence, it would give you
two events (eg. w/french AZERTY keyboard) :

    * mCode = NK_LCTRL, mRawString = '', mString = ''
    * mCode = NK_Q, mRawString = 'a', mString ='^A' (the latter being
quite platform dependent)


  We plan to completely deprecate the current OnKeyUp/OnKeyDown
callbacks.

  BTW, it would be a good idea to add a mTime timestamp in nglMouseInfo
also.



Reply via email to