leopardgeckoのブログ

Macの関連事項など

日本語版ローグ(Rogue 5.4)for macOS よもやま話 その7。<カスタマイズ>

以前の記事で公開したMac用日本語版ローグ(Rogue)についての雑談です。

頻回のアップデートで申し訳ないのですが、バージョン027をリリースしました。今回の主な機能追加は背景色の設定を変更できるようになったのと、ゲーム終了時には自動でウインドウを閉じたりターミナルを終了したりするようになったことです。CUI版はインストール時のオプションを追加して、背景を変更しなかったりカーソルを常に表示するバージョンでインストールすることができるようにしてみました。以下、それぞれの機能について私見を述べます。

背景色について

f:id:leopardgecko:20171026144452p:plain

当初背景を黒に決め打ちしていたのは、カラー表示する時に背景が白だとかなり見にくくなってしまうためです。Macのターミナルはデフォルトが白背景ですから、それをどうするかというのが問題でした。背景色を変更するオプションを追加しようかと考えたこともあったのですが、基本方針として元のソースコードをいじるのは最小限に留めたいという考えがありました。ターミナルの環境設定をいじれば済む話ではあるのですが、デフォルトで背景が白になるのは何とかして避けたいと思いました。そこで結局起動時に背景を黒にする機能のみを加えたのですが、これで良いのだろうかという疑問はずっと感じていました。

つい最近AppleScriptでターミナルの背景色を変更できることを知り、元のソースをいじらなくてもいけることがわかりましたので今回の機能追加となりました。GUI版に機能を加えるのはAppleScriptを書き換えるだけですから簡単ですが、問題となるのはCUI版の方です。CUI版にどういう形で背景色の設定を盛り込むかと考えた結果、インストール時のオプションで選べるようにしてみました。背景の設定をコロコロ変える人はあまりいないでしょうし、変えたいと思った時でもHomebrewならば再インストールするのは簡単です。CUI版を使う人ならオプションを指定してインストールすることに対して敷居の高さを感じる人は少ないでしょう。

ゲーム終了時の動作について

先週のアップデートでゲームが終わった後にも繰り返し遊べる機能をつけました。また、今回ではゲームを終了した時には自動的にウインドウを閉じる機能を加えました。ターミナルで開いているウインドウがjRogueだけの場合はターミナル本体も終了します。なるべくスタンドアロンのアプリっぽい動作にしつつ、ターミナルへの影響を最小限に留めるための仕様です。

どちらも当たり前の機能のようですが、AppleScriptでやるとなると案外面倒なのです。繰り返し遊ぶ機能のためにAppleScriptの中でシェルスクリプトをループさせるという構造になっています。また、AppleScriptで普通にウインドウを閉じたりアプリを終了させようとするとどうしてもターミナルのアラートが出てしまうので、それをどうやって避けるのかが問題でした。結局、AppleScriptの中のシェルスクリプトからさらにAppleScriptを呼び出すという3重の入れ子構造になってしまいました。その点に興味がある方はjRogueのパッケージを開けてスクリプトを見てください。(その部分は入れ子構造のスクリプトが一行で書いてあるので、ものすごく見にくいですが・・・)

ゲームオーバーになるとウインドウを手動で閉じてまた起動しなければならないのはGUI版の致命的な欠陥だと思っていましたので、これでようやく普通に遊べるアプリになったかなと思います。

カーソルについて

これまであまり触れなかった話題です。オリジナルのRogueではプレイヤーの位置でカーソルが表示される仕組みになっているのですが、jRogueではそれをあえて表示しないようにしています。というのは、Macのターミナルのデフォルトの設定のままカーソルを表示させるとカラー表示の時に肝心の「@」が見にくくなりとても格好悪い感じになってしまうのです。
昔のRogueのプレイ動画を見るとカーソルはアンダーバーで点滅表示になっていましたので、昔の端末ではカーソルを表示しても「@」が見えなくなってしまう状態にはならなかったのかもしれません。Macのターミナルでもカーソルの設定を変えればアンダーバーかつ点滅表示にすることが可能です。実際にやってみたところ、当然ながら「@」が見にくくなることはないですし、見た目もなかなか格好良いのです。

f:id:leopardgecko:20171026154358g:plain

