Ação pelo teclado só funciona focado

Estou iniciando em Java e estou quebrando a cabeça para criar ações por teclas pressionadas no teclado (atalho), estou usandoWindow Builder do eclipse que tem a ação KeyPressed/keyReleased, através do código

btnNewButton.addKeyListener(new KeyAdapter() {
		@Override
		public void keyReleased(KeyEvent e) {
			if (e.getKeyCode() == KeyEvent.VK_DELETE) {
               
                System.out.println("Delete" Pressed");
            }
		}
	});`

Funciona porém o botão deve estar focado, dando mais uma vasculhada testei o seguinte:

btnNewButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK), "evento");
	btnNewButton.getActionMap().put("evento", new AbstractAction(){
         @Override
         public void actionPerformed(ActionEvent e){	            
        	 System.out.println("test");
         }
      });

usando o código no meu programa principal o mesmo problema acontece, só funciona com o botão btnNewButton focado porém criando uma classe, Jframe e botões novos funciona.
Pelo que entendi pelo JComponent.WHEN_IN_FOCUSED_WINDOW deveria funcionar sem foco mas realmente ainda não funciona.

Alguém poderia me ajudar com isto por favor?

.addKeyListener vai funcionar apenas se tiver foco no botão, ele adiciona o keyListener apenas para o componente que você escolher.

KeyboardFocusManager.getCurrentKeyboardFocusManager()
  .addKeyEventDispatcher(new KeyEventDispatcher() {
      @Override
      public boolean dispatchKeyEvent(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_DELETE) {
            System.out.println("Delete Pressed");
        }
        return false;
      }
});

isso deve funcionar, mas como não sou nenhum especialista em Swing acredito que isso irá se aplicar para todos os frames da aplicação.

Muito obrigado Getulio, vou testar aqui!