Mac OS X Lionでコマンドタブアプリケーションスイッチャーを無効にすることはできますか?


回答:


6

KeyRemap4MacBookを使用して、コマンドタブを別のキーの組み合わせにマッピングできます。

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

これはコマンドタブとシフトコマンドタブを無効にします:

<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>

おかげで、これは良いリードです。DefaultKeyBinding.dictによる再マッピングは行き止まりであることも知っておくとよいでしょう。KeyRemap4MacBook
Sean Mackeseyを2012

1
これはうまくいきました、ありがとう。他の人にわかりにくい場合は、の下private.xmlの独自の<item>タグにこれらの定義を追加する必要があります<root>。次に、リロードprivate.xmlして新しいオプションを切り替えます。
jrhorn424 2013年

<item>エントリには必ず名前と識別子を追加してください <name>Disable Command Tab</name> <identifier>private.disable_command_tab</identifier>
Willem D'Haeseleer

1

アセンブリレベルで実行できます。ML 10.8.3の場合、このCmd+ Tab登録は、アドレス0x10000b258のサブルーチンで行われます。疑似コードでは、次のようになります。

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");
}

したがって、次のバイトコードを置き換えると、

488D35691C2C008B3BBA01000000B901000000E85CD71B0085C0741A488B0DD5FC2400488B39488D355B341C0089C230C0E892C51B00488D0563192C008B38488D352A1C2C00BA02000000B901000000E81FD71B0085C0741A400B0394004001400C400414004001400C400C400C1400C400C1400C400C1400C1400C400C1400C1400C1400C400C1400C1400C1400C1400C1400C1400C1400C1400C1400C1400C10000

と:

90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090

そして、あなたのDock.appを辞任してください、それは動作します。Dockバイナリは暗号化されているため、これを行う前にDockバイナリの保護を解除する必要もあります。


5
何らかの情報源で回答をバックアップしていただけますか?そのすべてのコードは混乱を招き、将来の読者による不信の対象になる可能性があります。ご理解いただければ幸いです。
Lorenzo Von Matterhorn

1
また、追加どのような元のコードがない、との交換(解体までのところ私は心配限り大丈夫だと思う)
vonbrand

3
これはかなりクールな答えです。他の2つのコメントの懸念はおそらく有効ですが、すべてのコメントが疑問を投げかけるのは悲しいことですが、これがかなりクールだと指摘する人は誰もいません。どのサブルーチンアドレスをどのようにして知るのですか、そして090909は何ですか?(ノーオペレーション?)
2015

0

許容できる答えには、それを再マッピングすることが含まれますか?

Mac OS X Lion(10.7)は、最初にプラグインしたときにキーボードレイアウトを検出するのが困難です。ただし、指示(つまり、左シフトの右側にあるキーを押すなど)を実行すると、レイアウトが正しく識別されます。

システム環境設定では、Lionには素晴らしいキーボードパネルがあります。

Lionのキーボードパネルのスクリーンショット

次に、修飾キーに移動します…

ここに画像の説明を入力してください

ビンゴ、現在CapsLockはコントロールとして動作します。

または、キーバインディングを試して実行することもできます。

デフォルトのキーバインディングファイル〜/ Library / KeyBindings / DefaultKeyBinding.dictを編集します。ディレクトリやファイルがまだない場合は作成し、次のようにします。

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

DefaultKeyBinding.dictに既にエントリがある場合は、上記の4つの新しいマッピングをファイルのメインセクションに追加するだけです。有効にするために再起動が必要になる場合があります。

あなたがやろうとしていることのために上のコードを調整する必要があります


1
これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
カナダのルーク

3
上記のコメントに同意してください-この答えはあまりにも遠回りです。お答えいただきありがとうございますが、より直接的な回答を心がけてください。このエントリは、将来この質問を見つける他の人を混乱させる可能性があるように感じます。また、コマンドキーを他の多くのものに使用するため、コマンドキー全体を別のものに再マップすることは、私にとって許容できる解決策ではありません。ソリューションの2番目の部分に表示されているコードでCMD + TABを選択的に無効にできるかどうかはわかりませんが、それが可能であれば、明示的に説明してください。
Sean Mackesey、2012

コマンドキーをCaps Lockに再マッピングすることは、おそらく私が提供できる最高のアイデアです。あなたはまだコマンドキーを受け取ります、そしてあなたが実際に何かのためにCaps Lockを使っていると聞いて私は驚かれます。2番目のオプションは、簡単な方法が機能しない理由がある場合に実行する必要がある作業の量を示すことでした。これら2つ以外では、私には他に何もありません。ルークが推奨するように私は重要な部品を提供しました。
エベレット

CapsLockは既にEscapeに再マッピングされています(Vimを使用する場合は必須です)。お手数をおかけしますが、投稿を編集することをお勧めします。修飾キーの再マッピングについて何かにリンクしてください。そうすれば、将来のブラウザは、そのソリューションが機能しないことがわかっている場合、説明全体をわざわざ調べる必要がなくなります。
Sean Mackesey、2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.