iBUFFALO のコンパクト薄型キーボードで Windows 上で Mac 風のかな・英数切り替えができるまで
ややこしかったので詳細は思い出せないけど、思い出せるようにメモ。
1. キーボードのスペースの左右にあるコマンドキーを Ins, Home に対応付ける
詳しくは WindowsでApple英字配列キーボードをMac風に使う(フリーソフトで実現) - Qiita
私はこういう風に設定しました。
2. Ins, Home を Windows IME でそれぞれ IME off, IME on に関連付ける
詳しくは
Windows上でMacのように「英数/かな切替」をする方法。両刀ユーザーなら是非設定を! - いつもマイナーチェンジ!
3. ubuntu で、日本語キーボードから US キーボードに設定を変える
ちなみに、Ubuntu ではそのままだと日本語キーボードとして認識しちゃう (e.g. Shift+2 が @ じゃなくて " になっちゃう) ので、こちらも設定変更。こちらのサイトを参考にしました
Ubuntu 16.04で英語キーボードを使えるようにする方法 - Qiita
…あれ? そういえば、Windows でも上述の Ubuntu と同じ問題が発生したのだけど解消してる…あれ?なんでだっけ…
この記事は 11 月 22 日に作成投稿しましたが、記事の日時間隔を均等化するために、11 月 17 日投稿扱いに変更します。
ひとつの USB フラッシュメモリーに、Mac の TimeMachine 用のパーティションと Windows のデータ用のパーティションを実用的に共存させることは (簡単には) 「できない」
否定的なタイトルですが。以前やろうとしてできなかったのに、表題のことを、また試そうとしてしまいました。なんでできないと考えるかを記事に書いて、同じ過ちを繰り返す確率を減らそう*1ともくろみます。同じ過ちは繰り返しませんから。
何をしようとしたか
ひとつの USB メモリーを 2 つのパーティションに分けて、1 つを Mac のバックアップ (Time Machine)、もう 1 つを Windows のデータ用 (+ Mac とのデータやり取りも) と考えました。これは多分できません。少なくとも、(1) Windows になんらかのサードパーティーなアプリケーションをインストールしない、(2) Mac のディスクユーティリティーのみを用いる、の 2 つの条件化ではできなさそうです。
できない理由
まず事実を挙げていきます。
- Mac のディスクユーティリティを用いて USB フラッシュメモリーをパーティションに分けようとするには、「GUID パーティションマップ」で「消去」 (ディスクの初期化) しないといけない。(「Apple パーティションマップ」というのも選べるのですが、それだと、なぜかパーティション分割できるようにならない、ならなかったと思います(うろ覚え)。名前からして Windows では使えそうにないですが)
- 「GUID パーティションマップ」を用いて「消去」(ディスク初期化)すると、ディスクの先頭部分に必ず 200 MB の不可視*2パーティションが作られる。
- Windows は USB フラッシュメモリーに複数のパーティションがある場合は、先頭パーティションのみしかマウントしない (見えない)。
以上を考慮すると、
- Mac のディスクユーティリティを用いて複数パーティションの USB フラッシュメモリーを作る
- このメモリーを Windows PC に挿すと、必ず「200 MB のディスク」だけが認識されるようになる
- そして、そのディスクは Windows 側から見えても Mac 側からは認識できない
- また、Windows 側のみで用いるリムーバブルディスクとしても 200 MB という容量は小さすぎて使い勝手がよくない
ということです。
なんとかできないかなあ…
そこまで時間がないのでまだ試していないのですが、以下の方法を試せば何とかなるのかも…
とはいえ、Windows 側のみで 200 MB より大きいデータを運ぶことはできても、Mac とのデータやり取りはできないんですよねえ。そもそも、GUID の先頭パーティションに余計なものを入れると、今度は Mac 側で Time Machine 用のパーティションにも悪影響を与えそうだし。
なので、あまり賢いことはできなさそうだなあ、という感じです。
おまけ: Windows で USB フラッシュメモリが 200 MB しか認識できなくなった場合
以上のように、Mac 側のディスクユーティリティで GUID パーティションを設定すると、Windows 側では USB フラッシュメモリが 200 MB しか認識できなくなります。Windows 側で、この「200 MB」のメモリをフォーマット初期化してもダメです。200 MB のディスクにしかなりません。こういう場合は、
- Mac 側のディスクユーティリティで「マスターブートレコード」・「MS-DOS (FAT32) 形式」で「消去」(ディスク初期化)
すれば「治り」ます。FAT32 だけじゃなく、直接 exFAT のような「使える」形式にできたかどうかも確認すればよいのでしょうが、今日はそこまでやる元気はありません。
IDL の多次元配列のインデックス番号
具体例として、[ 3, 5, 7 ] の三次元配列の場合 (例えば、arr = indgen( 3, 5, 7 )
)、
arr[ i1, i2, i3 ] = arr[ i ]
となる i は
i = i1 + i2 * 3 + i3 * 3 * 5.
なので、一般的には、n1 x n2 x ... x nm の形からなる m 次元の配列 ( arr = indgen( n1, n2, ..., nm )
) について
arr[ i1, i2, ..., im ] = arr[ i ]
となる i は、おそらく
i = i1 + i2 * n1 + ... + ik * nk-1 * nk-2 * ... n1 + ... + im * nm-1 * nm-2 * ... * n1
となるはず。
ちなみに、arr = indgen( n1 * n2 * ... * nm )
を、arr = reform( arr, n1, n2, ..., nm )
として一次元配列を多次元配列に変換しても、
arr[ i ] = i
となるようです。
逆変換
arr = indgen( 3, 5, 7 ) について arr[ i ] = arr[ i1, i2, i3 ] となる i1, i2, i3 を求めることを考える.
たとえば、i = 26 の場合.
i1 = 26 mod 3 = 2 x1 = 26 - 2 = 24 i2 = ( x1 / 3 ) mod 5 = ( 24 / 3 ) mod 5 = 3 x2 = x1 - 3 * 3 = 26 - 2 - 3 * 3 = 15 i3 = ( x2 / 3 / 5 ) mod 7 = 1 mod 7 = 1
一般には,
i1 = i mod n1 x1 = i - i1 i2 = ( x1 / n1 ) mod n2 x2 = x1 - i2 * n1 i3 = ( x2 / n1 / n2 ) mod n3 ... xm = xm-1 - im * nm-1 im+1 = ( xm / n1 / n2 / ... / nm ) mod nm+1
となるはず…