ページ

2014年7月26日土曜日

Belkin USB bluetooth dongle F8T016 in OSX 10.5.8 (Leopard)

Belkin USB bluetooth dongle F8T016 を Mac OSX 10.5.8 (Leopard) で使ってみると、Option 起動は可能、コマンド+S 起動も可能、スリープからの復帰も可能ながら「Bluetooth デバイスがスリープを解除することを許可」にチェックが入らないという問題です。問題にしなくても放置しておいても実用的には何の問題もありません。同じ dongle を Mac OSX 10.8.5 (Mountain Lion) でやってみるとチェックが入るのは確認できていましたから、Mountain Lion の書式を真似して Leopard にパッチを当てればいいのでしょう。

その場所は "/System/Library/Extensions/IOBluetoothFamily.kext/Contents/Plugins/BroadcomUSBBluetoothHCIController.kext/Contents/Info.plist" にあります。そのInfo.plistの内容です。

●これは OSX 10.5.8 (Leopard) の Info.plist を Property List Editor による一部表示です。



●そしてこちらは OSX 10.8.5 (Mountain Lion) の Info.plist を Property List Editor による一部表示です。一見して分るのは項目数が増えている事です。



これは OSX 10.8.5 (Mountain Lion) のInfo.plist の中の belkin USB dongle F8T016 の定義部分です。一番上の行の右側にある <> は明らかにゴミなので削除して下さいね。



この定義部分を"PASTE HERE !!!" の部分にペーストします。以前にペーストする場所を "Microsoft Bluetooth 2.0 USB Dongle" の下に置いてみたら動作しなかったので、上にしておいた方がいいかと思います。

ただし、Mountain Lion と Leopard ではその記述に若干の違いがあるので、ペーストしたものを一部 OSX 10.5.8 用に修正します。



これは OSX 10.5.8 (Leopard) にパッチ後のProperty List Editor による表示です。ついでですから Belkin 以外にも IOGear や MediaLink の定義も追加してみました。



最終的に、システム環境設定のBluetoothの詳細設定で、うまく「Bluetooth デバイスがスリープを解除することを許可」にチェックが入るようになりました。



ただ Belkin USB bluetooth dongle F8T016 といってもバージョン違いがあるらしく、F8T016ng という製品を使いました。F8T016ne でもOKらしいとはネット上の情報です。分らないのはパッケージのどこを探しても ng やら ne などの表記がされていない事です。

2014年7月14日月曜日

