Kazu Yamamoto ( 山本和彦 )
kazu****@iij*****
2008年 5月 22日 (木) 14:54:07 JST
主に橋本さんへ、 先日の続きですが、分らないことがあるので教えて下さい。 > src/macterm.c: 11290行目の > > err = SendEventToEventTarget (eventRef, toolbox_dispatcher); > > で,キーイベントがシステムに渡って,仮名漢字変換の処理が行わ > れます. 先日は、教えて頂いたように read_only と C-SPC で、この部分をスキップす るようにしました。 if (NILP (current_buffer->read_only) && !((mapped_modifiers & controlKey) && ((er.message & charCodeMask) == 0x20)) && !(mapped_modifiers & ~(mac_pass_command_to_system ? cmdKey : 0) & ~(mac_pass_control_to_system ? controlKey : 0))) C-SPC をハードコーディングするのはあんまりですし、カバーできない状況(う まく説明できません!)もあるようなので、条件を「英語入力モードでないとき」 に置き換えようと思いました。 いろいろ調べた結果、「英語入力モードでないとき」は、 (GetScriptManagerVariable(smKeyScript) != smRoman) でできると分ったので、上記を以下のように書き換えました。 if (NILP (current_buffer->read_only) && (GetScriptManagerVariable(smKeyScript) != smRoman) && !(mapped_modifiers & ~(mac_pass_command_to_system ? cmdKey : 0) & ~(mac_pass_control_to_system ? controlKey : 0))) しかし、期待通りには動かず、C-SPC で全角が挿入されてしまいます。 これはどうしてでしょうか? なお、現在は TEMACS_22_BASE で作業しており、ハックしたのは src/mactoolbox.c です。念のため、パッチも付けておきます。 よろしくお願いします。 --かず Index: mactoolbox.c =================================================================== RCS file: /sources/emacs/emacs/src/mactoolbox.c,v retrieving revision 1.1.2.4 diff -c -r1.1.2.4 mactoolbox.c *** mactoolbox.c 23 Apr 2008 08:56:20 -0000 1.1.2.4 --- mactoolbox.c 22 May 2008 04:42:19 -0000 *************** *** 4140,4146 **** mapped_modifiers = mac_mapped_modifiers (modifiers, key_code); #if TARGET_API_MAC_CARBON ! if (!(mapped_modifiers & ~(mac_pass_command_to_system ? cmdKey : 0) & ~(mac_pass_control_to_system ? controlKey : 0))) goto OTHER; --- 4140,4152 ---- mapped_modifiers = mac_mapped_modifiers (modifiers, key_code); #if TARGET_API_MAC_CARBON ! if (NILP (current_buffer->read_only) && ! (GetScriptManagerVariable(smKeyScript) != smRoman) && ! /* ! !((mapped_modifiers & controlKey) && ! ((er.message & charCodeMask) == 0x20)) && ! */ ! !(mapped_modifiers & ~(mac_pass_command_to_system ? cmdKey : 0) & ~(mac_pass_control_to_system ? controlKey : 0))) goto OTHER;