Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6253172
Votes 1
Synopsis Some key characters on none US keyboard cannot be typed since JDK 1.4
Category java:classes_awt
Reported Against 5.0 , b09
Release Fixed 7(b29), 6u10(b24) (Bug ID:2161759)
State 10-Fix Delivered, bug
Priority: 2-High
Related Bugs 6329860 , 6353098 , 6371251 , 6496655 , 6613667 , 6637412
Submit Date 11-APR-2005
Description
Since JDK 1.4.0 it is not possible to type some French characters - ÀÈÌÒÙàèìòù. These are characters AEIOUaeiou with accents (oriented backwards). It is not possible to type these characters in demo/jfc/Notepad, while it works in any non-java Windows application. To write such character you need to change the keyboard to French (Belgium) with layout Belgium (Comma). For À press Alt-Gr | and Shift-Q. The | character is the one below backspace key.

I have tested several 1.5.* and 1.4.* JDKs and it doesn't work there. It works ok under JDKs 1.3.1_15-b01 and 1.3.1_05-b02.

For more details see  xxxxx  issue:
http://www.netbeans.org/issues/show_bug.cgi?id=57628
  xxxxx@xxxxx   2005-04-11 11:42:06 GMT
There is a Linux part in this CR: I even not exactly understand what's wrong; "a grave problem" is not reproducible under X Window, XAWT. 

Under Windows 200 it's reproducible with Swing and pure AWT alike.
Posted Date : 2005-09-27 10:45:18.0
Work Around
Alt-Gr (in my case right Alt) Shift ['|' '\'] + Shift-Q 

types the expected character
Evaluation
Could you run this test case?

-- JEP.java (from bugId 5084236)
---------- BEGIN SOURCE ----------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class JEP {
    
    public static void main(String args[]) {
        JEditorPane pane = new JEditorPane();

        //    pane.enableInputMethods(false);

        JFrame f = new JFrame();
        f.addWindowListener (new WindowAdapter () {
          public void windowClosing (WindowEvent evt) {
            System.exit(0);
          }
        });
    
        f.getContentPane().add(pane);
        f.setSize(500, 500);
        f.setVisible(true);

        // Key listener that debugs the key events
        // being sent to the pane
        pane.addKeyListener(
            new KeyListener() {
                public void keyPressed(KeyEvent e) {
                    debugKeyEvent(e);
                }
                
                public void keyReleased(KeyEvent e) {
                    debugKeyEvent(e);
                }
                
                public void keyTyped(KeyEvent e) {
                    debugKeyEvent(e);
                }
            }
        );

        pane.addMouseListener(
            new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    debugMouseEvent(e);
                }

                public void mousePressed(MouseEvent e) {
                    debugMouseEvent(e);
                }

                public void mouseReleased(MouseEvent e) {
                    debugMouseEvent(e);
                }
            }
        );
            
        
    }

    private static void debugKeyEvent(KeyEvent e) {
        System.err.println(e);
        System.err.println("--------------------------------------------------------------------------------");
    }

    private static void debugMouseEvent(MouseEvent e) {
        System.err.println(e);
        
        // Append BUTTONx modifiers
        int modifiers = e.getModifiers();
        StringBuffer sb = new StringBuffer();
        if ((modifiers & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
            sb.append("BUTTON1_MASK");
        }
        if ((modifiers & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK) {
            if (sb.length() > 0) {
                sb.append(" | ");
            }
            sb.append("BUTTON2_MASK");
        }
        if ((modifiers & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) {
            if (sb.length() > 0) {
                sb.append(" | ");
            }
            sb.append("BUTTON3_MASK");
        }
        System.err.println("Button masks: " + sb.toString());
        
        // Append SwingUtilities.isXXXButton() results:
        System.err.println("SwingUtilities.isLeftMouseButton()=" + SwingUtilities.isLeftMouseButton(e));
        System.err.println("SwingUtilities.isMiddleMouseButton()=" + SwingUtilities.isMiddleMouseButton(e));
        System.err.println("SwingUtilities.isRightMouseButton()=" + SwingUtilities.isRightMouseButton(e));
        
        System.err.println("--------------------------------------------------------------------------------");
    }
    
}
---------- END SOURCE ----------

If the problem is reproducible can I have the debug output?
Posted Date : 2005-08-29 21:21:12.0

On my keyboard '|' is upper register. The low register for this keyboard key is '\'.
Let me call this keyboard key - ['|' '\']

Alt-Gr (in my case right Alt) Shift ['|' '\'] + Shift-Q 

types the expected character

Alt-Gr ['|' '\'] + Shift-Q 

does not type it

windows applications type À in both cases. 

Reassigning  to awt for the investigation.
Posted Date : 2005-09-09 17:14:32.0

Under Windows 2000 it's reproducible with Swing and pure AWT alike.
On a Linux part a separate bug filed as they seems unrelated.
Posted Date : 2005-09-28 11:42:56.0

Bug was introduced with a fix to 4623376,4737679,4501485,4740906,4708221 (4173679/4122715) in awt_Component.cpp. We should apply this fix to navigation keys only thus restoring AltGr functionality.
Posted Date : 2008-04-24 09:28:16.0
Comments
  
  Include a link with my name & email   

Submitted On 24-JUL-2008
Bug also appears with Solaris 2008 05, Netbeans 6.1 and JDK 1.5.0_14



PLEASE NOTE: JDK6 is formerly known as Project Mustang