Power Mac G5 OSX 10.5.8 用 Apple wireless keyboard 2009 B JIS用差分

 <key>Wireless Keyboard 2009 B ANSI</key>
        <dict>
            <key>BatteryDangerouslyLowNotificationType</key>
            <integer>1802527086</integer>
            <key>BatteryLowNotificationType</key>
            <integer>1701538927</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.IOBluetoothHIDDriver</string>
            <key>DisconnectionNotificationType</key>
            <integer>1701536883</integer>
            <key>ExtendedFeatures</key>
            <dict>
                <key>BatteryPercent</key>
                <dict>
                    <key>id</key>
                    <integer>71</integer>
                    <key>max</key>
                    <integer>100</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>BatteryState</key>
                <dict>
                    <key>id</key>
                    <integer>48</integer>
                    <key>max</key>
                    <integer>2</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>0</integer>
                </dict>
                <key>DeviceName1</key>
                <dict>
                    <key>id</key>
                    <integer>81</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName2</key>
                <dict>
                    <key>id</key>
                    <integer>82</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName3</key>
                <dict>
                    <key>id</key>
                    <integer>83</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName4</key>
                <dict>
                    <key>id</key>
                    <integer>84</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceNameChange</key>
                <dict>
                    <key>id</key>
                    <integer>80</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>69</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FullFactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>68</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>LongDeviceName</key>
                <dict>
                    <key>id</key>
                    <integer>85</integer>
                    <key>size</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>RecantConnection</key>
                <dict>
                    <key>id</key>
                    <integer>65</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>UserMode</key>
                <dict>
                    <key>id</key>
                    <integer>67</integer>
                    <key>max</key>
                    <integer>3</integer>
                    <key>min</key>
                    <integer>1</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>WillShutdown</key>
                <dict>
                    <key>id</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
            </dict>
            <key>GetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>HIDDefaultBehavior</key>
            <string></string>
            <key>IOClass</key>
            <string>IOAppleBluetoothHIDDriver</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOBluetoothL2CAPChannel</string>
            <key>PSM</key>
            <integer>17</integer>
            <key>ProductID</key>
            <integer>597</integer>
            <key>SetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>VendorID</key>
            <integer>1452</integer>
        </dict>
        <key>Wireless Keyboard 2009 B ANSI Map</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleHIDKeyboard</string>
            <key>CapsLockDelay</key>
            <integer>75</integer>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>6</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>7</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
            </array>
            <key>FnFunctionUsageMap</key>
            <string>0x0007003a,0xff010021,0x0007003b,0xff010020,0x0007003c,0xff010010,0x0007003d,0xff010004,0x00070040,0x000C00B4,0x00070041,0x000C00CD,0x00070042,0x000C00B3,0x00070043,0x000C00E2,0x00070044,0x000C00EA,0x00070045,0x000C00E9</string>
            <key>FnKeyboardUsageMap</key>
            <string>0x00070050,0x0007004a,0x00070052,0x0007004b,0x0007002a,0x0007004c,0x0007004f,0x0007004d,0x00070051,0x0007004e,0x00070028,0x00070058</string>
            <key>FnModifierUsage</key>
            <integer>3</integer>
            <key>FnModifierUsagePage</key>
            <integer>255</integer>
            <key>HIDDefaultBehavior</key>
            <string>Keyboard</string>
            <key>IOClass</key>
            <string>AppleEmbeddedKeyboard</string>
            <key>IOProviderClass</key>
            <string>IOHIDInterface</string>
            <key>NumLockKeyboardUsageMap</key>
            <string>0x00070029,0x00070029,0x0007002a,0x0007002a,0x0007002b,0x0007002b,0x0007003a,0x0007003a,0x0007003b,0x0007003b,0x0007003c,0x0007003c,0x0007003d,0x0007003d,0x0007003e,0x0007003e,0x0007003f,0x0007003f,0x00070040,0x00070040,0x00070041,0x00070041,0x00070042,0x00070042,0x00070043,0x00070043,0x00070044,0x00070044,0x00070045,0x00070045,0x0007004a,0x0007004a,0x0007004b,0x0007004b,0x0007004c,0x0007004c,0x0007004d,0x0007004d,0x0007004e,0x0007004e,0x0007004f,0x0007004f,0x00070050,0x00070050,0x00070051,0x00070051,0x00070052,0x00070052,0x0007000d,0x00070059,0x0007000e,0x0007005a,0x0007000f,0x0007005b,0x00070018,0x0007005c,0x0007000c,0x0007005d,0x00070012,0x0007005e,0x00070024,0x0007005f,0x00070025,0x00070060,0x00070026,0x00070061,0x00070010,0x00070062,0x00070037,0x00070063,0x00070082,0x00070082,0x000700e0,0x000700e0,0x000700e1,0x000700e1,0x000700e2,0x000700e2,0x000700e3,0x000700e3,0x000700e4,0x000700e4,0x000700e5,0x000700e5,0x000700e6,0x000700e6,0x000700e7,0x000700e7</string>
            <key>ProductID</key>
            <integer>597</integer>
            <key>StandardType</key>
            <integer>0</integer>
            <key>VendorID</key>
            <integer>1452</integer>
            <key>alt_handler_id</key>
            <integer>43</integer>
        </dict>
        <key>Wireless Keyboard 2009 B ISO</key>
        <dict>
            <key>BatteryDangerouslyLowNotificationType</key>
            <integer>1802527086</integer>
            <key>BatteryLowNotificationType</key>
            <integer>1701538927</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.IOBluetoothHIDDriver</string>
            <key>DisconnectionNotificationType</key>
            <integer>1701536883</integer>
            <key>ExtendedFeatures</key>
            <dict>
                <key>BatteryPercent</key>
                <dict>
                    <key>id</key>
                    <integer>71</integer>
                    <key>max</key>
                    <integer>100</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>BatteryState</key>
                <dict>
                    <key>id</key>
                    <integer>48</integer>
                    <key>max</key>
                    <integer>2</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>0</integer>
                </dict>
                <key>DeviceName1</key>
                <dict>
                    <key>id</key>
                    <integer>81</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName2</key>
                <dict>
                    <key>id</key>
                    <integer>82</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName3</key>
                <dict>
                    <key>id</key>
                    <integer>83</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName4</key>
                <dict>
                    <key>id</key>
                    <integer>84</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceNameChange</key>
                <dict>
                    <key>id</key>
                    <integer>80</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>69</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FullFactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>68</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>LongDeviceName</key>
                <dict>
                    <key>id</key>
                    <integer>85</integer>
                    <key>size</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>RecantConnection</key>
                <dict>
                    <key>id</key>
                    <integer>65</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>UserMode</key>
                <dict>
                    <key>id</key>
                    <integer>67</integer>
                    <key>max</key>
                    <integer>3</integer>
                    <key>min</key>
                    <integer>1</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>WillShutdown</key>
                <dict>
                    <key>id</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
            </dict>
            <key>GetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>HIDDefaultBehavior</key>
            <string></string>
            <key>IOClass</key>
            <string>IOAppleBluetoothHIDDriver</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOBluetoothL2CAPChannel</string>
            <key>PSM</key>
            <integer>17</integer>
            <key>ProductID</key>
            <integer>598</integer>
            <key>SetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>VendorID</key>
            <integer>1452</integer>
        </dict>
        <key>Wireless Keyboard 2009 B ISO Map</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleHIDKeyboard</string>
            <key>CapsLockDelay</key>
            <integer>75</integer>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>6</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>7</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
            </array>
            <key>FnFunctionUsageMap</key>
            <string>0x0007003a,0xff010021,0x0007003b,0xff010020,0x0007003c,0xff010010,0x0007003d,0xff010004,0x00070040,0x000C00B4,0x00070041,0x000C00CD,0x00070042,0x000C00B3,0x00070043,0x000C00E2,0x00070044,0x000C00EA,0x00070045,0x000C00E9</string>
            <key>FnKeyboardUsageMap</key>
            <string>0x00070050,0x0007004a,0x00070052,0x0007004b,0x0007002a,0x0007004c,0x0007004f,0x0007004d,0x00070051,0x0007004e,0x00070028,0x00070058</string>
            <key>FnModifierUsage</key>
            <integer>3</integer>
            <key>FnModifierUsagePage</key>
            <integer>255</integer>
            <key>HIDDefaultBehavior</key>
            <string>Keyboard</string>
            <key>IOClass</key>
            <string>AppleEmbeddedKeyboard</string>
            <key>IOProviderClass</key>
            <string>IOHIDInterface</string>
            <key>NumLockKeyboardUsageMap</key>
            <string>0x00070029,0x00070029,0x0007002a,0x0007002a,0x0007002b,0x0007002b,0x0007003a,0x0007003a,0x0007003b,0x0007003b,0x0007003c,0x0007003c,0x0007003d,0x0007003d,0x0007003e,0x0007003e,0x0007003f,0x0007003f,0x00070040,0x00070040,0x00070041,0x00070041,0x00070042,0x00070042,0x00070043,0x00070043,0x00070044,0x00070044,0x00070045,0x00070045,0x0007004a,0x0007004a,0x0007004b,0x0007004b,0x0007004c,0x0007004c,0x0007004d,0x0007004d,0x0007004e,0x0007004e,0x0007004f,0x0007004f,0x00070050,0x00070050,0x00070051,0x00070051,0x00070052,0x00070052,0x0007000d,0x00070059,0x0007000e,0x0007005a,0x0007000f,0x0007005b,0x00070018,0x0007005c,0x0007000c,0x0007005d,0x00070012,0x0007005e,0x00070024,0x0007005f,0x00070025,0x00070060,0x00070026,0x00070061,0x00070010,0x00070062,0x00070037,0x00070063,0x00070082,0x00070082,0x000700e0,0x000700e0,0x000700e1,0x000700e1,0x000700e2,0x000700e2,0x000700e3,0x000700e3,0x000700e4,0x000700e4,0x000700e5,0x000700e5,0x000700e6,0x000700e6,0x000700e7,0x000700e7</string>
            <key>ProductID</key>
            <integer>598</integer>
            <key>StandardType</key>
            <integer>1</integer>
            <key>VendorID</key>
            <integer>1452</integer>
            <key>alt_handler_id</key>
            <integer>44</integer>
        </dict>
        <key>Wireless Keyboard 2009 B JIS</key>
        <dict>
            <key>BatteryDangerouslyLowNotificationType</key>
            <integer>1802527086</integer>
            <key>BatteryLowNotificationType</key>
            <integer>1701538927</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.IOBluetoothHIDDriver</string>
            <key>DisconnectionNotificationType</key>
            <integer>1701536883</integer>
            <key>ExtendedFeatures</key>
            <dict>
                <key>BatteryPercent</key>
                <dict>
                    <key>id</key>
                    <integer>71</integer>
                    <key>max</key>
                    <integer>100</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>BatteryState</key>
                <dict>
                    <key>id</key>
                    <integer>48</integer>
                    <key>max</key>
                    <integer>2</integer>
                    <key>min</key>
                    <integer>0</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>0</integer>
                </dict>
                <key>DeviceName1</key>
                <dict>
                    <key>id</key>
                    <integer>81</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName2</key>
                <dict>
                    <key>id</key>
                    <integer>82</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName3</key>
                <dict>
                    <key>id</key>
                    <integer>83</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceName4</key>
                <dict>
                    <key>id</key>
                    <integer>84</integer>
                    <key>size</key>
                    <integer>8</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>DeviceNameChange</key>
                <dict>
                    <key>id</key>
                    <integer>80</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>69</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>FullFactoryDefault</key>
                <dict>
                    <key>id</key>
                    <integer>68</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>LongDeviceName</key>
                <dict>
                    <key>id</key>
                    <integer>85</integer>
                    <key>size</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>RecantConnection</key>
                <dict>
                    <key>id</key>
                    <integer>65</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>UserMode</key>
                <dict>
                    <key>id</key>
                    <integer>67</integer>
                    <key>max</key>
                    <integer>3</integer>
                    <key>min</key>
                    <integer>1</integer>
                    <key>size</key>
                    <integer>1</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
                <key>WillShutdown</key>
                <dict>
                    <key>id</key>
                    <integer>64</integer>
                    <key>type</key>
                    <integer>2</integer>
                </dict>
            </dict>
            <key>GetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>HIDDefaultBehavior</key>
            <string></string>
            <key>IOClass</key>
            <string>IOAppleBluetoothHIDDriver</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOBluetoothL2CAPChannel</string>
            <key>PSM</key>
            <integer>17</integer>
            <key>ProductID</key>
            <integer>599</integer>
            <key>SetReportTimeoutMS</key>
            <integer>3500</integer>
            <key>VendorID</key>
            <integer>1452</integer>
        </dict>
        <key>Wireless Keyboard 2009 B JIS Map</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleHIDKeyboard</string>
            <key>CapsLockDelay</key>
            <integer>75</integer>
            <key>DeviceUsagePairs</key>
            <array>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>6</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>DeviceUsage</key>
                    <integer>7</integer>
                    <key>DeviceUsagePage</key>
                    <integer>1</integer>
                </dict>
            </array>
            <key>FnFunctionUsageMap</key>
            <string>0x0007003a,0xff010021,0x0007003b,0xff010020,0x0007003c,0xff010010,0x0007003d,0xff010004,0x00070040,0x000C00B4,0x00070041,0x000C00CD,0x00070042,0x000C00B3,0x00070043,0x000C00E2,0x00070044,0x000C00EA,0x00070045,0x000C00E9</string>
            <key>FnKeyboardUsageMap</key>
            <string>0x00070050,0x0007004a,0x00070052,0x0007004b,0x0007002a,0x0007004c,0x0007004f,0x0007004d,0x00070051,0x0007004e,0x00070028,0x00070058</string>
            <key>FnModifierUsage</key>
            <integer>3</integer>
            <key>FnModifierUsagePage</key>
            <integer>255</integer>
            <key>HIDDefaultBehavior</key>
            <string>Keyboard</string>
            <key>IOClass</key>
            <string>AppleEmbeddedKeyboard</string>
            <key>IOProviderClass</key>
            <string>IOHIDInterface</string>
            <key>NumLockKeyboardUsageMap</key>
            <string>0x00070029,0x00070029,0x0007002a,0x0007002a,0x0007002b,0x0007002b,0x0007003a,0x0007003a,0x0007003b,0x0007003b,0x0007003c,0x0007003c,0x0007003d,0x0007003d,0x0007003e,0x0007003e,0x0007003f,0x0007003f,0x00070040,0x00070040,0x00070041,0x00070041,0x00070042,0x00070042,0x00070043,0x00070043,0x00070044,0x00070044,0x00070045,0x00070045,0x0007004a,0x0007004a,0x0007004b,0x0007004b,0x0007004c,0x0007004c,0x0007004d,0x0007004d,0x0007004e,0x0007004e,0x0007004f,0x0007004f,0x00070050,0x00070050,0x00070051,0x00070051,0x00070052,0x00070052,0x0007000d,0x00070059,0x0007000e,0x0007005a,0x0007000f,0x0007005b,0x00070018,0x0007005c,0x0007000c,0x0007005d,0x00070012,0x0007005e,0x00070024,0x0007005f,0x00070025,0x00070060,0x00070026,0x00070061,0x00070010,0x00070062,0x00070037,0x00070063,0x00070082,0x00070082,0x000700e0,0x000700e0,0x000700e1,0x000700e1,0x000700e2,0x000700e2,0x000700e3,0x000700e3,0x000700e4,0x000700e4,0x000700e5,0x000700e5,0x000700e6,0x000700e6,0x000700e7,0x000700e7</string>
            <key>ProductID</key>
            <integer>599</integer>
            <key>StandardType</key>
            <integer>2</integer>
            <key>VendorID</key>
            <integer>1452</integer>
            <key>alt_handler_id</key>
            <integer>45</integer>
        </dict>