しかし残念ながらAppleScriptではターミナルのカーソル設定で変更できるのは色の表示だけであり、アンダーバーに変えることはできません。そこで苦肉の策として、CUI版ではインストール時にカーソルを表示するオプションを選べるようにしてみました。興味がある方はCUI版をカーソル表示ありでインストールして、カーソルをアンダーバーかつ点滅表示にしてみてください。それがおそらく本来のRogueのプレイ画面です。

ローグのカスタマイズについて

本来オリジナルローグの外観はとてもシンプルなものであり、あちこちカスタマイズする要素を加えるのは邪道かもしれません。しかしローグにはとても長い歴史があり、様々な機種に移植された際の細かな違いが存在します。ローグがどういうものかというイメージは人によって結構な違いがあるものでしょう。自分が昔やりこんだスタイルを再現したい人、オリジナルなのだから元の形にこだわりたい人、自分なりの美しいスタイルにこだわる人、細かいところはどうでもいいから楽しく遊びたいという人などなど、色々なパターンがあるだろうと思います。ローグを配布している者の端くれとしてはそういう様々なニーズに応える必要があるのではないかなと思っています。

しかしスティーブ・ジョブズの信奉者としてはあえてシンプルな形に留めておくのにも意味があるとも思っており、その兼ね合いをどうするのかが悩ましいところです。

日本語版ローグ(Rogue 5.4)for macOS よもやま話 その6。<機能追加と不具合>

以前の記事で公開したMac用日本語版ローグ(Rogue)についての雑談です。

ここ最近は頻回の機能追加や不具合修正が続きましたので、個人的な忘備録も兼ねて追加した機能と修正の大まかな内容を説明します。

機能追加について

f:id:leopardgecko:20171024155553p:plain

主な機能追加はオプション設定が細かくできるようになったことです。これについては初期の段階から考えていたことだったのですが、どうやって実装すべきか決めかねて今まで放置してしまいました。

オプションの中で個人的に重要な要素だと思っているの「terse」、つまり「メッセージの簡潔な表示」です。実際にオンとオフでくらべていただければわかりますが、これがオンになっていると表示されるメッセージが全体的にやや短めになります。最大のメリットは戦闘の最中にスペースキーを押す必要がなくなることで、ゲームがサクサク進むようになります。このオプションを簡単に使えるようにしたいというのが当初からの考えだったので、一応これまでのバージョンでも上級モードを選ぶことによってオンにすることができました。しかし上級モードは識別の巻物が五種類という設定のため、巻物が一種類でterseをオンにするためにはいったんゲームを始めてからオプションを変更するしかない状況でした。今回のアップデートでそれがようやく改善できました。

曲がり角で止まるかどうかは個人的には「止まらない」の一択だと思っているのですが、『運命の洞窟へのガイド』にはあえて止まるのをデフォルトにしているような記述があります。作者の意向を無視するわけにもいかないので、止むを得ず(?)このオプションも入れることにしました。

おまけ的な要素としては、好きな果物の名前を変更できるオプションを追加しました。メッセージ分離版から受け継いだデフォルトの「こけもも」は言葉の響きがかわいくて好きなのですが、『運命の洞窟へのガイド』には「これには君が食べるのが楽しみな果物の名前を入れるべきだ」と書いてあります。それが作者の意向ならば簡単に設定できる仕組みにしなければまずいだろうと考えオプションに加えました。果物の名前は英語や日本語だけでなく絵文字で🍏を指定するようなことも可能です。注意点としては絵文字はターミナルでは半角1文字で表示されて次の文字と重なってしまうので、絵文字の後には半角スペースを加えておいてください。

不具合について

今まで気がつくのが遅れてしまった不具合です。jRogueは特定の条件下で設定保存ができなくなります。jRogueはAppleScriptで書かれており、この不具合はAppleScriptそのものの不具合に関連した現象だと思われます。具体的には、jRogueのアプリが含まれるフォルダごとMacに保存した場合は設定が保存できなくなります。これを防ぐにはアプリだけをMacに保存するか、フォルダごと保存した場合は中のアプリだけをいったんどこか別の場所に移してまた元に戻すという作業が必要です。おそらくMacのセキュリティ機能(具体的にはAppTranslocation)にAppleScriptが対応していないために起こる不具合だと思われます。

こんな説明は読む方も大変でしょうし対処法もわけがわからないものですから、今回のバージョンからはディスクイメージを開くとjRogue.appをアプリケーションフォルダに入れるようにうながすウインドウの背景画像を表示するようにしてみました。これでアプリのみをアプリケーションフォルダに移動することになりますから、設定の保存ができなくなる不具合は避けられると思います。

