com.jogamp.newt.event.KeyEvent类的使用及代码示例

x33g5p2x  于2022-01-23 转载在 其他  
字(12.2k)|赞(0)|评价(0)|浏览(296)

本文整理了Java中com.jogamp.newt.event.KeyEvent类的一些代码示例,展示了KeyEvent类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。KeyEvent类的具体详情如下:
包路径:com.jogamp.newt.event.KeyEvent
类名称:KeyEvent

KeyEvent介绍

[英][

KeyEvent Delivery

](https://www.tabnine.com/code/java/classes/com.jogamp.newt.event.KeyEvent#) Key events are delivered in the following order:

#Event TypeConstraintsNotes1#EVENT_KEY_PRESSED excluding #isAutoRepeat()- #isModifierKey() keys2#EVENT_KEY_RELEASED excluding #isAutoRepeat()- #isModifierKey() keys

In case the native platform does not deliver keyboard events in the above order or skip events, the NEWT driver will reorder and inject synthetic events if required.

Besides regular modifiers like InputEvent#SHIFT_MASK etc., the InputEvent#AUTOREPEAT_MASK bit is added if repetition is detected, following above constraints.

Auto-Repeat shall behave as follow:

P = pressed, R = released 
0 = normal, 1 = auto-repeat 
P(0), [ R(1), P(1), R(1), ..], R(0)

The idea is if you mask out auto-repeat in your event listener you just get one long pressed P/R tuple for #isPrintableKey() and #isActionKey() keys.

#isActionKey() keys will produce #EVENT_KEY_PRESSEDand #EVENT_KEY_RELEASED events including #isAutoRepeat().

#isPrintableKey() keys will produce #EVENT_KEY_PRESSED and #EVENT_KEY_RELEASED events.

#isModifierKey() keys will produce #EVENT_KEY_PRESSED and #EVENT_KEY_RELEASED events excluding #isAutoRepeat(). They will also influence subsequent event's #getModifiers() bits while pressed.
[

Unicode Mapping

](https://www.tabnine.com/code/java/classes/com.jogamp.newt.event.KeyEvent#)

#getKeyChar(), as well as #isPrintableKey() #getKeyCode() and #getKeySymbol()use the UTF-16 unicode space w/o collision.

Non- #isPrintableKey() #getKeyCode() and #getKeySymbol(), i.e. #isModifierKey() and #isActionKey()keys, are mapped to unicode's control and private range and do not collide w/ #isPrintableKey() unicode values with the following exception.
[

Unicode Collision

](https://www.tabnine.com/code/java/classes/com.jogamp.newt.event.KeyEvent#)

The following #getKeyCode()s and #getKeySymbol()s collide w/ unicode space:

unicode rangevirtual key codeunicode character[0x61 .. 0x78][ #VK_F1.. #VK_F24]['a'..'x']

Collision was chosen for #getKeyCode() and #getKeySymbol() mapping to allow a minimal code range, i.e. [0..255]. The reduced code range in turn allows the implementation to utilize fast and small lookup tables, e.g. to implement a key-press state tracker.

http://www.utf8-chartable.de/unicode-utf8-table.pl 
http://www.unicode.org/Public/5.1.0/ucd/PropList.txt 
https://en.wikipedia.org/wiki/Mapping_of_Unicode_characters 
https://en.wikipedia.org/wiki/Unicode_control_characters 
https://en.wikipedia.org/wiki/Private_Use_%28Unicode%29#Private_Use_Areas

[中][

KeyEvent Delivery

](https://www.tabnine.com/code/java/classes/com.jogamp.newt.event.KeyEvent#)密钥事件按以下顺序传递:
#事件类型ConstraintsNotes1#事件#按键#不包括#isAutoRepeat()-#isModifierKey()按键2#事件#按键#不包括#isAutoRepeat()-#isModifierKey()按键
如果本机平台未按上述顺序交付键盘事件或跳过事件,则NEWT驱动程序将根据需要重新排序并注入合成事件。
除了常规修饰符(如InputEvent#SHIFT#U MASK等)外,如果检测到重复,将根据上述约束添加InputEvent#AUTOREPEAT#MASK位。
自动重复应如下所示:

P = pressed, R = released 
0 = normal, 1 = auto-repeat 
P(0), [ R(1), P(1), R(1), ..], R(0)

如果您在事件侦听器中屏蔽了自动重复,您只需为#isPrintableKey()和#isActionKey()键获得一个长按的P/R元组。
#isActionKey()键将产生#事件#键#按和#事件#键#释放的事件,包括#isAutoRepeat()。
#isPrintableKey()键将产生#事件#键被按下和#事件#键被释放事件。
#isModifierKey()键将产生#事件#键#按下和#事件#键#释放的事件,不包括#isAutoRepeat()。按下时,它们还会影响后续事件的#getModifiers()位。
[

Unicode Mapping

](https://www.tabnine.com/code/java/classes/com.jogamp.newt.event.KeyEvent#)
#getKeyChar()以及#isPrintableKey()#getKeyCode()和#getKeySymbol()使用UTF-16 unicode空间,不存在冲突。
非#isPrintableKey()#getKeyCode()和#getKeySymbol(),即#isModifierKey()和#isActionKey()键,映射到unicode的控件和专用范围,不会与w/#isPrintableKey()unicode值冲突,但以下情况除外。
[

Unicode Collision

](https://www.tabnine.com/code/java/classes/com.jogamp.newt.event.KeyEvent#)
以下#getKeyCode()和#getKeySymbol()与unicode空间冲突:
unicode范围虚拟键代码unicode字符[0x61..0x78][#VK_F1..VK_F24]['a'..'x']
为#getKeyCode()和#getKeySymbol()映射选择了冲突,以允许最小的代码范围,即[0$]。减少的代码范围反过来允许实现利用快速和小的查找表,例如实现按键状态跟踪器。

http://www.utf8-chartable.de/unicode-utf8-table.pl 
http://www.unicode.org/Public/5.1.0/ucd/PropList.txt 
https://en.wikipedia.org/wiki/Mapping_of_Unicode_characters 
https://en.wikipedia.org/wiki/Unicode_control_characters 
https://en.wikipedia.org/wiki/Private_Use_%28Unicode%29#Private_Use_Areas

代码示例

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

public void keyPressed(KeyEvent evt) {
  int code = convertNewtKey(evt.getKeySymbol());
  KeyInputEvent keyEvent = new KeyInputEvent(code, evt.getKeyChar(), true, evt.isAutoRepeat());
  keyEvent.setTime(evt.getWhen());
  synchronized (eventQueue){
    eventQueue.add(keyEvent);
  }
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

@Override
public void keyPressed(KeyEvent e) {
  if (focusedWindow != null) {
    focusedWindow.sendKeyEvent(e.getEventType(), e.getModifiers(),
                  e.getKeyCode(), e.getKeySymbol(), e.getKeyChar());
  }
}

代码示例来源:origin: org.processing/core

protected void nativeKeyEvent(com.jogamp.newt.event.KeyEvent nativeEvent,
               int peAction) {
 int peModifiers = nativeEvent.getModifiers() &
          (InputEvent.SHIFT_MASK |
           InputEvent.CTRL_MASK |
           InputEvent.ALT_MASK);
 short code = nativeEvent.getKeyCode();
 char keyChar;
 int keyCode;
  keyChar = hackToChar(code, nativeEvent.getKeyChar());
 } else {
  keyCode = code;
  keyChar = nativeEvent.getKeyChar();
 KeyEvent ke = new KeyEvent(nativeEvent, nativeEvent.getWhen(),
               peAction, peModifiers,
               keyChar,
               keyCode,
               nativeEvent.isAutoRepeat());
   KeyEvent tke = new KeyEvent(nativeEvent, nativeEvent.getWhen(),
                 KeyEvent.TYPE, peModifiers,
                 keyChar,
                 0,
                 nativeEvent.isAutoRepeat());

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

@Override
public void keyPressed(final KeyEvent e) {
  if( !e.isPrintableKey() || e.isAutoRepeat() ) {
    return;
  }
  if(e.getKeyChar()=='r' && 0==e.getModifiers() && null!=parentWin) {
    e.setConsumed(true);
    glWindow.invokeOnNewThread(null, false, new Runnable() {
      public void run() {
        if(null == glWindow.getParent()) {
          glWindow.reparentWindow(parentWin, -1, -1, 0 /* hints */);
       } else {
          final InsetsImmutable insets = glWindow.getInsets();
          final int x, y;
          if ( 0 >= insets.getTopHeight() ) {
            // fail safe ..
            x = 32;
            y = 32;
          } else {
            x = insets.getLeftWidth();
            y = insets.getTopHeight();
          }
          glWindow.reparentWindow(null, x, y, 0 /* hints */);
          glWindow.setDefaultCloseOperation( glClosable ? WindowClosingMode.DISPOSE_ON_CLOSE : WindowClosingMode.DO_NOTHING_ON_CLOSE );
        }
      } } );
  }
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

@Override
public void keyPressed(final KeyEvent e) {
  if( e.isAutoRepeat() || e.isConsumed() ) {
    return;
  final int keySymbol = e.getKeySymbol();
  switch(keySymbol) {
    case KeyEvent.VK_SPACE:
      e.setConsumed(true);
      glWindow.invokeOnCurrentThread(new Runnable() {
        public void run() {
      break;
    case KeyEvent.VK_A:
      e.setConsumed(true);
      glWindow.invokeOnNewThread(null, false, new Runnable() {
        public void run() {
      break;
    case KeyEvent.VK_B:
      e.setConsumed(true);
      glWindow.invokeOnNewThread(null, false, new Runnable() {
        public void run() {
      break;
    case KeyEvent.VK_C:
      e.setConsumed(true);
      glWindow.invokeOnNewThread(null, false, new Runnable() {
        public void run() {

代码示例来源:origin: com.io7m.jcamera/com.io7m.jcamera.examples.jogl

if ((e.getModifiers() & InputEvent.AUTOREPEAT_MASK) == InputEvent.AUTOREPEAT_MASK) {
 return;
switch (e.getKeyCode()) {

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

@Override
public void keyPressed(final KeyEvent e) {
  if( !e.isPrintableKey() || e.isAutoRepeat() ) {
    return;
  if(e.getKeyChar()=='d') {
    new Thread() {
      public void run() {
        glWindow.setUndecorated(!glWindow.isUndecorated());
      } }.start();
  } if(e.getKeyChar()=='f') {
    new Thread() {
      public void run() {
        glWindow.setFullscreen(!glWindow.isFullscreen());
      } }.start();
  } else if(e.getKeyChar()=='a') {
    new Thread() {
      public void run() {
        glWindow.setAlwaysOnTop(!glWindow.isAlwaysOnTop());
      } }.start();
  } else if(e.getKeyChar()=='r' && null!=parentWin) {
    new Thread() {
      public void run() {
  } else if(e.getKeyChar()=='c') {
    new Thread() {
      public void run() {
        System.err.println("[set pointer-icon post] "+currentPI+" -> "+glWindow.getPointerIcon());
      } }.start();

代码示例来源:origin: nifty-gui/nifty-gui

@Nonnull
private KeyboardInputEvent convert(@Nonnull final KeyEvent e, final boolean isKeyDown, final int keyCode) {
 return new KeyboardInputEvent(keyCode, e.getKeyChar(), isKeyDown, e.isShiftDown(), e.isControlDown());
}

代码示例来源:origin: jzy3d/jzy3d-api

protected java.awt.event.KeyEvent convertEvent(KeyEvent event, int eventId) {
  return new java.awt.event.KeyEvent(source, eventId, event.getWhen(), AWTToNewtUtilities.mask(event), AWTToNewtUtilities.mapKeyCode(event), event.getKeyChar());
}

代码示例来源:origin: ch.unibas.cs.gravis/scalismo-native-stub

throw new InternalError("XXX");
final AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke(evt.getKeyCode(), evt.getModifiers(), onRelease);
boolean suppress = false;
if(null != ks) {
  evt.setConsumed(true);

代码示例来源:origin: nifty-gui/nifty-gui

private void handleKeyEvent(@Nonnull final KeyEvent e, final boolean isKeyDown) {
 keyboardEvents.add(convert(e, isKeyDown, converter.convertToNiftyKeyCode(e.getKeyCode(), e.getKeySymbol())));
}

代码示例来源:origin: com.ardor3d/ardor3d-jogl

@Override
public synchronized void keyReleased(final com.jogamp.newt.event.KeyEvent e) {
  final Key released = fromKeyEventToKey(e);
  _upcomingEvents.add(new KeyEvent(released, KeyState.UP, e.getKeyChar()));
  _pressedList.remove(released);
  if (_consumeEvents) {
    e.setAttachment(NEWTEvent.consumedTag);
    // ignore this event
  }
}

代码示例来源:origin: jzy3d/jzy3d-api

@Override
public void keyReleased(KeyEvent e) {
  switch (e.getKeyChar()) {
  case 's':
    try {
      screenshot(chart, outputFile);
      fireDone(outputFile);
    } catch (IOException e1) {
      fireError(outputFile, e1);
    }
  default:
    break;
  }
}

代码示例来源:origin: jzy3d/jzy3d-api

public void keyPressed(KeyEvent e) {
  if(!e.isShiftDown()){
    Coord2d move = new Coord2d();
    float offset = 0.1f;
    switch(e.getKeyCode()){
    case KeyEvent.VK_DOWN:
      move.y = move.y + offset; rotate( move ); break;
    switch(e.getKeyCode()){

代码示例来源:origin: jzy3d/jzy3d-api

public static int mapKeyCode(KeyEvent event) {
  return jogamp.newt.awt.event.AWTNewtEventFactory.newtKeyCode2AWTKeyCode(event.getKeyCode());
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

protected void consumeKeyEvent(final KeyEvent e) {
  boolean consumedE = false;
  if( null != keyboardFocusHandler && !e.isAutoRepeat() ) {
    consumedE = propagateKeyEvent(e, keyboardFocusHandler);
    if(DEBUG_KEY_EVENT) {
      if( consumedE ) {
        System.err.println("consumeKeyEvent(kfh): "+e+", consumed: "+consumedE);
      }
    }
  }
  if( !consumedE ) {
    for(int i = 0; !consumedE && i < keyListeners.size(); i++ ) {
      consumedE = propagateKeyEvent(e, keyListeners.get(i));
    }
    if(DEBUG_KEY_EVENT) {
      System.err.println("consumeKeyEvent(usr): "+e+", consumed: "+consumedE);
    }
  }
}

代码示例来源:origin: jzy3d/jzy3d-api

public static int mask(com.jogamp.newt.event.KeyEvent event) {
    int newtMods = event.getModifiers();
    int awtMods = 0;
    if ((newtMods & com.jogamp.newt.event.InputEvent.SHIFT_MASK) != 0) {
      awtMods |= java.awt.event.InputEvent.SHIFT_MASK;
    }
    if ((newtMods & com.jogamp.newt.event.InputEvent.CTRL_MASK) != 0) {
      awtMods |= java.awt.event.InputEvent.CTRL_MASK;
    }
    if ((newtMods & com.jogamp.newt.event.InputEvent.META_MASK) != 0) {
      awtMods |= java.awt.event.InputEvent.META_MASK;
    }
    if ((newtMods & com.jogamp.newt.event.InputEvent.ALT_MASK) != 0) {
      awtMods |= java.awt.event.InputEvent.ALT_MASK;
    }
    if ((newtMods & com.jogamp.newt.event.InputEvent.ALT_GRAPH_MASK) != 0) {
      awtMods |= java.awt.event.InputEvent.ALT_GRAPH_MASK;
    }
    return awtMods;
  }
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

public void run() {
    // none:  max-v
    // alt:   max-h
    // shift: max-hv
    // ctrl:  max-off
    final boolean horz, vert;
    if( e.isControlDown() ) {
      horz = false;
      vert = false;
    } else if( e.isShiftDown() ) {
      final boolean bothMax = glWindow.isMaximizedHorz() && glWindow.isMaximizedVert();
      horz = !bothMax;
      vert = !bothMax;
    } else if( !e.isAltDown() ) {
      horz = glWindow.isMaximizedHorz();
      vert = !glWindow.isMaximizedVert();
    } else if( e.isAltDown() ) {
      horz = !glWindow.isMaximizedHorz();
      vert = glWindow.isMaximizedVert();
    } else {
      vert = glWindow.isMaximizedVert();
      horz = glWindow.isMaximizedHorz();
    }
    printlnState("[set maximize pre]", "max[vert "+vert+", horz "+horz+"]");
    glWindow.setMaximized(horz, vert);
    printlnState("[set maximize post]", "max[vert "+vert+", horz "+horz+"]");
  } } );
break;

代码示例来源:origin: com.ardor3d/ardor3d-jogl

/**
 * Convert from NEWT key event to Ardor3D Key. Override to provide additional or custom behavior.
 * 
 * @param e
 *            the NEWT KeyEvent received by the input system.
 * @return an Ardor3D Key, to be forwarded to the Predicate/Trigger system.
 */
public synchronized Key fromKeyEventToKey(final com.jogamp.newt.event.KeyEvent e) {
  return JoglNewtKey.findByCode(e.getKeySymbol());
}

代码示例来源:origin: org.jogamp.jogl/jogl-all-noawt

public void run() {
    final float newGamma = gamma + ( e.isShiftDown() ? -0.1f : 0.1f );
    System.err.println("[set gamma]: "+gamma+" -> "+newGamma);
    if( Gamma.setDisplayGamma(glWindow, newGamma, brightness, contrast) ) {
      gamma = newGamma;
    }
  } } );
break;

相关文章