回答:
Wine内で通常のOS Xアプリケーションと同じホットキーを使用するために、同じ問題を解決しようとしていました。それに関する情報は私が知ることができるものから入手できないので、最も簡単な解決策はのソースコードをwinemac.drv
見つけることでした。重要な機能はmacdrv_compute_keyboard_layout()
、多くのさまざまな計算を行いますが、修飾キーについては、基本的にすべての値を取得することになりますdefault_map
(すべての修飾キーは「固定」としてマークされます)。残念なことに、Wine 1.7.10の時点では、ここには構成可能な機能がないため、コンパイルされたファイルを変更してマップの値を変更する必要があります。
私にとって、コンパイルされたファイルはの下にありました/Applications/Wine.app/Contents/Resources/lib/wine/winemac.drv.so
。一般的に、変更する前に元のファイルのコピーを作成することをお勧めします。開くには16進エディタが必要です。まず、次の2行を見てみましょう。
{ VK_RMENU, 0x38 | 0x100, TRUE }, /* kVK_RightCommand */
{ VK_LMENU, 0x38, TRUE }, /* kVK_Command */
仮想キーテーブルに よると、VK_RMENU
値は0xA5とVK_LMENU
0xA4です。つまり、これらの2行のバイナリ表現は次のようになります。
A5 00 38 01 01 00 00 00
A4 00 38 00 01 00 00 00
このバイトシーケンスはオフセット0x62770で見つかりました。Wineビルドの状況は少し異なる可能性があります。コマンドキーをマップし、これら2つのエントリを次のように変更する必要があることVK_LCONTROL
をVK_RCONTROL
意味します。
A3 00 1d 01 01 00 00 00
A2 00 1d 00 01 00 00 00
また、有効なAltキーが必要なため、OptionキーをAltにマップしたいと思います。デフォルトでは、両方のOptionキーはマップされていません。つまり、テーブル内の8つのゼロのシーケンスで表され、位置で検索する必要があります。左のOptionキーは左のCommandの後の3番目のエントリであり、右のOptionキーは左のCommandの後の6番目のエントリです(私にとってはそれぞれ0x62790と0x627A8をオフセットします)。最初のエントリは次のように変更できます。
A4 00 38 00 01 00 00 00
そして2つめは:
A5 00 38 01 01 00 00 00
はい、これらは最初にコマンドキーに割り当てられた値です。実際には、左のOptionキーのエントリのみを変更しました。この方法では、右のOptionキーを使用して特殊文字を生成できます。
これは素晴らしい解決策ではありません。Wineが更新されるたびに繰り返さなければならないハックです。また、Optionキーの再マッピングは、Alt-F4などのキーボードショートカットでのみ機能し、Alt-Fでは機能しません。それでも、それは今のところ仕事をしており、将来的にはWine開発者はいくつかの設定をここに追加することを願っています。バグ35351として対応する変更要求を提出しました。
Wladimirの回答(および彼が自分のサイトで提供した他のヘルプ)により、ソースコードの変更されたコピーを簡単にまとめることができたため、MacドライバーはAltキーをOptionキーに、WinキーをCmdキーにマップしwinemac.drv.soファイルのパッチされたコピー。詳細はこちら:
http://www.columbia.edu/~em36/winekeymap.html
すべてのクレジットはウラジミールに寄付されます。彼が提供した情報をまとめました。