f:id:leopardgecko:20171024173236p:plain

正直言いますと、こういうスタイルは見た目も格好良くて前から一度やってみたいと思っていたのもあります・・・😅

 

前々回のアップデートで繰り返し遊べる機能をつけましたが、今回の機能追加と合わせてサクサク遊べて細かいところまで好み通りに設定できるローグに近づいたかなと思います。何かお気付きの点やご要望などありましたらお知らせいただければ嬉しいです。😀

Planckキーボードのキーマップ。

はじめに

Planckはファームウェアの書き換えでキーマップを変更できますが、設定ファイルはC言語で書かれているために単にキーを入れ替えるだけではなくある程度複雑な動作も可能になります。

色々試してみましたので、それらの機能をフィーチャーしたキーマップファイルを公開してみます。

ここからダウンロードしてください。

2018/12/25追記:最新のQMK Firmwareコンパイル時にエラーが出る場合は、keymap.cの中に2箇所「breathing_speed_set」というところがあるので、それらを両方とも「breathing_period_set」に書き換えてみてください。

主な特徴

1)デフォルトレイヤーはMac用。ほぼ普通のQWERTY配列のまま。LowerキーとRaiseキーは英数・かなキーとしても使える。このレイヤーはiPadiPhoneなどiOS機にも使える。

2)Windows用のデフォルトレイヤーも用意。Adjustレイヤーから適宜切り替え可能。PlanckはWindowsではJIS配列のキーボードとして認識されるが、レジストリを書き換えたりせずにそのままの状態でMacと同じUS配列のキーボードとして使える設定にした。LowerキーとRaiseキーは無変換・変換キーとしても使えるので、Windows標準の機能でそれぞれをIMEオフとオンに切り替えておくとMacと同じ使い方ができる。(IME云々に関してはこちらの記事参照)

3)Lowerは主に数字入力とファンクションキーのレイヤー。テンキー様の配列もあり。レイヤーをロックすると数字入力が格段に楽。(レイヤーのロックについては後述)

4)Raiseは主に記号入力とメディアキーのレイヤー。

5)移動とマウス操作用のFunctionレイヤーを追加。Escキーの長押しでFunctionレイヤーがオンになる。マウスポインターの移動速度は三段階で調節可能。

6)Escキーを押しながらLowerまたはRaiseを押すとそれぞれのレイヤーにロックできる。Lowerレイヤーにロックすればテンキーとして使えるので数値入力が楽。

7)LED対応。スイッチにLEDを仕込んである場合はLowerとRaiseをオンにすればLEDが光る。それぞれのレイヤーで光るパターンを変えているので、レイヤーをロックした場合にもどちらのレイヤーがオンになっているのかがわかる。(出来合いのキーボードのように全てのキーにLEDが仕込んであると点滅が鬱陶しいので私はLowerとRaiseキーだけに仕込んでいます。後述の動画参照)

8)サウンド対応。レイヤーをロック・ロック解除したりAdjustキーを押したりするとそれぞれ対応した音が鳴る。

9)マクロ出力(一つのキーで文字列を出力できる)。

 

 LEDとサウンドの動作はこんな感じです。

解説

配列はすでに皆さんお好きなようにカスタマイズしているでしょうから、配列はともかくとして機能の部分で参考になるところがあればと思い公開してみました。zip形式での配布になったのは、keymap.cだけでは機能が再現できないため、config.hとrules.mkも含める必要があったからです。

私が知る限りPlanckの説明としての主な新出事項は、WindowsでJIS配列として認識された場合にUS配列として使える方法だろうと思います。キーマップの単純な置き換えでも一応は使えるのですが、それのみではシフトキーを押しながら「;」や「'」をタップした時の記号の置き換えはできません。そこでその二つのキーに特殊な処置を加えました。

(実はこの二つのキーに限らずシフトキーの動作も含めて全てのキーを一括してJISからUSに変換できる方法もあるのですが、Planckでは数字や記号を別のレイヤーで入力するやり方が一般的なためシフトキーの操作を考慮する必要性があまりないのでここでは省略します。PreonicやGH60などの独立した数字キーがあるキーボードでJISをUSに変換したい方がもしおられたらご一報ください)

Planckには何かがロックされている場合のインジケーターになるものが全くないので、LEDの点滅の違いで今オンになっているレイヤーを表してみました。

マウスキーを使っている人はあまりいないようですが、補助的な使い方には良いかもしれません。スクロールホイールはちょっとスクロールしたい時や横スクロールをしたい時など意外と使えます。

