はてなキーワード: 日本語配列とは
あこがれの英字キーボードを手に入れたから早速会社のパソコンに接続してみた。会社のパソコンは Windows 7。解像度もメモリも CPU も悲劇的な支給パソコンをなんとか使えるレベルで動かしてくれる頼もしいやつ。
「カシュカシュカシュ」
う〜ん、シングルクォーテーションとダブルクォーテーションがうちやすい! あとアットマークをシフトを押しながら入力するのは新鮮かな。
「コトコトコト」
スペースキーが広い! 打ちやすい! ついつい連打しちゃう。キー配列になれるのは時間がかかりそうだけどハッカーみたいでかっこいい。だけどちょっと、ううん、かなりストレスフルなことが一点あって、日本語を入力しようとしたらキー配列がJIS配列になっちゃうんだ。いちおう英字配列にはキーコンビネーションで切り替えられるんだけど、キートップの印字とちがうじゃない。ほら '*' が '(' だったりさ。
今思えば英語入力にわりきって使えば良かったって思うよ。でも往々にしてわりきるのって無理でしょ。
こまったときのグーグル頼み。グーグルさんに日本語キーボードのパソコンで外付け英字キーボードを上手く使う方法はないのって聞いてみた。そうしたらいろいろおすすめしてくれたから、まあ、このくらいの苦労はしないと英字キーボードを買った意味はないよねって、というかこっちから苦労を買ってやろうって、ふふんと思いながらいろんなページを確認したの。業務中だったけど。
それで、レジストリを書き換えてやればいいって書いてあるページを見つけた(http://blog.heiichi.com/?eid=792239)。書き換えるのは
パス : HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/i8042prt/Parameters キー : LayerDriver JPN, OverrideKeyboardIdentifier, OverrideKeyboardSubtype
か。でもレジストリエディタってなんか使いづらいし、怖いなあ。おっとそういえば業務のデファクトスタンダードアプリ Excel で、拡張コンテキストメニューから「読み込み専用で開く」ためにレジストリを書き換える PowerShell スクリプトを作ったんだっけ。マイクロソフトオフィスがアップデートするたびにレジストリ書き換えられるもんだから、あたまにきて作ったんだっけ……。
New-ItemProperty -Force -Path 'Registry::HKEY_CLASSES_ROOT/Excel.Sheet.12/shell/OpenAsReadOnly' -Name ddeexec -PropertyType String -Value "[open("%1",,1,,,,,,,,,,,,1,,1)]"
よっし、エンジニアならコンポーネントの再利用だな、ってスクリプトをコピーしてぺたぺた(スクリプトは超危険なので割愛!)。パスをかえて、値はこれで、そうそう現在の設定を確認して英字配列と日本語配列を自動で切り替えるようにしたいな、むふふ、なんてつなげたばかりの英字キーボードですくりぷとすくりぷと書いていたの。
そんで実行。エラーか。ふむふむああええおお、パスまちがえちゃった。
こんどこそ実行。エラーなく終わって、ちゃんとキーの名前と値が入っている。さてさてそれでは再起動しましょう。
「ブイーン」
これ面倒なんだよなー。ハードディスクの暗号化解除っと。あれ、起動画面に移らないなあ。メモリチェックが走っているのか。ふーん。
……おわらないんだけど………………………………………………。おそるおそる画面をみたら、
「Windowsが起動できませんでした。システム管理者に連絡してください。」
うっわーーー。ブルースクリーンだーーー。はじめて見たーーー。本当にブルースクリーンででるんだなあ。
正直このときはラピュタをみつけたパズーの気分だったかも。ぼくの場合はこの先にはわくわくなんてなかったけどさ。だんだん、やべー、これやべー、これやべーや、これすごくやばいよね、って正気にもどった。そんで隣のお仲間にバレる前に強制終了。ふう。多分再起動中だっておもってくれたよね。
だいじょうぶだ Windows は軍用にも使われる堅牢性の高い OS だ。これくらいのエラーは普通再起動したらいつもと同じように退屈な起動プロンプトがでるはず。そうやって自分をまず信じる。それが一番大事。
まずは軽い深呼吸。そして電源オン。
「ブイーン」
ハードディスクの暗号化解除は BIOS レベルだから変わらないのか。Windows は予期されない終了をしたって? そのとおり! 気にせずに君はいつものように平常心で起動してくれたまえ。
あかんわ。これ完全にあかんわ。二回起動して二回だめって、これなんかいやってもダメなパターンはいったよね。エンジニアのはしっくれだけどそれくらいはわかる。
とりあえず電源を落として、気持ちを落ち着かせるために散歩しよう。ああ、今日は雲がきれいだなあ。風もふいていてはるだなあ。どうしよ。ぼくも答えはわかっていたんだけどね。管理部にごめなさいしてリカバリ DVD をかりてくればいいんだよね。でもさ、ただの箱になったパソコンはお客様のものっていう派遣の立場だしさ、絶対に原因追求でレジストリいじったことを告白させられるしさ、ああなんか春と秋ってにてるよね。
あとさブルースクリーンになった原因もわかったの。ふいにあああれだなって思い浮かんだんだけどさ、スクリプトつかいまわしちゃったせいで OverrideKeyboardSubtype キーの型を DWORD じゃなくて String にしてたのよ。ぜったいにこれで起動シーケンスで致命的エラーはいてんだろうなって。
そんな風に思いながら、自席に戻って、もう一回電源起動。もう一回よく画面を確認する。……むむ自動修復だと。よかろう最後の望みだ。かなえてやろうじゃないか。へー最後に記録した正常状態にシステムを復元するのか。なんか説明書きに「最近インストールしたプログラムとか消えるかもね。ハハッ。」て書いてあるけど、しばらくインストールなんてしていないし、初期状態に戻んなかったらまあいいよって感じ。ポチッとな。
そんでもって三十分から一時間経ったかなあ。あまりにも時間がかかるからトイレの個室で頭をかかえてたの。自席に戻るとパソコンの電源が落ちているわけ。さてとこれはラストチャンスだ。なんのチャンスかわかんないけどラストであることはあきらかだよね。そして電源をいれた。
この時ばかりは神様に祈ったね。だって計算機はプログラムしたようにしか動かないから、お祈りなんてしても意味ないもんね。だから神様にお祈りしたの、どうかおねがいします、今後はこれにこりてレジストリなんてぜったいにいじりませんので、この計算機が正しく動くことを祈ってくださいって。
結局、無事復旧できた。なにひとつ異常なく Windows 7 は立ち上がって来て、みなれた壁紙がでてきた。おそるおそるレジストリを確認したら、ちゃんとぼくがいじくるまえにもどっていた。ありがとう Windows! ありがとう自動修復機能! いちおうありがとう神様!
それでも外付け英字キーボードで日本語入力したいんだーて人はここらへんを見たら幸せになれるよ。
USB英語キーボード付けた。(英語、日本語キーボードの共存、KeyboardTypeOverride) 202122 (http://202122.iku4.com/%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3/%EF%BD%95%EF%BD%93%EF%BD%82%E8%8B%B1%E8%AA%9E%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E4%BB%98%E3%81%91%E3%81%9F%E3%80%82%EF%BC%88%E8%8B%B1%E8%AA%9E%E3%80%81%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89)
USBポートに対しての設定だからブートで失敗することはないと思うよ(ブルースクリーンを発生させたもののことば)。
いちおうこれを書くにあたって、自宅のパソコン Windows Vista で再現できないかためしてみた。検証内容は以下の二つ。
結論としては両方とも大成功! ちゃんとレジストリエディタから編集したら、英字キーボードで日本語入力が快適にできるようになったし、 DWORD を String に変更したらブルースクリーンがでるようになったし! Vista だと会社の Windows 7 ではできた自動修復ができないし! なんかブートセクションとデータセクションが分けられるようになったのって Windows 7 かららしいし!
だけどここは会社じゃなくて自宅だから、メイン OS の Ubuntu で Windows 領域をマウントして華麗に chntpw を叩いてレジストリを修復できる。そう Linux ならね。
WindowsというOSそのものは、少なくともパーソナルコンピュータに入れるOSとしては、完璧ではないにせよ、それなりによくできたOSであることは認めざるを得ない。いや、Windowsは、パーソナルコンピュータに入れるOSとしては、Mac OS Xと並んで優秀だと思う。
Windowsはパーソナルコンピュータの分野で支配的なシェアを誇っているのだから、別にサーバの分野で頑張る必要なんか無かったと思う。こんなに不幸になるのなら、Windowsはサーバの分野に来てほしくなかった。申し訳ないけど、それほどまでに、Windows Serverを扱うのは嫌だ。本当に嫌だ。
サーバとしての性能比較については、私はよく知らない。Windowsサーバがクソなのは性能だと言いたいわけじゃない。
WindowsというOSがサーバの分野に参入するにあたって、絶対に修正するべきだった仕様が修正されていないことに対して、私は主張したいのである。
「2つのUSBポートに英語キーボード(1枚目)→日本語キーボード(2枚目)を刺すと、2枚目の日本語キーボードが英語配列として認識される仕様は、何とかならなかったのか!?」
何故か知らないが、Windowsのキーマップは1マシンに対して1つしか設定できない。同じマシンに複数のキーボードを指すと、仮にそれらのキートップに印刷されている記号の配置が異なっていても、一方がもう一方に従う。使用されるキーマップは、基本的にはOSが起動した直後、早い者勝ちである。
これが問題になるのは、リモートデスクトップでサーバを操作している際である。英語キーボード愛用者である私は、サーバを再起動する権限を一切奪われてしまった。私がサーバを再起動すると、起動したマシンのキー配置が英語になってしまい、私以外の日本語キーボードユーザが記号を一切入力できなくなるという問題が発生したからである。一般的に、サーバを再起動する権限を与えられない理由というのはもうちょっとマトモなものであるという認識である。
しかも、再起動する権限が与えられていないのはまだしも、結局そのサーバにリモートデスクトップでログインすると、その中の操作は全て日本語配列なのである…自分のPCの設定は英語なのに…この苦痛がご理解いただけますかねぇ!?
幸か不幸か、今の職場には日本人しかいないので、英語キーボードなんて使ってる奴の方がレアなのであって、駆逐されるのは私である。しかしこれからの時代、国籍や言語が異なる中で同一の環境を弄ることなんて、割とよくあるタイプではないのか?例に挙げるのは不適切かもしれないが、例えばGoogleのエンジニアが全員、同一のキーマップのキーボードを使っているとは、到底思えん!Microsoft Azureはどうなんだ?1台のマシンにつきキーマップが1種類しか用意できないと、仮に海外から助けてもらおうとして遠隔で操作する権限を与えたとしても、キーマップがロシアンルーレットになってたら、結局助けてあげられないんじゃないの?
…いやはや、まことに信じがたい仕様である。少なくともサーバOSの仕様としてはクソ未満である。文句なしにクソ未満だ。
確かに、時代は進歩し、昨今はWindows上で動作するSSHデーモンもあるみたいなので、それを使用してPuTTYごしにサーバの作業をするという方法も、無くは無い。SSHであれば、キー配置が問題になるのはPuTTYの側であって、サーバの側ではない。だが…正直、SSH経由でWindowsサーバを使うなら、もはやサーバがWindowsである必要は無いのではないか…?普通にLinux/BSD/Solarisでええやん…なんでWindowsなん…?
というわけで、Windowsサーバ開発チームに物申すことができるのであれば、同時に複数の(配列の異なる)キーボードを刺しても、よしなにしてくれるように改善していただきたい。それさえしていただければ、Server 2012のあのクソみたいなタイルUIにも喜んで乗り換える。マジで。
だいぶ前のことなので結構忘れてるけど。
買ったのはHHKBPro2。OSはWindowsVista
背面のスイッチをいじってキーを変える。
http://www.pfu.fujitsu.com/hhkeyboard/leaflet/hhkb_backview.html
左◇ | Fn |
右◇ | Win |
Delete | Backspace |
左◇あたりにFnを割り振らないと右小指でしかFnを押せなくて面倒。
DeleteよりBackspaceの方が使用頻度が高いので変更。(Fn+DeleteでDeleteを押したことになります)
ノートPC(日本語版Windows)で英語配列版HHKBを使う時はUSJPを入れるのが限りなく正解に近い。
http://www.trinityworks.co.jp/software/USJPPro/index.php
デスクトップPCではドライバを英語キーボードに設定すればいい。
ノートPCでUSJPを入れていて、USJPにはおまけ機能でいくらかのキーの組み合わせを設定できるので
デスクトップPCでも同じにするためにとりあえず窓使いの憂鬱を入れた。
Vista対応版
http://slashdot.jp/~kazu2/journal/411746
設定はこんな感じにした。
include "104.mayu" key C-D = Delete key C-H = BackSpace key C-M = Enter key C-Space = $ToggleIME
どこかで見た設定をベースにいじったような気がしますがどこのがベースか忘れた。
自分は左◇キーをFnキーに設定して使っているので無変換キーをFnキーにするとちょうどよくなる。
include "104.mayu" mod control += CapsLock def subst *CapsLock = *LControl key S-Pause = CapsLock def key 無変換 = 0x7b mod mod0 = 無変換 key *S-M0-K = *S-Home key *S-M0-Comma = *S-End key *S-M0-Apostrophe = Right key *S-M0-Semicolon = Left key *S-M0-LeftSquareBracket = Up key *S-M0-Solidus = Down key *S-M0-L = *S-PageUp key *S-M0-FullStop = *S-PageDown key M0-R = F5 key C-D = Delete key C-H = BackSpace key C-M = Enter key *S-M0-_1 = F1 key *S-M0-_2 = F2 key *S-M0-_3 = F3 key *S-M0-_4 = F4 key *S-M0-_5 = F5 key *S-M0-_6 = F6 key *S-M0-_7 = F7 key *S-M0-_8 = F8 key *S-M0-_9 = F9 key *S-M0-_0 = F10 key *S-M0-HyphenMinus = F11 key *S-M0-EqualsSign = F12 def key JisBackslash = 0x7d key JisBackslash = Backslash key S-JisBackslash = $VERTICAL_LINE key C-Space = $ToggleIME
HHKBを繋いだ時は上の設定、普通のキーボードを繋いだ時は下の設定に切り替えてやってます。
USBメモリを挿したい時もここ。
重量が結構ある。