mofu.kemo.no is one of the many independent Mastodon servers you can use to participate in the fediverse.
かわいい感じのケモノ風のキャラクターや、頭身低めのマスコット的なキャラクターが嫌いじゃない方のためのマストドンサーバーです。おいでよ、もふけもの!

Server stats:

29
active users

私が OS X v10.11 に縛られてるのは現在のキー配列の設定がまだ記述できてないからなので、したいです。v10.15 に移行して完全に再現できるか未確認だけど、石橋を叩かないで行っちゃっていいよ。何とかなるでしょう。

仮に OS X v10.11 を手放せないんだったら、macOS v10.15 との「デュアルブート」にするという手もあるだろう。そこまでして残す必要もないと思うけど…。設定などを引き継がないで新規にシステムを導入した方がスッキリするという観点はある。

Karabiner の設定ファイルを見直してる。複雑なんだよな…。

設定したのが昔なのでだいぶ忘れているけど、Karabiner でこういう項目を定義して使ってる。確か、先に出現する定義が優先されるから specific な設定を上に記述してあるんだと思う。

「通常位置」は普通のホームポジションで使う場合の設定。「右一列右」は右手の構えを右へ一列ずらして使う場合の設定(ほぼ常にこれ)。「J‐Force」は試しに買った小さなキーボード(JF‐BTKBPS)を使う場合の設定。

物理的な三通りのキー配置に対してなるべく設定の記述を共通化したかったので、キー名を抽象化した状態で目的の機能を定義し、その抽象的なキー名を物理的なキーに対応付けるように構成した。「<include />」を二重に使う事でこれが実現できた。

「ref_…」というファイルの中では「{{KEY_Q}}」といった独自のキー名に対して「<autogen />」などを定義してある。「replacement_…」というファイルの中では「<replacementdef />」を使って「{{KEY_Q}}」から「KeyCode::Q」などへの置換を定義してある。

(整理して記述するのが面倒で中々取り掛かれないので、書ける所からダラダラと書いていきます。)

「F5・F6 キーにスクリーンショットを割り当てる」。元々空きになっている F5 と F6 のキーに、画面写真を撮る機能を割り当ててある。F5 は画面全体をファイルに保存。F6 は矩形領域を保存。shift‐F5 と shift‐F6 はそれぞれ、ファイルを作らないでクリップボードにコピー。

Mac では通常、command‐shift‐3 で画面全体を撮影して画像ファイルに保存できる。command‐shift‐4 では一部の矩形領域を指定して撮影できる。これらに control を加えると、ファイルに保存しないでクリップボードにコピーする。でも今の配列では、特に control を移動した影響でそのショートカットを片手で入力できないので、専用のキーを設ける事にした。実装は単純な読み替え。

「Fn キーを option_R に」。Apple Wireless Keyboard の JIS‐版では、左‐option と対称の位置に option ではなく fn のキーがある。(これは他の一部のキーボードと違って、fn を表すコードを送出するキーである。キーボード側で他のキーを読み替える働きをする「fn」とは異なる。)これはあまり有用ではないので、右‐option として働かせる。但し、fn と方向キーの組み合わせは home、end、page up、page down と解釈されて多用するので、その場合だけは fn のままになるようにしてある。

「左右シフトキーを『かな』『英数』として動作させる」。単独で押して放した場合は左シフトが「英数」の働きをし、右シフトが「かな」の働きをするようにする。押さえたままの場合はシフトキーの働きをさせる。但し、右も左も右シフトと見なす(これをテンキー呼び出しに利用する — 後述)。また、command や control や fn と共に押下された場合は適用対象外とし、通常通りに動作させる。

「『かな』『英数』をシフトキーとして動作させる」。スペースキーの左右にある「英数」と「かな」を、親指で押すシフトキーとして動作させる。但しどちらも左シフトと見なす(これを使ってテンキーの呼び出しを回避する — 後述)。

「『かな』『英数』のシフトを前置式にする」。和文入力モードの場合だけ、親指のシフトキーは前置も効くようにする。押しっ放しの普通のシフトとしても効くが、押してすぐ放した場合は次のキーが押下されるまでシフト状態が続く。JIS X 6004 の為の設定。設定ファイルでは「KeyCode::VK_STICKY_SHIFT_L」を使っている。

「tab-1-delete-P.-control 入れ替え」。これは名前の変更をサボったせいで内容と合わないようになってる。内容は次の三つ。

1) 「H」の物理キーを右‐control と解釈する。
2) delete の物理キーを「0 の三つ右」と解釈する。
3) 「0 の二つ右」の物理キーを delete と解釈する。

これは「右一列右」の replacement に含まれる次の対応付けと噛み合うように作られている。「基本再配置」で呼び出される。

4) 左‐control の物理キーを「P のすぐ右」と解釈する。
5) 「P の二つ右」の物理キーを「0 のすぐ右」と解釈する。
6) 「Y」の物理キーを「P の二つ右」と解釈する。
7) 「1」の物理キーを「L の三つ右」と解釈する。
8) 「N」の物理キーを「M の四つ右」と解釈する。