様々な条件によって動作が変わるようになっています。ここがQMK Firmwareの醍醐味だろうと思います。例えばデフォルトのレイヤーの違い、レイヤーがロックされているかどうかの違い、シフトキーが押されているかどうかの違いなどを判定してそれに対応した動作になります。その辺りは個人的に結構苦労しました。

タップダンス(二回タップで動作が変わるなど)も試してみたのですが、タップの判定が結構シビアで使いにくいと感じたのであえてここでは触れません。

最後に

何せド素人が書いたソースコードですからとんでもない間違いがあるかもしれませんが、何かの参考になれば幸いです。

Planckキーボードのスイッチとキーキャップ。

あれからPlanckを色々いじっている最中ですが、記録も兼ねて現時点でのスイッチとキーキャップの状況を書いておくことにします。この手のキーボードは個人の好みが反映される度合いが強すぎて内容をそのまま流用できることはあまりないと思うのですが、何かの点が参考になれば幸いです。

とりあえずキースイッチはこんな感じで。

f:id:leopardgecko:20171010111834j:plain

スイッチはすべてGateronのもので、基本はご覧の通りの赤軸です。修飾キーとして使うキーは小指で押しっぱなしにしても楽になるように、赤軸よりもさらに軽いGateronの白軸(Clear軸)に変えてみました。また、一番下の段の並びはまだ慣れずに押し間違いも多いので、LowerとRaiseキーは茶軸に変えて、さらにバネは白軸のものを入れてみました。これが意外といい感じで、重さは白軸と同じですがタクタイル感があるので押し間違いがあれば気がつきます。

さらに一番下の左から二番目のキーは配列設定を切り替えるなど特殊な機能のレイヤーに移動するキーに設定して、重くてクリッキーな緑軸にしてみました。うっかり誤爆すると面倒なことになるキーなので、両隣の白軸とは重さも感触も全く異なるキーを選びました。

Planckのプレートはスイッチ周囲にわずかに余裕があるので、はんだ付けした後でもスイッチのトップカバーを外して中の軸やバネを交換することができます。実際私は最初は全部赤軸で作ったのですが、後から軸とバネを上記のように交換しています。カバーの外し方については「cherry mx open」などのキーワードで検索すればスイッチを簡単に分解できる動画が色々見つかりますので参考にしてみてください。道具はダイソーでも売っている先が細いピンセットがあれば十分で、特殊な工具は必要ありません。作業自体も一度やり方がわかれば意外と簡単なものです。

スイッチを分解できるようになると軸とバネの組み合わせが自由になりますから、Gateronの白軸用のバネと茶軸を組み合わせて軽いタクタイルのスイッチを作ったり、黒軸用のバネに青軸を組み合わせて重いクリッキーなスイッチを作ることもできます。

ちなみにGateronのボディにCherry MX純正の軸を入れることもできるのですが、中身は微妙に違いがあるようです。Cherry MX純正の青軸をGateronに入れてみたところ例のカチカチ音があまりしなくなりました。茶軸などのタクタイルタイプでは違いはほとんど感じられませんでした。

 

キーキャップはたまたま余っていたCherry Profileのものを流用して、LowerとRaiseキーだけクリアタイプに変えてみました。クリアのキーキャップはCherry MXのテスターを買ったらついてきたものです。

f:id:leopardgecko:20171010112310j:plain

なぜこの二つだけクリアなのかというと、ここにLEDを仕込んだからです。発光させるとこうなります。

f:id:leopardgecko:20171010112508p:plain

気が変わったらLEDを変更できるように、スイッチの中に丸ピンICソケットを仕込んでLEDを差し替え可能な仕様にしています。スペースキーや左上のキーにもソケットを入れて、気分次第でそちらにLEDを差し替えることもできるようにしてみました。上に書いたスイッチの分解ができればトップカバーを外して中にソケットを入れるだけなので大した手間ではありません。

ちなみに、ここに入れられるLEDは3mmのいわゆる砲弾型か2x3x4mmの角形です。Planckは横からスイッチが見えるタイプのキーボードなので、いくらか見栄えの良い(と私が勝手に思っている)2x3x4mmのLEDを入れてみました。

 

