Я только что попробовал это на консоли Mac, и у моего Java-приложения больше нет ключевой проблемы.

ействительно странная проблема, но у меня есть простой keyListener, добавленный в JPanel, который печатает на keyPressed и keyReleased. Обычно это работает нормально, но на некоторых клавишах, таких как «A», если я нажимаю и удерживаю перед отпусканием, никакие другие клавиши не будут запускать нажатые клавиши после этого выпуска, пока я не нажму и не удерживаю на некоторых клавишах, таких как «D». После этого все возвращается на круги своя, если я не нажму "плохую" клавишу и не удержу ее слишком долго.

И последнее замечание: keyReleased ВСЕГДА срабатывает должным образом, это просто нажатие клавиши, которая не срабатывает.

РЕДАКТИРОВАТЬ 2: я упростил код до следующего, и он по-прежнему ведет себя, как описано выше:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        frame.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {

            }

            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println("Pressed");
            }

            @Override
            public void keyReleased(KeyEvent e) {
                System.out.println("Released");
            }

        });
    }
}

РЕДАКТИРОВАТЬ: извлечение кода:

JFrame frame = new JFrame("test");
frame.setSize(WIDTH, HEIGHT);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setResizable(false);

JLayeredPane panel = new JLayeredPane();
panel.setBounds(0, 0, WIDTH, HEIGHT);
panel.setLayout(null);


frame.add(panel);
KeyListener listener = new KeyListener() {

    public void keyTyped(KeyEvent e) {
        System.out.println("typed: "+e.getKeyCode());
    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("pressed: "+e.getKeyCode());
    }

    @Override
    public void keyReleased(KeyEvent e) {
        System.out.println("released: "+e.getKeyCode());
        System.out.println();
    }

};
panel.addKeyListener(listener);
frame.addKeyListener(listener);
frame.setVisible(true);

Ответы на вопрос(4)

Ваш ответ на вопрос