How to receive a keyboard event (arrowkeys)

Hi,
I'm a bit confused about how to setup event-handling for keyboard event. I have created a window with a File's Owner called "MyDocument". But if I implement the method
<pre>
-(void)sendEvent: (NSEvent *)theEvent {
printf("Called\n");
</pre>
it wont be called. Does anyone know what else I have to do in order to receive keyboard events when a user presses an arrowkey inside my application ?
Macbook Pro 15''   Mac OS X (10.4.8)   2GHz, 2GB

You most likely need to implement -(void)keyDown:(NSEvent *)event to catch keyboard events and then query event for the key pressed. This method is defined in NSResponder together with mouseDown:, mouseDragged, keyUp:, etc.
Here's a couple of examples from two sample apps:
'Dicey' (online sample code):
<pre>
-(void)keyDown:(NSEvent *)event {
// If the space bar was pressed, toggle hold on the first responder
if ([[event characters] isEqualToString:@" "]) {
[[dice objectAtIndex:firstResponderIndex] toggleHold];
[self setNeedsDisplay:YES];
} else {
// We do care about our superclass dealing with tab shift-tab for first responder changes
[super keyDown: event];
</pre>
'Worm' (From: /Developer/Examples/AppKit/Worm):
<pre>
- (void)keyDown:(NSEvent *)event {
NSString *keys = [event charactersIgnoringModifiers];
wormHeading = kGameHeadingStraight;
if (keys && [keys length] > 0) {
unichar c = [keys characterAtIndex:0];
if (c == NSLeftArrowFunctionKey) {
wormHeading = kGameHeadingLeft;
} else if (c == NSRightArrowFunctionKey) {
wormHeading = kGameHeadingRight;
</pre>
Note the use of NSLeftArrowFunctionKey for example in Worm. These and many other 'special' key constants are defined in NSEvent.

Similar Messages

  • How to receive the custom event in the listening portlet (No backing file)

    I have couple of portlets (JPF based). Portlet A is firing an event
         public Forward processAction()
              PortletBackingContext context =PortletBackingContext.getPortletBackingContext(this.getRequest());
              String message = "XXXXX";
              context.fireCustomEvent("customevent", message);
              Forward forward = new Forward("success");
              return forward;
    I have configured the Portlet B's eventhandler to listen for the 'customEvent' and invoke the pageFlowAction 'listenForEvent'
         @Jpf.Action(forwards = { @Jpf.Forward(name = "success", path = "test2.jsp") })
         public Forward listenForEvent() {
              Forward forward = new Forward("success");
              return forward;
    Portlet B's method listenForEvent is indeed getting invoked, but is there a way I can retrieve the 'Event' object (as fired by Portlet A) inside the listenForEvent. I could have done this via the Backing file, but for some reasons i cann't use the backing file. Is there a way i can get the CustomEvent and the associated payload in my listening JPF portlet, without a backing file?
    The WLP version is 10.3

    Hello,
    I originally said:
    All you should need to do is to modify the method signature for your event-receiving method. The method signature should be:
    public void listenforEvent(HttpServletRequest request, HttpServletResponse response, Event event)
    where Event is a com.bea.netuix.events.Event object. You can then cast this to a CustomEvent object.
    But I mis-read your earlier post about catching the custom event and invoking a pageflow action. When you do that, you will lose the custom event's payload (your message), and there is no way to retrieve it from your pageflow action.
    The only way you can actually retrieve the event's payload is using a backing file for the portlet, with a method having the signature I mentioned above. You can then set a request attribute with the event's payload and still have it invoke the pageflow action, at which time you could retrieve the request attribute value-- assuming you don't need to run this portlet over WSRP. Over WSRP, the event-handling and pageflow action-invoking lifecycles will happen with independent request objects, so you would need to store the event payload in session to work over WSRP.
    Kevin
    Edited by: kfrender on Aug 31, 2009 3:34 PM

  • How to set a keyboard event, which can response to dropdown list?

    Hi every one
    Can you set a keyboard keydown event for select the dropdown list item?
    Thanks
    Regard
    John
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    var
      w = new Window('dialog {orientation: "row", alignChildren: ["", "top"]}',"Indesign Tricks Wizard_Beta_V3", undefined, {closeButton: false}),  
      stringList = ["01   Close and SAVED",                                                        //       0
            "02   Close WITHOUT save",                                                   //       1
            "03   Save all files",                                                                //       2
            "04   Reverse",                                                                        //       3
            "-",                                                                                          //       4
            "05   Remove empty pages",                                                  //       5
            "-",                                                                                          //       6
            "06   Update years on Master in all opening Doc",               //       7
            "07   Years + 1 in Specific cells",                                          //       8
            "08   Copy and paste to Next Master",                                 //       9
            "-",                                                                                         //       10
            "09   Bring Styles and Swatches to next Doc",                      //       11
            "10   DEL and Replace Color",                                               //       12
            "11   Remove unused color",                                                 //       13
            "-",                                                                                         //       14
            "12   Remove missing link in all open files",                         //       15
            "13   Remove layer and missing link ",                                  //       16
            "14   Batch import styles from source document",               //       17
            "-",                                                                                         //       18
            "15   Gen Revised PDF",                                                        //       19
            "16   Report empty return at top",                                       //       20
            "17   Find-Change Paragraph Names",                                //       21
            "-",                                                                                         //       22
            "18   Break link from story",                                                //       23
            "19   Joint link to story",                                                       //       24
            "20   Extract pages",                                                            //       25
            "21   Joint text fame together",                                           //       26
            "22   Resize selected text"],                                                //       27
      mReminderString = "\"Batch import styles from source document\" usually cause indents problem.",
      lastSelected = Number(app.extractLabel("dialogWizard") ),
      p = w.add("panel", undefined, "Choose a job to do:"),
      s = p.add("group"),
      mDD = p.add("dropdownlist", undefined, stringList),
      mRem = p.add("statictext", undefined, mReminderString, {multiline: true} ),
      b = w.add('group {orientation: "column"}');
         mDD.preferredSize = [320,20];
         mRem.preferredSize = [320,30]; // set reminder height as 20 * line count (here 2 lines)
         if ( !lastSelected ) mDD.items[0].selected = true;
         else mDD.items[lastSelected].selected = true;
    // |||||||||||||||||||||||||||||||||||||||||||||||| modify reminder font here |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
             w.graphics.backgroundColor = w.graphics.newBrush (w.graphics.BrushType.SOLID_COLOR, [1, 0.26, 0.2]);
         mRem.alignment = "left";
         mRem.graphics.font = ScriptUI.newFont ("Arial", "Bold", 11);
         mRem.graphics.foregroundColor = mRem.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [1, 1, 1], 1);
         p.graphics.font = ScriptUI.newFont ("Arial", "Bold", 10);
         p.graphics.foregroundColor = mRem.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [1, 1, 1], 1);
         mDD.graphics.font = ScriptUI.newFont ("Arial", "Bold", 11);
         mDD.graphics.foregroundColor = mRem.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [1, 0.26, 0.2], 1);
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
            var myIcon = "";
            var ib = b.add ('iconbutton', undefined, myIcon);
                  ib.onClick = function() {
                         w.close(1);
            w.addEventListener ("keydown", function(k) {if (k.keyName == "Enter") w.close(1);})
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
            b.add ('button', undefined, "取り消す", {name: "Cancel"}); 
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
    w.show();
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Hi Peter
    look into script as below:
    //======================================================================================== =======================================================
    var
      w = new Window('dialog {orientation: "row", alignChildren: ["", "top"]}',"Indesign Tricks Wizard_Beta_V3", undefined, {closeButton: false}),  
      stringList = ["01   Close and SAVED",                                                        //       0
            "02   Close WITHOUT save",                                                   //       1
            "03   Save all files",                                                                //       2
            "04   Reverse",                                                                        //       3
            "-",                                                                                          //       4
            "05   Remove empty pages",                                                  //       5
            "-",                                                                                          //       6
            "06   Update years on Master in all opening Doc",               //       7
            "07   Years + 1 in Specific cells",                                          //       8
            "08   Copy and paste to Next Master",                                 //       9
            "-",                                                                                         //       10
            "09   Bring Styles and Swatches to next Doc",                      //       11
            "10   DEL and Replace Color",                                               //       12
            "11   Remove unused color",                                                 //       13
            "-",                                                                                         //       14
            "12   Remove missing link in all open files",                         //       15
            "13   Remove layer and missing link ",                                  //       16
            "14   Batch import styles from source document",               //       17
            "-",                                                                                         //       18
            "15   Gen Revised PDF",                                                        //       19
            "16   Report empty return at top",                                       //       20
            "17   Find-Change Paragraph Names",                                //       21
            "-",                                                                                         //       22
            "18   Break link from story",                                                //       23
            "19   Joint link to story",                                                       //       24
            "20   Extract pages",                                                            //       25
            "21   Joint text fame together",                                           //       26
            "22   Resize selected text"],                                                //       27
      mReminderString = "\"Batch import styles from source document\" usually cause indents problem.",
      lastSelected = Number(app.extractLabel("dialogWizard") ),
      p = w.add("panel", undefined, "Choose a job to do:"),
      s = p.add("group"),
      mDD = p.add("dropdownlist", undefined, stringList),
      mRem = p.add("statictext", undefined, mReminderString, {multiline: true} ),
      b = w.add('group {orientation: "column"}');
         mDD.preferredSize = [320,20];
         mRem.preferredSize = [320,30]; // set reminder height as 20 * line count (here 2 lines)
         if ( !lastSelected ) mDD.items[0].selected = true;
         else mDD.items[lastSelected].selected = true;
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
                mDD.active = true;                 //this syntax work in PC, but not work in MAC
                mDD.addEventListener ("keydown", function (k)
                        k = k.keyName.toLowerCase();
                                var i = 0;
                                        while (i < numbers.length-1 && numbers[i].charAt(0).toLowerCase() != k)
                                                   {++i;}
                                                if (numbers[i].charAt(0).toLowerCase() == k)
                                                                mDD.selection = i;
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
    // |||||||||||||||||||||||||||||||||||||||||||||||| modify reminder font here |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
             w.graphics.backgroundColor = w.graphics.newBrush (w.graphics.BrushType.SOLID_COLOR, [1, 0.26, 0.2]);
         mRem.alignment = "left";
         mRem.graphics.font = ScriptUI.newFont ("Arial", "Bold", 11);
         mRem.graphics.foregroundColor = mRem.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [1, 1, 1], 1);
         p.graphics.font = ScriptUI.newFont ("Arial", "Bold", 10);
         p.graphics.foregroundColor = mRem.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [1, 1, 1], 1);
         mDD.graphics.font = ScriptUI.newFont ("Arial", "Bold", 11);
         mDD.graphics.foregroundColor = mRem.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [1, 0.26, 0.2], 1);
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
            var myIcon = ""
            var ib = b.add ('iconbutton', undefined, myIcon);
                  ib.onClick = function() {
                         w.close(1);
            w.addEventListener ("keydown", function(k) {if (k.keyName == "Enter") w.close(1);})
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
            b.add ('button', undefined, "取り消す", {name: "Cancel"}); 
    // ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
    w.show();
    //======================================================================================== =======================================================
    Thank you
    Regard
    John

  • Keyboard Events in Training record

    Hello all
    How can I record keyboard events such as Ctrl+Z to Undo and Shift+ Click to select multiple items in training mode.
    Users have to do this action to countinue slides.
    appreciate you.

    Hi there,
    If you are recording in Training mode then by default Captivate should include click boxes in your slides. You can assign keyboard shortcuts to those click boxes by carrying out the following steps:
    1. Double-click on one of your Click Boxes.
    2. In the Click Box section of the dialog box click the Select Keys... button.
    3. Select the option Attach a shortcut
    4. To perform an Undo choose Ctrl and then from the Letter menu choose
    Note: To get the learner to Shift + Click, select the option SHIFT
    5. Click OK to Close the Shortkey dialog box.
    To simulate an Undo you would then need to branch to a slide where the original action was performed. Here you can either use the On success options Go to Previous Slide or Jump to Slide and then specify the slide number.
    As for simulating selecting multiple items, again you would carry out similar steps. Depending on how your project has been setup you would either set the On success action to Continue or to  Go to next slide.
    The way I tend to work is that I have each of items I want to select on separate slides and then add a click box with the keyboard shortcut Shift attached. When the learner clicks on the first click box I then move to the next slide and so on. Naturally, this does not account for allowing the learner to randomly select the items. To accomplish that, you would need to set up some pretty complex branching.
    HTH
    Best - Mark
    Visit the macrofireball blog

  • Capture keyboard events using c# in SBO

    How do I capture keyboard events(especially those with Control like CTRL-R) in SBO using C#??

    Payal,
    You will want to look at the UI API Help in the SDK Help Center and specifically look at the "SendKeys" method.  This will allow you to send keyboard key strokes to the UI.
    Your post is related to the Business One SDK.  That forum for questions and answers for the Business One SDK is located on the SAP Business One page on SDN and then under the SAP Business One Discussion Forum.  This forum is for the SAP Business One Integration Technology.
    HTH,
    Eddy

  • SWT_AWT mouse/keyboard event trouble

    Hello everyone,
    I have created an ActiveX Component with Visual C++ that uses a WEmbeddedFrame to contain a Swing based GUI. I have copied the code from the SWT_AWT class in the SWT toolkit and it worked fine up to JDK 1.5.0_03.
    Starting with JDK 1.5.0_04 the Swing GUI does no longer receive Mouse/keyboard events.
    I have read through all available material concerning this problem and I have tried the two possible solutions that these documents suggest:
    - called addNotify() on the embedded frame
    - inserted a heavyweight container (java.awt.Panel) between Embedded Frame and the Swing GUI
    However, no luck. The GUI displays fine but does not respond to user actions.
    Does anybody have an idea what might have changed from 1.5.0_03 to 1.5.0_04, that could help me solve this puzzle?
    Thank you very much in advance,
    Helmut

    SWT works up to 1 tree and two text components only. If you have more than that, you windows will get tainted. Basically it's useless to wirte any useful programs for Windows. You never get comaptible latest look from it both mac and windows. Don't waste time for learning it. You better spend time for learning other things. If AWT/Swing is not good enough, learn native languages such as Visual C++/Basic! I have to say SWT wasn't meant to give us better programming platform!

  • Linux - simulate keyboard event

    Hi,
    can any one tell me how to simulate a Keyboard event such as escape in Linux ? i am using kernel 2.4.x
    i found it can be done in windows using WinAPI calls! ..but i need do in LINUX ...any help is appretiated
    thanks
    madhan

    Hi Madhan,
    I think you’ll want to use the ‘expect’ command in Linux for this. Do a ‘man expect’ in your shell or refer to this page: http://www.linuxforum.com/man/expect.1.php for information.
    Hope this helps!
    Kileen

  • Send a keyboard event from labview to C#

    Hi,
    We currently have a program in c# that takes keyboard inputs from a user and will fly a quadrotor. We aim to have a LabView .vi generate keyboard commands based on our experiment and send the commands to the c# code creating a feedback loop where the .vi will keep track of sensor and experimental data.
    Our problem is that we have tried many different methods to send the keyboard commands in LabView. 
    1) http://zone.ni.com/devzone/cda/epd/p/id/3711
    2) http://forums.ni.com/t5/LabVIEW/Send-keyboard-commands-to-another-windows-program/td-p/330670/page/2
    as well as other variations and similar .vi's that do the same thing. Here is an example of a .vi used to press the letter "t" once.
    http://i.imgur.com/hwmjZ.png
    All of them can write the string to a text (open notepad put cursor in blank window) file but none can do it in such a way that it is detected by the c# code. On my own I can open and run the c# code and press keyboard buttons myself and the commands are recognized, so I think it could be an issue with how LabView sends the keyboard events and how c# reads them. Here is the c# code segment that we are using to read the input commands:
    public override List<String> GetPressedButtons()
              KeyboardState state = device.GetCurrentKeyboardState();
              List<String> buttonsPressed = new List<String>();
              foreach (Key key in Enum.GetValues(typeof(Key)))
                        if (state[key])
                                  if (!buttonsPressed.Contains(key.ToString()))
                                            buttonsPressed.Add(key.ToString());
              return buttonsPressed;
    Can anyone help trying to figure out why using the keybd_event function in LabView can not interface correctly with the above detection code in c#? I can provide any code and clarification if you think it can be helpful.
    Thanks,
    Andy

    Hi,
    I can't say with certainty where the problem is or even how many there are. I do know that the KeyboardListener.cs class should work according to what I have read online. I also know that if I press the keyboard myself then the state is changed and the correct action is taken. If I try to issue an event from Labview then the event is not captured. Here is the code, it is rather large ~20 MB.
    https://www.dropbox.com/s/vsvcje1ro364otu/ARDrone.zip
    https://www.dropbox.com/s/p3h3tj8bcqc29gk/Forward_backward0924.vi
    The key listener is in ARDroneInput>Utils>KeyboardListener.cs and the polling takes place in ARDroneInput>KeyboardInput.cs
    The reason I wanted to use keyboard inputs is because the quadrotor we are using takes keyboard commands W,A,S,D,T and L. Initially I thought having Labview issue these commands would be the simplest method. That may not be the case.
    I was just thinking that it is not necessary that key events are sent from Labview. Instead, one could send an array representing the frequency of each button press rather than the button press directly. In that case an array that is updated continuously from Labview will just have to be kept track of in the C# code. The C# can then convert that to whatever control input we want. Can it be easier to send a vector of numbers in real time to C#?
    If you think it is better to establish a connection between Labview and C# using .NET to send keyboard commands (rather than the vector idea above) can you explain that a little more? How does one go about doing that? If you think the vector idea is simpler how should the interface be set-up?
    I just talked with my collegue and we think that maintaing a .txt file in Labview and having C# read it is the best option. We will begin working on that and will update you tomorrow.
    Thanks,
    Andy 

  • How to make editing cell to show up caret and taking keyboard event

    Hello everyone:
    I have the following problem with table editing.
    1. using mouse clicking, the editing cell will have cursor and taking keyboard event.(no problem with it)
    2. just type in data, it will show up in the selected cell, but the editing cell do not have cursor visible and also do not fire the keyboard event.
    I have problem with this one. So how to make editing cell to have caret visible and taking keyboard event.
    Thank you very much!
    --tony                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Hi,
    you should subclass JTable and overwrite two methods.
    1. protected boolean processKeyBinding(javax.swing.KeyStroke ks,
    java.awt.event.KeyEvent e,
    int condition,
    boolean pressed)
    to store the current keyboard event,
    2.public boolean editCellAt(int row,int column,java.util.EventObject e)
    to fix the problem with isCellEditable and curret position and direct the event into proper place.

  • How to receive a mail when an error is logged in event log

    Hi,
    How to receive a mail automatically when an error is logged in event log?
    I tried the steps in the below link but still i am not able to receive the mail.
    http://blogs.iis.net/rickbarber/archive/2012/10/26/send-an-email-when-an-event-is-logged.aspx
    Thanks,

    Hi,
    The steps are correct so as Dai said you may need to check your SMTP server. Any error or event received related to SMTP server?
    Another related article for setup email notification:
    http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event-log-trigger.aspx
    If you have any feedback on our support, please send to [email protected]

  • How JTextArea may receive System.out events?

    Dear JDevelopers,
    How JTextArea may receive System.out events?
    It's only have append method which receive string as input parameter.
    I want to create GUI application which will show loggin which, by default, directed into System.out, but I want to redirect it in JTextArea.
    How can I implement it easy? I don't want to write listeners and events.

    Swing related questions should be posted in the Swing forum. Search the forum other discussions on this topic. You can start by using "setOut" as a keyword. You may want add "console" as a second keyword to the narrow the search.

  • Using iCal and I have received a meeting event and wish to forward it to another colleague ...how do i do this  - thanks

    I am using iCal and I have received a meeting event and wish to forward it to a colleague - how do I do this ??

    Can you also try using the Save as option from with in the Reader plugin when you are viewing the PDF in Browser. The save as button is available on the HUD shown when PDF is opened in browser and you bring the mouse pointer to bottom-center position. Please refer the following screenshot:
    If you are viewing the PDF file in classic mode, the save as button is located as shown below:
    Please let us know if this workaround resolves the issue that you are facing.
    Regards,
    Shashi

  • How to Listen keyboard event

    I know we can capture the events triggerd from indesign to extension e.g. 'attributeChange', 'documentOpen' etc. But I really don't know If we could capture keyboard events also in Extension palette, fired from InDesign CS6. Which is my current requirement.
    Can some one put some light on this ?
    Thanks
    Mac

    How did u manage to get the events like "documentOpen" worked. Can you share ? And for the keyboard events i guess you can capture using Flash API , but the focus have to be in your extension.

  • No keyboard Events on a Window

    Hello Java community,
    I can't understand why, if you build a simple Window (not a Frame), all keyboard Events are simply ignored !! Everything acts as if the Window can't get the focus, because no LOST_ or GOT_ FOCUS events are triggered. This means that you can't handle keyboard events with a Window and therefore a Textfield will not work (however it still receive mouse events ??). BUT it perfectly works with a Frame , which extends from Window! Strange isn't it ?
    I've heard on other forums that , to be eligible for focus a Window must have:
    - its owner Frame (the one given in the constructor) :
    * displayed on screen,
    * containing a focusable component.
    - itself, containing a focusable component.
    thus i respect theses limitations, i still can't get any keyboard events
    pleaze help, i am writing a text area component and without keyboard events ...

    Thanks for the answers BUT,
    I have already read the javadoc in every ways and I am sure I respect perfectly all the conditions to have my WINDOW focusable.
    No, there is another problem, a strange one. In fact, my program works fine under Windows I can type characters into my Textfields but once executed under Linux : no keyboard events! Therefore, no character type allowed. I display in the console, all events that are incomming into my Window, and ALL events are ok (mouse, windows..) except keyboards ones. When I press a key, nothing appears in my console, that's why I think keyboards events are caught and not dispatched to the Window.
    I noticed an interresting fact when using my app in Applet. For example, I launched my application with Mozilla (Netscape 4, JRE 1.1). I displayed an empty Window on screen, when my mouse passes over it or when I click, the Java console showed me these events. When I try to hit some keyboard keys, nothing except for certain keys such as F, G, D, J and numeric keys. In fact, these keys are shortcuts to some of the System class (F calls Finalization, G=Garbage Collector, D=Debug Mode...). I truely think that on a Window, all keyboard events are send to the console. Another fact that proved me that i was right : I tried my app with JRE 1.2, and when I wanted to type characters into my TextField (which is on my Window), the typed characters appeared in the console !!!!
    A JAVA-experimented person told me to redirect the standard input to my own inputStream... but how ?
    Any ideas of solutions ?

  • Getting keyboard events with Group

    Hi all,
    I'm new to JavaFX and I'm trying to handle keyboard events in a group but it doesn't seem to respond when I press the keyboard.
    As I understand this is because Group doesn't receive the focus. If that is the case, how can I make it receive focus? I tried calling setFocusTraversable(true) and setFocused(true) but both haven't helped.
    If it's not the focus, what is it?
    Thanks!

    Use requestFocus() instead of  setFocused(true).
    Keyboards events work as expected  with a group.
    @Override
        public void start(Stage primaryStage) {
            Button btn = new Button();
            btn.setText("Say 'Hello World'");
            Group root = new Group();
            root.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
                public void handle(KeyEvent event) {
                    System.out.println(event.getCode());
                    event.consume();
            root.getChildren().add(btn);
            Scene scene = new Scene(root, 300, 250);
            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
            root.requestFocus();

Maybe you are looking for