実はPlanck用にXSA profileのキーキャップも入手したのですが、OEMやCherry profileとは違って指を置く位置に傾斜がついていないので指の収まりが今一つで、ホーミングキー(突起などがついている「F」と「J」キー)は他のキーよりわずかに深めになっているだけなので違いがわかりにくいなど、少々使いにくいものでした。見た目はスッキリしていて格好良いのですが、残念ながら使用感の問題で今のところはお蔵入りになっています。

 

今使っているスイッチやキーキャップはまだ暫定的なもので、今後も検討を重ねて何がベストなのかを探っていきたいと思っています。

 

キーボードの機能的な中身、つまりキーマップについてはまた別の記事で書くことにします。

PlanckキーボードをMacでカスタマイズしてみよう。 <応用編>

はじめに

前回の記事でPlanckの基本的なカスタマイズ方法の紹介をしましたが、今回は他にいくつか実例を紹介します。これはPlanckというよりはQMK Firmware全般の説明になるのかもしれません。(記事を書くのにまだ慣れないPlanckを使っているのでタイプミスが多くて大変です・・・😅 )

以下、全て「keymap.c」ファイルの書き換えの説明です。特に説明がなければそのファイルの中の「[_QWERTY]」の設定を書き換えます。「keymap.c」については前回記事を参照してください。

右側にもシフトキーを追加する。

シフトキーが左側にしかないのは不便です。この際、右側にも追加してしまいましょう。かといって右側のキーが減ってしまうのは困るので、長押しでシフトキーの役割を兼用するように書き換えます。私はエンターキーと「'」キーの位置を入れ替えていて、「'」キーをシフトキー兼用にしています。その場合は、「KC_QUOT」を「MT(MOD_RSFT,KC_QUOT)」に書き換え、「KC_ENT」と位置を入れ替えます。

長押しと判定されるまでの時間の調節はこちらのサイトが参考になります。

Windowsでも使うときのために「半角/全角」キーを追加する。

Planckはコンパクトなキーボードですから持ち歩いて他の場所で使うのも楽です。メインマシンはMacでもWindows機を使う機会もあるでしょうから、キーボードをどちらでも使えれば便利です。そこでWin機でも日本語入力ができるように「半角/全角」キーを追加してみます。キーの位置ですが、デフォルト設定では一番左下のキーはバックライトキーであり、バックライトを使わないなら何の役にも立ちません。そこでこれを「半角/全角」キーに変更してしまいます。単に「BACKLIT」を「KC_ZKHK」に書き換えても良いのですが、独立したキーにしてしまうと肝心のMacで使う時に何の役にも立たなくなってしまってもったいないので、長押しした時にはコントロールキーとして使えるようにしてみます。その場合は「CTL_T(KC_ZKHK)」と記述します。デフォルトのコントロールキーの位置は押しにくいので一石二鳥と言えるでしょう。

音量調節を細かくする。

キーボードでの音量調節は割合大雑把なので、イヤホンで音楽を聴いている時などはもっと細かく音量調節をしたくなります。Macには細かい音量調節のショートカットがあり、「Shift」と「Option」を押しながら音量調節キーを押すと標準の四分の1の単位で音量調節ができるようになります。これをPlanckの設定に反映するには、「KC_VOLD」を「LALT(LSFT(KC_VOLD))」、「KC_VOLU」を「LALT(LSFT(KC_VOLU))」に書き換えます。

メディアキーの割り当てを修正する。

デフォルトでは曲送りのキーは「KC_MNXT」になっているのですが、これはあくまでWindows用であってMac本来の曲送りのキーではありません。このままでも一応iTunesでは動作するのですが他のソフトでは動作しないことがあります。例えば私の環境ではAmazon Musicで曲送りができませんでした。iTunes以外の音楽再生ソフトを使う可能性があるならばMac本来の曲送りのキーである「KC_MFFD」に変更しておいた方が無難です。ちなみに曲戻しのキーは「KC_MRWD」です。

レイヤーを増やす。

コマンドキーやコントロールキーなどは一番下の段にありますが、これはこれで良いとしても、もっと楽にアプローチできるキーも修飾キーとして使えれば便利です。ただ単に修飾キーも兼ねるだけなら上で挙げた例のように記述すれば良いのですが、ここではデフォルトのレイヤーである「Lower」や「Raise」とは別にオリジナルのレイヤーを作って、「a」キーの左隣という好位置にある「Esc」キーの長押しで呼び出せるようにしてみます。

