本文整理了Java中com.jogamp.newt.event.KeyEvent
类的一些代码示例,展示了KeyEvent
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。KeyEvent
类的具体详情如下:
包路径:com.jogamp.newt.event.KeyEvent
类名称:KeyEvent
[英][
](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.
[
](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.
[
](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
[中][
](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()位。
[
](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值冲突,但以下情况除外。
[
](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;
内容来源于网络,如有侵权,请联系作者删除!