Power Mac G5 OSX 10.5.8 (Leopard) と Apple wireless keyboard JIS

●Power Mac G5 OSX 10.5.8 (Leopard) と Apple wireless keyboard JIS を使うと、US(ANSI)キーボードと誤認識されてしまうという問題です。もっとも安易な解決方法は US キーボードを購入すればいいのでしょうが、それでは解決にはなりません。

さて
(1) 「Mac OS 10.5(Leopard)+他社製JISキーボード」のキー配列問題に対処する
(2) Apple 製ワイヤレスキーボードまたはマウスを識別する方法

この(2)によればアルミニウム製 Apple wireless keyboard には2007年と2009年の2タイプがあり、その区別はキーボードの裏を見れば分かるとの事です。この記述からすると自分の使っている Apple wireless keyboard は2009年型になります。

●それによれば Wireless Keyboard Update 2.0 をインストールすれば使えるとの事です。さっそくインストールしてみましたが状況は好転しません。システム要件は OSX 10.5.8 ですし、日本語にも対応したアップデータです。(1)にアップル社以外のキーボードでも使えるようにする設定方法があります。他社製なら話がわかるのですがアップル純正キーボードの話ですから。それに System Profiler で調べてみるとちゃんと Apple wireless keyboard って認識されているんですよね。Apple wireless keyboard JIS の productID を調べる方法があればいいのでしょうが、USB ポートに直接接続するキーボードなら別として、bluetooth USB 接続の wireless keyboard では、productID をどうやって調べたらいいのかわかりません。あっと、失礼。これは OSX 10.5.8 では無理みたいだということです。 OSX 10.7 では簡単に調べる事ができますね。