「keymap.c」の最初の方にある「enum planck_layers」というところがレイヤー名の定義をしているところなので、ここにオリジナルのレイヤー名を追加します。とりあえず「_MYESC」としてみます。下の画像のように「_ADJUST」の後に一行追加するのですが、「_ADJUST」の後ろに「,」を付け加えるのをお忘れなく。

f:id:leopardgecko:20170914075454p:plain

あとは下の方にある「_ADJUST」の設定の下に、新たに「_MYESC」の設定を加えます。他のレイヤー設定をいったんコピペして好きなキーに書き換えると良いでしょう。下の例はカーソルやページの移動を割り当てたレイヤーです。どうしてそんなものをわざわざ作ったかというと、他に使っている60%サイズキーボードの設定を引き継ぎたかったからです。デフォルトのカーソルキーは最下段ですからホームポジションから遠くて押しにくいですし。他のキーボードで慣れている設定があればそのままPlanckでも使えるというわけです。

レイヤーの書き足しの際には「_ADJUST」の最後にある「}」の後に「,」を付け加えてください。これを忘れるとコンパイル時にエラーになります。

f:id:leopardgecko:20170914080059p:plain

 

「ESC」キーの長押しにこのレイヤー呼び出し機能を割り振るには、「[_QWERTY]」のところにある「KC_ESC」を「LT(_MYESC,KC_ESC)」に書き換えます。コンパクトサイズのメカニカルキーボードはFnキーで独自機能を呼び出せるものが多いですが、こういうやり方でそれっぽい機能を再現できます。

テンキーっぽく使える設定

さらなる応用として、下のようにテンキーっぽく使えるレイヤーを作ることもできます。Planckはテンキーと同じ格子状の配列ですから、通常配列のテンキーレスキーボードより数字入力が格段に楽になります。

f:id:leopardgecko:20170914124627p:plain

私は一番左上の「Tab」キーの長押しにこのテンキーっぽいレイヤーの呼び出し機能を割り振っています。数字をどのキーに割り振るかで少々悩みましたが、右手をホームポジションから動かさずにタイプできる位置にしてみました。

 

長押しの併用は基本的にどのキーに割り振ることもできますが、これを設定すると当たり前ですが元のキーの押しっぱなしの入力はできなくなりますのでご注意を。

とりあえず今回はこのくらいで。

PlanckキーボードをMacでカスタマイズしてみよう。 <導入編>

2018/12/25追記:最新版のQMK Firmware対応のため記事を全面的に改定。

はじめに

今回は「Planck」というキーボードの話です。

一部で有名な(?)Planckといういわゆる40%サイズの格子型キーボードがあります。と言われても興味のない方には何のことやらさっぱりでしょうが、要するにこういう形の非常にコンパクトかつシンプルなキーボードです。

f:id:leopardgecko:20170913224757j:plain

小さいのですがメカニカルキーボードなので打鍵感はしっかりしたもので、外装は肉厚のアルミでガッシリ感や高級感も感じられます。金属外装のためかサイズの割に重量もあるので意外なほど安定感もあります。ただしこれは一般の店舗やネットショップなどでは売っておらず、MassDropなどでのみ入手できる組み立てキットという特殊な部類のキーボードになります。

組み立て式なのでCherry MX互換のどんなスイッチでも選べる(その気になればキーひとつ単位で様々な種類のスイッチを選ぶことも可能)ということの他に、ファームウェアを書き換えることでハード的にキーマップがいくらでも好きなように変更できるという特徴があります。つまりMacやPCでキーリマップソフトを使う必要がなく、どの本体に繋いでも自分がカスタマイズしたキーマップがそのまま使えるということです。(これはPlanckのみの特徴ではなく、このような機能がある組み立て式キーボードはサイズや形状が違うものが他に何種類も出ています)

私はこのPlanckをごく最近入手したのですが、組み立てはすぐに終わったものの、いざMacでキーマップの作成や転送をやろうとすると入門向けの情報が少ない上に内容が古くてそのままでは使えない情報が結構あり、意外と苦労してしまいました。MassDropでは大人気のキーボードなので日本での情報もそれなりにあるだろうと考えていたのですが少々甘かったようです。そこで備忘録も兼ねて、Planckのキーマップ設定をMacでカスタマイズする手順を紹介することにしました。

本体の入手方法や組み立て方などは他のサイトにお任せするとして、説明はすでに組み立てが終わっているところから始めます。

組み立てただけでもUS配列のキーボードとして普通に使えるのですが、日本語入力には専用のキーが欲しいですし、デフォルトのキーマップを変更したい人もいるでしょう。キーマップを書き換える機能を使うにはいくつかの準備が必要になります。

