[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[platform-swt-dev] KeyEvent.character
|
Regarding this snippet
http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/sn
ippits/snippet25.html
(See at the bottom of the message for the code itself)
Why do I get this output when I press CTRL+something?
I pressed
CTRL + A
CTRL + B
CTRL + P
And got
DOWN: stateMask=0x0, keyCode=0x40000, character=0x0 '\0'
DOWN: stateMask=0x40000 CTRL, keyCode=0x0, character=0x1 ''
UP : stateMask=0x40000 CTRL, keyCode=0x0, character=0x1 ''
DOWN: stateMask=0x40000 CTRL, keyCode=0x0, character=0x2 ''
UP : stateMask=0x40000 CTRL, keyCode=0x0, character=0x2 ''
DOWN: stateMask=0x40000 CTRL, keyCode=0x0, character=0x10 '' UP :
stateMask=0x40000 CTRL, keyCode=0x0, character=0x10 '' UP :
stateMask=0x40000 CTRL, keyCode=0x40000, character=0x0 '\0'
If I press
ALT + A
ALT + B
ALT + P
I can see the character
DOWN: stateMask=0x0, keyCode=0x10000, character=0x0 '\0'
UP : stateMask=0x10000 ALT, keyCode=0x0, character=0x61 'a'
UP : stateMask=0x10000 ALT, keyCode=0x0, character=0x62 'b'
UP : stateMask=0x10000 ALT, keyCode=0x0, character=0x70 'p'
UP : stateMask=0x10000 ALT, keyCode=0x10000, character=0x0 '\0'
Moreover the javadoc and the code sais e.character is a char but
This: Integer.toHexString (e.character) works? Are char and int
interchangeable?
I have to do this to check if the cey combination is CTRL + A
If((e.character == (int) 'a' - 96) && (e.stateMask == SWT.ALT))
// it's CTRL + a
Can anybody explain me why doesn't pressing CTRL + key work the same and
with ALT + key or SHIFT + KEY?
Thanks....
(Im working on winXP, but our target platform in pocketpc with windows.)
----- S N I P P E T -----
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class Main {
public static void main (String [] args) {
Display display = new Display ();
Shell shell = new Shell (display);
Listener listener = new Listener() {
public void handleEvent(Event e) {
String string = e.type == SWT.KeyDown ? "DOWN" :
"UP ";
string += ": stateMask=0x" +
Integer.toHexString(e.stateMask);
if ((e.stateMask & SWT.CTRL) != 0) string += "
CTRL";
if ((e.stateMask & SWT.ALT) != 0) string += "
ALT";
if ((e.stateMask & SWT.SHIFT) != 0) string += "
SHIFT";
if ((e.stateMask & SWT.COMMAND) != 0) string +=
" COMMAND";
string += ", keyCode=0x" + Integer.toHexString
(e.keyCode);
string += ", character=0x" + Integer.toHexString
(e.character);
switch (e.character) {
case 0: string += "
'\\0'"; break;
case SWT.BS: string += " '\\b'";
break;
case SWT.CR: string += " '\\r'";
break;
case SWT.DEL: string += " DEL"; break;
case SWT.ESC: string += " ESC"; break;
case SWT.LF: string += " '\\n'";
break;
case SWT.TAB: string += " '\\t'";
break;
default: string += " '" +
e.character +"'"; break;
}
System.out.println (string);
}
};
shell.addListener(SWT.KeyDown, listener);
shell.addListener(SWT.KeyUp, listener);
shell.setSize (200, 200);
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
}