●思う所あって Mac OSX 10.7.5 (Lion) のシステムを調べてみました。具体的には /System/Library/Extensions/AppleHIDKeyboard.kext の内部の Info.plist です。すると OSX 10.5.8 の Info.plist とはかなり違う部分がありました。簡単に書けば「wireless keyboard 2009 B JIS MAP」という「B」が加わったキーボードがあるのです。その意味するところは2009年型でも2種類のタイプがあるという事です。つまり アルミニウム製 Apple wireless keyboard は「2007」「2009」の2種類では無く、それに「2009 B」を加えた3種類があったのです。おそらく OSX 10.7 Lion が発売された2011年頃に「2009 B」が加えられたのでしょう。よくよく調べてみたら、アップルの文書に iOS に対応した Apple wireless keyboard の種類についての説明がありました。それによれば「2009 B」を Apple Wireless Keyboard (2011) と呼ぶとの事です。型式では 2011 が MC184J/B, 2009 が MC184J/A,2007 が MB167J/A になります。公式発表では 2011 は OSX 10.8(Lion) 以後、2009 は OSX 10.6.2(Snow Leopard) 以後、2007はOSX 10.4.8 以後になっています。Wireless Keyboard Update 2.0 を適用することによって 2009 が OSX 10.5.8 でも使用可能になっていたのです。

