Das Ganze an den Button zu hängen, ist eh nicht gut, da er ja eben wie du es gerne hättest, NICHT den Fokus kriegen soll.
D.h. dein Fenster soll auf den Knopfdruck reagieren und nicht der Button.
Input- und Actionmap sind ein etwas antiquiert wirkendes Konstrukt, um genau solche Sachen zu realisieren.
In die ActionMap speichert du Actions unter einem gewissen Key.
In der InputMap wiederum definierst du Keystrokes, und weist denen die Keys zu.
Das Ganze hat den Vorteil, dass die selbe Action per Key über mehrere Wege angesprochen werden kann. Die Auslöser müssen nicht mehr wissen als den Key.
Jede Komponente kann ihre eigenen Input-Maps haben, abhängig z.B. davon ob die Komponente selbst oder eben irgend eine Komponente im Parent-Fenster den Fokus hat.
Wenn es darum geht, dass etwas ausgeführt wird, egal, was im Fenster den Fokus hat, dann sollte meiner Meinung nach aber die InputMap des Fensters verwendet werden, damit man z.B. nicht den gleichen Keystroke an 2 Komponenten zuweist. Hier mögen sich die Geister scheiden.
Hier ist das Ganze recht gut anhand eines Beispiels erklärt: