[Macemacsjp-users 1630] Re: 質問

Back to archive index

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;




Macemacsjp-users メーリングリストの案内
Back to archive index