È possibile disabilitare lo switcher dell'applicazione della scheda comandi in Mac OS X Lion?


Risposte:


6

È possibile mappare la scheda comandi su un'altra combinazione di tasti con KeyRemap4MacBook :

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::F19</autogen>

Ciò disabiliterebbe tab-comando e shift-comando-tab:

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>
<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>

Grazie, questo è un buon vantaggio. È anche utile sapere che la rimappatura tramite DefaultKeyBinding.dict è un vicolo cieco. Proverò KeyRemap4MacBook
Sean Mackesey il

1
Ha funzionato alla grande, grazie. Nel caso in cui non sia chiaro per gli altri, è necessario aggiungere queste definizioni private.xmlnel proprio <item>tag in <root>. Quindi, ricaricare private.xmle attivare la nuova opzione.
jrhorn424,

Assicurati di aggiungere un nome e un identificatore alla voce <item> <name>Disable Command Tab</name> <identifier>private.disable_command_tab</identifier>
Willem D'Haeseleer

1

Puoi farlo come livello di assemblaggio. Per ML 10.8.3, questa Cmd+ Tabregistrazione avviene in subroutine all'indirizzo 0x10000b258. In pseudo-codice, sembra che:

rax = CPSRegisterForKeyOnConnection(*(int32_t *)rbx, 0x1002cd078, 0x1, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-tab key, %d\\n");
}
rax = CPSRegisterForKeyOnConnection(*(int32_t *)0x1002ccda8, 0x1002cd078, 0x2, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-shift-tab key, %d\\n");
}

Quindi, se si sostituiscono i seguenti codici byte:

488D35691C2C008B3BBA01000000B901000000E85CD71B0085C0741A488B0DD5FC2400488B39488D355B341C0089C230C0E892C51B00488D0563192C008B38488D352A1C2C00BA02000000B901000000E81FD71B0085C0741A488B0D98FC2400488B39488D3541341C0089C230C0E855C51B00

con:

90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090

E dimetti il ​​tuo Dock.app, funzionerà. Devi anche rimuovere la protezione del file binario Dock prima di farlo poiché il file binario Dock è crittografato.


5
puoi per favore fare il backup della tua risposta con qualche tipo di fonte per favore? tutto quel codice può essere fonte di confusione e oggetto di sfiducia da parte dei futuri lettori. spero tu capisca.
Lorenzo Von Matterhorn,

1
Aggiungi anche ciò che fa il codice originale e la sostituzione (lo smontaggio andrebbe bene per quanto mi riguarda)
vonbrand

3
Questa è una risposta piuttosto interessante. Mentre la preoccupazione negli altri due commenti è probabilmente valida, è un'offerta triste che tutti i commenti lo mettano in discussione, ma nessuno sottolinea che questo è piuttosto interessante. Come fai a sapere quale indirizzo di subroutine e qual è lo 090909? (no-op?)
Gal

0

Una risposta accettabile includerebbe la rimappatura ?

Mac OS X Lion (10.7) ha difficoltà a rilevare il layout della tastiera quando l'ho collegato per la prima volta. Ma dopo aver seguito le istruzioni (cioè premere il tasto a destra di Left Shift, ecc.) Identifica correttamente il layout.

In Preferenze di Sistema, Lion ha un meraviglioso pannello della tastiera:

Schermata del pannello della tastiera di Lion

Quindi, vai a Modifier Keys ...

inserisci qui la descrizione dell'immagine

Bingo, ora CapsLock si comporta come Control.

In alternativa, puoi provare ad applicare le associazioni dei tasti:

Modifica il file di associazioni di tasti predefinito, ~ / Library / KeyBindings / DefaultKeyBinding.dict. Crea la directory e / o il file se non sono già presenti e fai in modo che sia simile a questo:

{
  /* Remap Home / End to be correct */
  "\UF729" = "moveToBeginningOfLine:"; /* Home */
  "\UF72B" = "moveToEndOfLine:"; /* End */
  "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
  "$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
}

Se sono già presenti voci in DefaultKeyBinding.dict, aggiungi le 4 nuove mappature sopra alla sezione principale del tuo file. Potrebbe essere necessario un riavvio per renderlo effettivo.

Dovrai modificare il codice sopra per quello che stai cercando di fare


1
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Luke canadese,

3
Concordo con il commentatore sopra: questa risposta è troppo rotonda. Apprezzo la tua tentata risposta, ma per favore prova ad essere più diretto. Penso che questa voce possa confondere gli altri che trovano questa domanda in futuro. Inoltre, rimappare l'intero tasto di comando a qualcos'altro non è una soluzione accettabile per me, poiché utilizzo il tasto di comando per molte altre cose. Non so se il codice che mostri nella seconda parte della tua soluzione mi consentirebbe di disabilitare in modo selettivo CMD + TAB, ma se può spiegarmi in modo esplicito.
Sean Mackesey,

Rimappare il tasto comando su Caps Lock è probabilmente la migliore idea che potrei offrire. Hai ancora il tasto comando, e sarei sbalordito nel sentire che stai effettivamente usando il maiuscolo per qualcosa. La seconda opzione era dimostrare la quantità di lavoro che avresti dovuto fare se avessi una ragione per cui il modo semplice non funzionerà. Al di fuori di questi due non ho nient'altro per te. Ho fornito le parti essenziali come Luke ha raccomandato.
Everett,

In realtà ho già rimappato CapsLock su Escape (essenziale se usi Vim!). Grazie per il tuo impegno, ti consiglierò di nuovo di modificare il tuo post. Ti preghiamo di collegarti a qualcosa sulla rimappatura dei tasti modificatori, in modo che i browser futuri non debbano superare l'intera spiegazione quando sanno che quella soluzione non funzionerà per loro.
Sean Mackesey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.