●残念なことに OSX 10.5.8 (Leopard) は「2011」のサポートから外されてしまっていたのです。ですから古い「2009」の方を使っていれば JIS を US キーボードと誤認される事もなかったのです。さてまず、OSX 10.5.8 とOSX 10.7 の Info.plist を比較してみます。



上図は OSX 10.5.8 の Info.plist を Property List Editor で開いてみたものです。"Property List Editor"とは Developer Tools の中にあったユーティリティの一つです。Info.plist を見るにはテキストエディターでもいいのですが、中の構造を眺めるには、こちらの方が便利なものですから。



そしてこれが OSX 10.5.8 に Wireless Keyboard Update 2.0 をインストールした後の物です。一見して分るように Wireless Keyboard 2009 の項目が増えています。



上図は OSX 10.7 のInfo.plist を Property List Editor で開いてみたものです。ずいぶん項目数が減っていますが Wireless Keyboard 2009 B の項目があります。ちなみに Wireless Keyboard 2009 B JIS MAP を開いて productID を調べてみると 599 になっています。



これらの productID を同様にして調べてみると

    2009 ANSI MAP 569
    2009 B ANSI MAP 597
    2009 B ISO MAP 598
    2009 B JIS MAP 599
    2009 ISO MAP 570
    2009 JIS MAP 571

