大学生の頃に購入したMacBookPro 2011を今までずっと使用してきたが、さすがに動作が重くなりまともにインターネット鑑賞もできなくなってきた。文字をタイプしても反映されるまでに1秒程度のラグが生じるようになり、小説を書くのにも支障が出てきたのでいよいよ買い替えを決心した。
TouchBarに魅力を感じないので最新のMacBookPro2018ではなく2017モデルを購入した。動作は劇的に早くなったが、2011モデルのキーボードとのタッチの違いにどうしても慣れることができなかった。いちおう物書きを自称しているのにこれは致命的だった。あまり気が進まなかったが、外付けキーボードを購入することにした。
薄型にするための機能(バタフライキーボード)のせいで余計な外付けインターフェースを使うのは本末転倒な気がするけれど……。
ネットで評判が良かったHHKBのlite2 for Macキーボードを購入したのだけれど、導入するまでにもう心が折れそうなくらい大変だった。正直に言って家電量販店に返品しようかと本気で思ったし、本当に店の前まで持って行きさえした。カスタマーセンターの対応が丁寧だったので、なんとか導入まで頑張ることができた(結局自力で解決したけど)。HappyHackingの名はダテではなく、ハッカーでもない自分は使うことすら許されないのかと思った。
せっかく苦労したので、どのような解決方法を試したのか残しておこうと思う。
■環境
PC:MacBookPro2017
OS:HighSierra 10.13.6
■現象
まずは公式サイトから最新のデバイスドライバ(Ver.3.0.1)をダウンロードしインストールを行ない、キーボードを接続した。専用のキー割り当てツールが[システム環境設定]から起動できるようになったが、ツール上でキーボード入力を認識しない。日本語キーボードの文字設定画面が表示されるはずが、英語キーボードとして表示されている。
適当なテキストエディタに文字を入力してみると、どうやらJISキーボードではなく英キーボードとして認識されているらしく、「Kana」キーや[HH]キーの入力を受け付けず左コマンドキーは「`」(バッククオート)として入力される。
■やってみた対処方法
⑴ まずは公式サイトのFAQに沿って試してみた。
どうもQ7の「High Sierra(10.13.1)で、Mac用ドライバーをインストールしたにもかかわらず、刻印どおりに入力できません。」と同じ現象のように思われる。
→しかし、「セキュリティとプライバシー」には何もブロックされた様子はなかった。
⑵基本的事項の確認
・キーボードを接続しているUSBポートの問題かと思い、別のポートで試してみた
→効果なし。
・セーフブートで起動し、アンインストール→インストールを実施
→効果なし
・「システム環境設定」→「キーボード」でキーボードをJIS認識させた状態でインストールを実施
→効果なし
⑶正常認識させるのはあきらめてキーボードのリマップツールを使用する
ネットで調べてみたら、同じような現象に悩んでいる人がけっこうおり、Karabiner-elementsというキーリマップソフトで機能を補っているようだった。
なので、同じようにKarabiner-elementsをインストールしてみたが、どうも思うようにリマップされない。HHKBのキーボードドライバと競合しているのかと思って、ドライバをアンインストールしても、やはりリマップされない。Karabiner-elements側がHigh Sierraに未対応という情報もあったが、公式では対応されていると書いてあり、情報が錯綜していた。
⑷OSのバージョンをダウングレードする
購入した時のOSが10.13.4だったので、Time machineのバックアップで戻してみた。
→効果なし。Karabiner-elementsを試してみたが、やはり正常に動作しない。
⑸HHKB(PFU)のカスタマーセンターに問い合わせる
自力での解決は諦めて、HHKB(PFU)のカスタマーセンターに問い合わせてみた。問い合わせてみると次の日の朝には返事が来た。上記の通りすでに試した対処方法を提示されたけれども、メールで再問い合わせしてみると、翌日朝にはリプライがあった。
IO情報の出力と、ターミナルで以下のコマンドの実行を試してみてはどうか、と提示された。
sudo kextutil -nt /Library/Extensions/HHKeyboard.kext
実行してみると、以下の結果が表示された。
Kext rejected due to insecure location: <OSKext 0x7ff40c910e10 [0x7fff8883daf0]> { URL = "file:///Library/StagedExtensions/Library/Extensions/HHKeyboard.kext/", ID = "jp.co.pfu.driver.HHKBLite2" }
Kext rejected due to insecure location: <OSKext 0x7ff40c910e10 [0x7fff8883daf0]> { URL = "file:///Library/StagedExtensions/Library/Extensions/HHKeyboard.kext/", ID = "jp.co.pfu.driver.HHKBLite2" }
Diagnostics for /Library/Extensions/HHKeyboard.kext:
どうもセキュリティで弾かれているようだ。
そしてkextutil実行時に「機能拡張がブロックされました」というメッセージが表示されたので、「セキュリティとプライバシー」画面にてブロックを許可してみた。
→しかし、やはりキーボードは正常認識されなかった。
⑹ふたたび、自力で調べる
カスタマーセンターへの問い合わせと並行して、自力で調べてみた。
「Kext rejected due to insecure location」で検索してみると、日本語の解説はほとんど見つからなかったが、海外のFAQサイトにおいてSystem Integrity Protecton (SIP)が原因ではないかという書き込みを見つけた。
■最終的な解決方法
System Integrity Protecton (SIP)の無効化し、ドライバのアンインストール→インストールを実行したら、正常にJISキーボードとして認識されるようになった。
SIPの無効化方法については色々解説サイトがあるのでみてください。
外部インターフェース全般のドライバの不正認識の問題についての解説ページにはSIPについて書いてあったりするけれど、キーボードに限定するとと少なくとも日本語の解説ページには情報が見当たらなかった。
OSが新しくなるとサードパーティのデバイスドライバは苦労するけれど、これほどまでに苦戦するとは……。
あとは、結局自力で解決できたけれど、カスタマーセンターの対応には感動した。僕が勤めている会社でも度々ユーザからの質問が飛んできて最優先で対応しているけれど、さすがに次の日の朝には回答できない。弊社のカスタマーセンター窓口は技術者ではないので、窓口→フィールドエンジニア→開発技術部(僕のところ)と質問が降りてくるまでに最低でも1日くらいのタイムラグが生じてしまう。きちんと窓口と技術者が通じている(もしくは技術者自身が窓口になっている)のだろう。さすがである。
キーボードを使用するまでの過程でけっこうMacのドライバ周りについては詳しくなれた。仕事でWindowsのデバイスドライバの開発は関わったりするけれど、Macについては無知だったので良い勉強になった。
この記事もHHKB lite2 for Macで書いた。内臓キーボードよりはるかにタイプしやすい。廉価版なのでタイプ音は大きいけれど、家で使う分には問題ない。
これでガシガシ小説を書いていく予定です。