図がないと分かりにくいな…。

「JIS X 6004 基本」。和文入力モードで使われる配列がいわゆる JIS 仮名配列(JIS X 6002)である事を前提として、和文入力モードに限り、かつ command や control や fn を押下している場合を除いて、文字キーの打鍵が JIS X 6004 の仮名を出力するように読み替える。最上段は option を自動的に添える事で全角の算用数字などが出るようになってるけど、これより先立って適用される「記号配置」の設定で上書きするので使用されない。

「JIS X 6004 記号配置」。これが複雑。和文入力モードで command などを押下してない場合に、仮名が割り当てられていないキーを押せば望みの記号類が打てるように設定してある。日本語入力プログラムで暗黙的に適用される JIS X 6002 の配列に元々含まれる記号については、単純に読み替えるだけ(適宜 shift や option を加える)。ただ、これは全角になるのもあって ほとんど使えない。それ以外の記号を割り当てたい場合は「英数入力に切り替え、目的のキーを押し、和文入力に戻る」という一連の操作に読み替える。

日本語入力から切り替えて使う英数配列として「英字 (Remap)」というキー配列を別途作ってある。これは Mac の標準機能でキー配列を弄る為の XML だ(拡張子 keylayout)。その中の「caps lock かつ shift」という普段まづ使わない面に欲しい記号を割り当てておいて、読み替えの中に織り込んである。

英数入力への一時的な切り替えは <replacementdef /> で「{{ MOMENTARY_EISUU }}」として定義してある。「Option::KEYTOKEY_BEFORE_KEYDOWN」と「Option::KEYTOKEY_AFTER_KEYUP」を使う。和文に戻る時の操作を単なる「KeyCode::JIS_KANA」ではなくシフト付きにしてるのは、仮名キー二連打による再変換の機能が誤作動するのを抑える為だったと思う。

和文入力モードで option を添えた場合に入力される文字は、「ことえり」の頃と「日本語入力プログラム」に変わってからで挙動が違って、自由度が下がった。「ことえり」は英数入力用に設定してある配列を参照し、そこで割り当てられている文字を全角化した物が入力されるようになっていた。「日本語入力プログラム」は英数配列とは無関係に固定の文字が入力される(多分 U.S. QWERTY を全角化した物かな)。

「QWERF でことえり片仮名変換」。ことえりやその後継の「日本語入力プログラム」では、和文の未確定状態で control‐J を押すと平仮名に、control‐K で片仮名に変換できる。J と K は頭文字などの意味を持たず、単に物理的な位置(人さし指ホームと中指ホーム)を理由にして割り当てられている。今は英字配列を QWERF にしてるから、その位置には J と K ではなく U と I が在る。control‐U と control‐I の操作で平仮名・片仮名の変換ができるように読み替える。但しホームポジションが「右一列右」なので、実際には「和文入力モードで control を伴う時、物理キー K と L を Y と I に読み替える」という設定になってる。

「テンキー(EXTRA1, SHIFT_R)」。右シフトが押下されている時、文字キーの多くをテンキーなどに読み替える。以前「後述」としていた設定がここで効いて来る(親指シフトキーを両方左シフトと見なし、小指シフトキーを両方右シフトと見なす件)。(実は右シフトのほかに、Karabiner が管理する抽象的な EXTRA1 というシフト状態にも対応するように定義してあるけど、結局それは現状働いてない。)

右手側はテンキーの数字や加減乗除に加えて、主要キーボード側のコロンやカンマも割り当ててある(数字と連続して打つ事が多い文字なので)。左手側は上下左右の方向キーのほか、shift‐左右、command‐左右、左五連打、右五連打なども割り当ててあって、文字入力中に多用する。最下段「Z X C V」は「% ° ′ ″」。ヘッダー画像でキーの右上に青で書いてあるのがそれ(但し記載を略したキーも多い)。

白湯さゆぬ

「テンキー、かなモード補足(EXTRA1, SHIFT_R)」。和文入力モードでテンキーを呼ぶ場合に配列の違いを吸収する為の設定…だけど、「ことえり」から「日本語入力プログラム」に移行した際の挙動の変化を放置したので今は壊れてる。コロンが全角になるし、「%」などが打てない。

「ことえり英字モードのショートカット被りを再配置」。ええと…ことえりやその後継の日本語入力プログラムでは、option‐shift を伴う A、Z、X、M にショートカットが割り当てられてて文字入力と衝突するので、「英字 (Remap)」の caps lock かつ shift の面に逃がしておいた文字に読み替えるという感じかしら ? でもこれを無効にした時の挙動が謎。よく分からないな…。

普段有効になってる設定はこれで記述できた。これらを Karabiner‐Elements で再現できれば、macOS 10.15 に移れる。

F5・F6 にスクリーンショットを割り当てる件は「システム環境設定」で実現できそうなので、Karabiner の出る幕でもなかった事に気付きました。

「物理的な三通りのキー配列に対する設定の共通化」に関する抽象化キー名の割り当ては図の通り。但し、J‐Force の方は図にするのが面倒なので省略した。