となっています。行の最後にある数字が productID です。この情報を利用して OSX 10.5.8 に Wireless Keyboard Update 2.0 をインストールした後の Info.plist に 2009 B JIS MAP の情報を付け加えればいいのです。しかしながら、 OSX 10.5.8 の Info.plist を見るとそれだけでは駄目のようで Wireless Keyboard 2009 B JIS の情報も付け加えなければならないようです。これをどこから調達してくるかです。それは簡単で Wireless Keyboard 2009 JIS をコピーしたものから productID を 599 に書き換えてやればいいのです。正確に記せばファンクションキー F3,F4 の情報を書き換えるべきなのでしょうが、OSX 10.5.8 には関係無い事ですし、必要があった場合に書き換えれば済む事ですから。最終的には他の種類のキーボードの対応も考慮して ANSI, ISO の情報も付け加えてやります。



こういう情報を付け加えます。データの取得にはお手持ちのデータを利用していただくのが最良かと。それから「B」のデータに関してはここにアップされてますねぇ。実際の作業は最初に挙げた (1) を参考にするといいでしょう。



以上の説明でやり方がさっぱり分らないという人は止めておいた方がいいです。MAC が起動不能になっても責任とれませんから。
簡単な手順を記しておきます。terminal を起動させます。terminal は /Applications/Utilities/ の中にあります。termnail が起動しましたら

cd ~/Desktop
mkdir work
cd work
cp -R /System/Library/Extensions/AppleHIDKeyboard.kext .

なお最後の行の最後にあるピリオドを見逃さないで下さい。ピリオドの前にはスペースが一つ入っています。ここまでの作業で何をしているのかといいますと作業領域として work をデスクトップ上に作成しその中に AppleHIDKeyboard.kext ファイルをコピーしています。次に AppleHIDKeyboard.kext 内にある Info.plist ファイルをオープンしていきます。Info.plist ファイルの改造を terminal でやってもいいのですが、あまりにも煩雑になるのでテキストエディトを使います。



