Le applicazioni vedono qualsiasi combinazione di tasti o combinazioni di tasti tranne quelle riservate da OS X. Si dice "programma Java" e non un'applet Java incorporata in un sito Web (o qualcosa di esotico come HP iLO o IBM RSA), quindi capisco l'applicazione stiamo parlando di Java e non di Safari, Firefox o Chrome.
Poiché Ctrl + F4 non è più configurato per spostare lo stato attivo, OS X non dovrebbe filtrarlo e Java dovrebbe vederlo.
Non ho ancora nessuna spiegazione sul perché il tuo programma Java non sembra reagire a Ctrl + F4. È difficile perché ci sono molte congetture riguardo al tuo programma Java. Uno screenshot o alcune informazioni tecniche (nome, produttore, protocollo sottostante) sarebbero i benvenuti. Alcune informazioni su Windows (versione, service pack, gestita da un reparto IT) sarebbero utili.
Iniziamo scoprendo cosa vede Java quando vengono premuti i tasti.
Crea un file chiamato KeyListener.java
sul desktop con contenuti:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class KeyListener {
public static void main(String[] args) {
// Create frame with specific title
Frame frame = new Frame("Example Frame");
// Create a component to add to the frame; in this case a text area with sample text
Component textArea = new TextArea("You pressed []: \n");
textArea.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
TextArea source = (TextArea)evt.getSource();
if ( evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_F4 )
source.setText("You pressed [Ctrl+F4] : ");
else if ( evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_F2 )
source.setText("You pressed [Ctrl+F2] : ");
else
source.setText("You pressed [" + evt.getKeyText(evt.getKeyCode()) +"] : ");
}
});
// Add the components to the frame; by default, the frame has a border layout
frame.add(textArea, BorderLayout.NORTH);
// Show the frame
int width = 300;
int height = 300;
frame.setSize(width, height);
frame.setVisible(true);
}
}
[Questo file è fondamentalmente questo link con una piccola aggiunta da qui link ]
Apri il Terminale e digita:
cd ~/Desktop
javac KeyListener.java
e quindi eseguirlo digitandolo nel Terminale:
java KeyListener
Noterai una nuova finestra denominata ExampleFrame (mi piacerebbe pubblicare un'immagine, ma ho ricevuto l'errore: Siamo spiacenti, ma come meccanismo di prevenzione dello spam, i nuovi utenti non sono autorizzati a postare immagini Guadagna più di 10 reputazione per pubblicare immagini. )
Dopo aver disattivato Ctrl + F4 in System Preferences
, fai clic sulla finestra ExampleFrame e premi Ctrl + F4 (o fn + Ctrl + F4, se non hai disattivato il comportamento speciale dei tasti funzione in System Preferences
).
Vedo il testo "Hai premuto [Ctrl + F4]" (testato su un MacBookPro con ML 10.8.2).
Vedi anche "Hai premuto [Ctrl + F4]"?
- > Se lo fai , OS X sta inoltrando i tasti premuti a Java. Il programma Java sta ottenendo quei tasti, ma a quanto pare non li sta inoltrando a Outlook.
Ti stai connettendo al tuo desktop "reale" (come VNC) o ad un desktop virtualizzato (come Citrix o RDP)? (Forse quel desktop virtualizzato ha alcuni tasti di controllo che coincidono con quelli che si desidera utilizzare in Outlook.)
Potrebbe essere che Ctrl + F4 sia già in uso sul PC Windows? (Conosco diversi notebook Windows con funzioni extra nei tasti F, come un Mac, anche utilizzando alcuni tasti Fn. Forse Fn è mappato dal programma Java a Ctrl e interferisce con la digitazione?)
Ho visto che Windows esegue anche il mapping di Ctrl + F4 in "Chiude la finestra MDI (Multiple Document Interface) corrente" (http://support.microsoft.com/kb/126449). Non ho un PC Windows in giro, quindi è più un suggerimento che altro.
- > Se non lo fai ML sta "intercettando" Ctrl + F4 (potresti anche testare Ctrl + F2 - dalla tua descrizione, penso che vedrai il messaggio "Hai premuto [Ctrl + F2]") . Questo non dovrebbe essere il caso se disabiliti Ctrl + F4 in System Preferences
, ma forse qualche altro programma lo sta usando? Qual è il comportamento quando premi i tasti?
[Il "mio" programma Java sopra utilizza AWT. Se il programma Java che usi per connetterti al tuo PC Windows usa un altro widget tool, come SWT, potrebbe comportarsi in modo diverso e le mie conclusioni potrebbero non essere applicabili ...]