必要ソフトの導入

QMK Firmwareを入れる前にHomebrewの導入が必要です。Homebrewをお使いでない方はこの際入れてしまってください。(そうすれば私が別記事で紹介しているjRogueというゲームをターミナルで遊ぶことも出来ますよ!😉 )

次にQMK Firmwareをインストールします。(英文で問題ない方は公式サイトのガイドに従って導入すれば良いので以下の記事を読む必要はありません)

まずターミナルでQMK Firmwareを入れたいディレクトリに移動して、以下のコマンドを入力すればダウンロードとインストールが完了します。インストールには結構時間がかかりますので気長に待ってください。

git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
util/qmk_install.sh

作成した環境のテスト

キーマップをコンパイルしてPlanckに転送できるかどうかをテストしてみます。

PlanckをMacに繋いだ状態で、以下のコマンドを入力します。この場合の「rev4」というのはPlanckのPCBのバージョンですので、適宜お持ちのPCBのバージョンに書き換えてください。ちなみに2018年12月現在での最新バージョンは「rev6」です。このmakeコマンドはqmk_firmwareディレクトリで実行してください。

make planck/rev4:default:dfu

追記:バージョンがrev6の場合は以下のように「dfu-util」としてください。

make planck/rev6:default:dfu-util

 

デフォルトのキーマップがコンパイルされてファームウェアの転送待ちの状態になるので、Planckの裏にある小さなボタンを尖ったもので押してファームウェアが書き換えられるモードに切り替えます。少し待ってPlanckから電子音が鳴りターミナルに以下のようなメッセージが表示されれれば成功です。

Bootloader Version: 0x00 (0)
 〜中略〜
Validating... Success
0x6980 bytes written into 0x7000 bytes memory (94.20%).

自分用のキーマップフォルダを作成

次に、自分用のキーマップを作るフォルダを作成します。QMK Firmwareのインストールで作成されたフォルダをqmk_firmware→keyboards→planck→keymapsと辿っていき、keymapsフォルダの中に自分用のフォルダを作ります。ここでは仮に「leopardgecko」というフォルダを作ったとします。keymapsフォルダの中にある「default」というフォルダを探し、その中にあるファイル(config.h、keymap.c、rules.mk)を先ほど作った「leopardgecko」フォルダの中にコピーします。そのファイルのうちの「keymap.c」がキーマップを設定するファイルです。

カスタマイズ例(「英数」「かな」キーを追加する)

カスタマイズの一例として、スペースキーの両隣にある「Lower」と「Raise」キーを一回押しすると「英数」「かな」キーとして動作する方法を紹介します。もちろん長押しの時は「Lower」と「Raise」としての本来の動作をします。US配列のキーボードを使っている人にはcommandキーのリマップでおなじみのカスタマイズですが、この設定をキーボード本体に保存できるのが最大の違いです。