コントロールキーを押しながら AppleHIDKeyboard.kext を選択しますと「パッケージの内容を表示」という項目が現れますのでそれを選択。



すると contents の下に Info.plist ファイルがあります。それにはコントロールキーを押しながらInfo.plist を選択しますとテキストエディトでオープンできます。しかし、そのままではデータ作成後に保存できないという悲劇に見舞われますので、Info.plist をあらかじめ作業領域へコピーしておきます。terminal から

cp ~/Desktop/work/AppleHIDKeyboard.kext/Contents/Info.plist ~/Desktop/work

以上で作業用フォルダ work 内に Info.plist がコピーされますので、これをテキストエディトでオープンします。

テキストエディトの検索で "Wireless Keyboard 2009 ANSI" を検索します。



この画像では途中データを省略しています。コピー開始は <key>Wireless Keyboard 2009 ANSI</key> からで、行が長く続きますのでスクロールしてゆき "Wireless Keyboard 2009 ANSI MAP" の直前の </dict> までをコピーします。そのコピーしたデータをどこにペーストするかといいますと、Info.plist を最後の行までスクロールします。



この "PASTE HERE" は実際には存在しません。ここに先ほどのデータをペーストします。そしてペーストしたデータの2カ所を書き換えます。1カ所目はProductID を 569 から 597 に変更します。書き換えるべき ProductID の場所は上図の "PASTE HERE" の少し上に VendorID がありますが、その上の SetReportTimeoutMS のもう1つ上です。2カ所目はデータ先頭行 "Wireless Keyboard 2009 ANSI" を "Wireless Keyboard 2009 B ANSI" に変更します。

次に "Wireless Keyboard 2009 B ANSI MAP" のデータを OSX 10.7 なり先に例示したようなネット上の場所からとってきます。で、それを先ほどの "PASTE HERE" の場所にペーストします。以上で "Wireless Keyboard B 2009 ANSI" の一組目のデータ作成は終了です。同じ要領で "Wireless Keyboard 2009 B ISO" 関係データを作成し、最後に "Wireless Keyboard 2009 B JIS" 関係データを作成します。注意点は ProductID の変更です。"Wireless Keyboard 2009 B ISO" の場合には ProductID を 570 から 598 へ、"Wireless Keyboard 2009 B JIS" の場合には ProductID を 571 から 599 へと書き換えます。間違いが無い事を確認した上でこれらを保存します。これはドライバーデータですので、間違えるとどのような事態を引き起こすか分りません。あくまで自己責任で願います。

さて、以上の改造をほどこしたファイルをオリジナルの作業用 AppleHIDKeyboard.kext の内部の Info.plist と置き換えます。

sudo mv ~/Desktop/work/Info.plist ~/Desktop/woork/AppleHIDKeyboard.kext/Contents/Info.plist

chown,chgrp コマンドで root,wheel に設定を戻します。作業フォルダ work 内で

sudo chown -R root AppleHIDKeyboard.kext
sudo chgrp -R wheel AppleHIDKeyboard.kext

出来上がった作業フォルダ内の AppleHIDKeyboard.kext を /System/Library/Extensions/AppleHIDKeyboard.kext に置き換えます。置き換える前にオリジナルデータを名称を変えて保存しておきます。

●注意:以下の変更はあくまで自己責任にて結果に自信の無い人は実行しない事。

sudo mv /System/Library/Extensions/AppleHIDKeyboard.kext /System/Library/Extensions/AppleHIDKeyboard.kext.orig
sudo cp -R ~/Desktop/work/AppleHIDKeyboard.kext /System/Library/Extensions/AppleHIDKeyboard.kext

以上でマックを再起動させます。なお再起動時に Extensions.mkext の更新が行われる関係上キャッシュの更新終了までしばらく待つ事になります。何事かと慌てる必要はありませんので。

何を書いてあるのかさっぱり分らないという人のために差分データを作成しました。これを本文で示した Info.plist の "PASTE HERE" にペーストすれば幾分かは簡単になるでしょう。こちらに挙げます。なお、差分データは不都合だとクレームが入るようなら削除します。