KeyRemap4MacBookに項目を追加してみた

Shift+Spaceで"="。コード書くのに楽なんです。=>とか>=とか<=とか:=とか。
導入は手順の通り。

--- files/prefpane/checkbox.xml.orig	2008-05-20 21:00:48.000000000 +0900
+++ files/prefpane/checkbox.xml	2009-06-30 13:35:05.000000000 +0900
@@ -680,6 +680,10 @@
           <name>Space to Return</name>
           <sysctl>remap.space2return</sysctl>
         </item>
+        <item>
+          <name>Shift+Space to Equal</name>
+          <sysctl>remap.shiftSpace2equal</sysctl>
+        </item>
       </list>
     </item>
 ||<
>||
--- src/core/kext/remap.cpp.orig	2008-05-25 23:46:19.000000000 +0900
+++ src/core/kext/remap.cpp	2009-06-30 14:42:08.000000000 +0900
@@ -840,6 +840,19 @@
     RemapUtil::keyToKey(params, KeyCode::SPACE, KeyCode::RETURN);
   }
 
+  void
+  remap_shiftSpace2equal(const RemapParams &params)
+  {
+    if (! config.remap_shiftSpace2equal) return;
+
+    if (! RemapUtil::isKey(params, KeyCode::SPACE)) return;
+
+    if (allFlagStatus.isHeldDown_shift()) {
+      RemapUtil::keyToKey(params, KeyCode::SPACE, KeyCode::EQUAL);
+      allFlagStatus.temporaryDecrease_shift();
+    }
+  }
+
   // ----------------------------------------
   void
   remap_semicolon2return(const RemapParams &params)
@@ -2601,6 +2614,7 @@
   remap_space2controlL(params);
   remap_space2shiftL(params);
   remap_space2return(params);
+  remap_shiftSpace2equal(params);
 
   remap_semicolon2return(params);
   remap_swapcolons(params);

IMがONの時は半角スペースの入力に使いたいので、本来の動作のままとしたいのですが、IMの状態を取得する方法がわからない…‥。そう言えば窓使いの憂鬱Darwin版でもILやICは実装されてませんでしたね…‥。Developer Centerのマニュアルを適当に探しただけでは見つかりませんでしたし、難しいのでしょうか…‥。

追記
JISKanaModeに、最後に英数キーとかなキーのどちらが押されたかが記憶されています。やはりKEXTからCarbonを使うのは難しいのでしょうか。あくまで英数キーとかなキーのどちらが押されたかだけなので、他の手段でIMを切り替えた場合は追従できませんが、とりあえずは凌げます。