先ほどコピーした「keymap.c」をテキスト編集できるソフトで開くと「[_QWERTY] = {」という行があります。その下に「KC_云々」というような記述が並んでいるところが基本レイヤー(要は普段使うところ)のキー設定です。

f:id:leopardgecko:20170913225638p:plain

ここの「LOWER」を「LT(_LOWER,KC_LANG2)」に書き換え、「RAISE」を「LT(_RAISE,KC_LANG1)」に書き換えます。これで「Lower」「Raise」キーが一回押しの時はそれぞれ「英数」「かな」キーとしても動作するようになります。

Planckに設定ファイルを転送

このキーマップをPlanckに転送するには、先ほどのテストと同じ要領で以下のように入力します。ここで「rev4」というのは先ほどのテストの時にも出てきたPlanckのPCBのバーションですので、お持ちのPCBのバージョンに書き換えてください。「leopardgecko」というところは先ほど作成したフォルダの名前にしてください。

make planck/rev4:leopardgecko:dfu

(rev6の場合は上と同じように「dfu」を「dfu-util」に変えてください)

 

これでファームウェアコンパイルされ自動的にPlanckに転送されます。Planckから電子音が鳴ったら成功です。

 

デフォルトのキーマップに戻したい時は、テストの時に行った

make planck/rev4:default:dfu

と入力すればOKです。

(rev6の場合は上と同じように「dfu」を「dfu-util」に変えてください)

 

おまけ

コンパイルするときにいちいちqmk_firmwareディレクトリに移動するのは面倒です。そこで、.bashrcに以下のような記述を加えておくと「planck」と入力しただけでコンパイルから転送までやってくれます。この例は書類フォルダにqmk_firmwareを入れた場合ですので、ディレクトリは適宜変更してください。

alias planck='make -C ~/Documents/qmk_firmware/ planck/rev4:leopardgecko:dfu'

日本語版ローグ(Rogue 5.4)for macOS よもやま話 その5。<カウンターカルチャー>

以前の記事で公開したMac用日本語版ローグ(Rogue)についての雑談です。

ローグ5.4の和訳作業をしている時に不思議に感じたことの一つに、「幻覚をおこす水薬」で起こる作用がやたらと凝っているということがあります。モンスターやアイテムがめまぐるしく変化するのはプレイ画面を見ているだけでもわかりますが、例えば色が出てくるメッセージのときは表示される色の名前がランダムに変わったりしますし、メッセージの内容も幻覚時かそうでないかで変わるものが結構あるのです。それ自体はゲームの進行にはほとんど関係がないので、ほとんどが単なるお遊びの要素です。

↓ 例:「目が見えなくなる水薬」や「空中に浮き上がる水薬」で使用時のメッセージが変わる。

f:id:leopardgecko:20170909231835p:plain

これはローグの製作者が「幻覚」に強い思い入れを持っていた証なのではないかと思います。私がそう感じたもう一つの根拠として、ソースコードに隠された(?)名称があります。「幻覚をおこす水薬」は元の英語版では「hallucination」なのですが、ソースコードの注釈には「LSD」と書いてあるのです。つまりこの水薬は実在の幻覚剤であるLSDをモチーフにしたものだったことがわかります。

↓ ソースコードに「LSD」と書いてある

f:id:leopardgecko:20170909232017p:plain

アメリカでLSDが全盛だったのは60年代後半から70年代始めのサイケデリックブームの時期でしょう。ローグが作られた1980年はすでに収束に向かっていた頃でしょうが、まだ70年代の記憶は新しい時期でしょう。製作者もLSDの使用経験があったのかもしれませんし、少なくとも身近に感じていたのは確かでしょう。

ここで突然スティーブ・ジョブズの話題に移りますが、ジョブズは60年代の音楽や文化すなわちカウンターカルチャーが大好きな人で、ボブ・ディランビートルズのディープなマニアでしたしLSDマリファナの経験もありました。ジョブズが活躍を始めた時期、つまり70年代後半はエレクトロニクスとカウンターカルチャーが非常に接近していた時期だったと言えるでしょう。これはアメリカ独自の現象だったのではないかという気がします。

ローグの製作者もジョブズと同様にカウンターカルチャーに強い親近感を覚えていたのではないかと思います。LSDの件に加えて、もう一つ根拠があります。添付文書の「【運命の洞窟】へのガイド」を見ると、オプションの説明でキャラクターの名前を変更する例がありますが、その名前は「Blue Meanie」と書いてあります。これは1968年に製作されたサイケデリックなアニメ映画の「イエロー・サブマリン」に出てくるキャラクターの名前で、この映画にはビートルズがアニメのキャラクターとして主演しています。ローグの製作者もジョブズ同様にビートルズのファンだったのでしょう。

↓ 「【運命の洞窟】へのガイド」より抜粋

f:id:leopardgecko:20170909234131p:plain

こういったことを総合的に考えてみると、70年代後半から80年代前半にかけてエレクトロニクスとカウンターカルチャーの親和性が非常に高い時期があったのだと思います。ローグがただのお硬くて真面目なファンタジーではなく、どことなく人を食ったようなユーモアに満ち溢れているのはそういうところからも来ているのではないかなと思った次第です。

2017/10/30 追記:

ローグの作者の一人であるKen ArnoldさんがLSDについてほんの僅かですが触れているコメントを発見しました。リンクはこちらです。(ちなみにこのコメントには他の重大な情報も含まれています)

Ken Arnoldさんが言うには、「LSDはスイスの科学者によって発見された。しかしバークレーLSDで何をやるかを考え出したと言えるだろう」だそうです。

Ken Arnoldさんはカリフォルニア大学バークレー校の学生でしたが、そこにローグの最初のバージョンを作ったメンバーの一人であるMichael Toyさんが編入してきたためにKen Arnoldさんもローグの開発に関わることになりました。バークレー校はローグ開発の重要な舞台であり、LSDと関係の深い場所でもあるということなのでしょう。