HHKB Professonal 2 with AX Keyboard driver

メモです。

キーボードを 念願だった、PFU の Happy Hacking Keyboard Professional 2 に買い替えました。予算が足らなくて、Type-Sは見送りましたけど・・・。

前は日本語配列なLite版を使っていたんですが、とうとう買ってしまいました!この件は、余所のくだらない日記ブログに書いたので(^^;;;こっちでは、英語配列に変更したときの設定をメモ。

DSC00241

まず、キーボードのDIPスイッチにて、モード設定を Lite EXT.モードに。これで、ダイヤモンドキー(っていうのかな?)をWindowsキーに。それと、ALTキーとダイヤモンドキーを入れ替え。

あとは、PFUで配布されている、HHKBキー配列切替ツール で、まずはキー配列を英語配列に切替える。

で、そこで終わればいいんですが、IMEトグルが、英語配列だと、ALT + 「`」 なのでかなり不便。xkeymacsでcontrol + セミコロン に割り当ててるとは言え、たまにキーフックが効かなくときがあるので・・・、この際だから、右Altキーに[漢字]キーを割り当てる方法 に載っている方法で、右ALTキーにIMEトグルキーを割り当てることにした。

レジストリをいじる。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\i8042prt\Parameters を開いて以下のキー・値に修正。

LayerDriver JPN  = kbdax2.dll
OverrideKeyboardIdentifier = AX_105KEY
OverrideKeyboardSubtype = 1

Windows2000/XPの頃の記事だけど、Windows7(64bit) でも問題無かった。この辺はほとんど変わってないんだなぁ。AXキーボード・・・残念ながら見たことない(^^ゞ

というわけで、かなり快適な入力環境が整いました(^^)

あとは・・・そうですね、PFUから Bluetooth版もしくは無線版のHHKB Pro が出ることを強く望んでます!!!

mod_apreq2 のインストール

テストサーバー(NP11 w/ CentOS5)にmod_apreq2 をインストールしたので、そのメモ(備忘録)です。

mod_perl2で、Apacheの処理フェーズにフックするモジュールを書いて、いろいろ遊んでます。

結構以前からmod_perl2的なものは勉強がてら書いていたんですが、CGI的な使い方だと、かなり制約が多くて、ハッキリ言って苦労に見合うだけのものが得られません(笑) そういう用途はmod_fcgid とか遙かに良い、ということに最近になって気付いて(遅そ!)、リクエスト処理に介入してゴニョゴニョしたり、入力された(POSTされた)データをいじったり、監視したり、というような、どちらかというとApacheの動作をカスタマイズするようなコードを Perl で書くのが面白く、勉強と遊びの半々になってます(^^)

・・・で、でも、やっぱりCGI的に使う用途(PerlResponseHandlerのような)では、パースされた入力が欲しい(^^;; つまり、Apache2::Request が使いたい。。。 というわけで、mod_apreq2をインストールしました。

最初は、yum install mod_apreq とかで簡単にできるだろう、と勝手に思ってましたが、not available でした(^^;;;

しょうがないので?、ソースからビルド。僕の環境では、ソース取ってきてmake だけでは、エラーでした。事前にインストールするものがあって試行錯誤。READMEとかINSTALLに書いておいて欲しいな・・・。

CPANからExtUtils::XSBuilderモジュールと、yumでmod_perl-devel をインストールしておかないとmakeでエラーでました。はじめから入れとかんかい!と怒られそうですが…

> cpan ExtUtils::XSBuilder
> yum install mod_perl-devel

ソースを取得して適当なディレクトリに展開。

> wget –nd http://ftp.kddilabs.jp/infosystems/apache//httpd/libapreq/libapreq2-2.13.tar.gz
> tar xvzf  libapreq2-2.13.tar.gz

関連するperl モジュールもインストールしたいので・・・ ./configure じゃなく・・・

> perl Makefile.PL --with-apache2-apxs=/usr/sbin/apxs
> make
> make install

あとは、Apacheの設定ファイルに、mod_apreq2.so を食わせて、インストール終了。
 
 
 
ん~、最近、Linux(CentOS)やめて、FreeBSDにもどろうかな・・・とも思いはじめまして、でも僕がFreeBSD触ってたのって10年以上も前だし・・・、しかも FreeBSD(98)の時代だし(^^;;; と思って、調べたら・・・まだ、リリースされ続けていたんですね・・・。
どーしょっかなー。

自前のC++オブジェクトをjscriptで操作させたい

単純にCOMオートメーションサーバーを作成すれば事足ります。コードの再利用という点から考えてみてもそれがいいのですが・・・、一つのプログラム内で完結させたいといった時に調べてみました。

たとえば、自作の複雑なオブジェクトを持つアプリケーションがあって、jscriptなどのスクリプトでプラグインを書いてもらう、というようなケースなどでは、スクリプト環境をホストしなければなりません。

完全に自分用のメモで(^^;、 ネットなどで検索をしたり、MSDNドキュメントを拾い読みなどをまとめた備忘録です。あしからず。

で、やはりCOMのお世話にならないといけません。Visual Studio Express Editionでは全部自分でコーディングしないといけないので、退屈なコードを書かないといけないところが面倒です・・・。

手順としては、

  1. スクリプトから操作させたいオブジェクトをIDispatch を継承、もしくは、オブジェクトへのラッパークラスをIDispatch実装クラスでインプリメントする。
  2. スクリプトをホストするため(スクリプトからの様々な通知を受け取るため?)に必要なIActiveScriptSite の 実装クラスを作成

で、これらを使って、以下を順番に実行。

  1. CoCreateInstance APIでIActiveScriptのインスタンスを生成
  2. IActiteScript::SetScriptSite()へIActiveScriptSiteの実装クラスのインスタンスをnewして放り込む。
  3. IActiveScript::QueryInterface()でIActiveScriptParse インターフェイスポインタ(IID_IActiveScriptParse)を得る。
  4. IActiveScriptParse::InitNew()をコール
  5. IActiveScript::AddNamedItem()で、自前のC++オブジェクトの名前をつける。スクリプトではこの名前を使ってアクセスさせる。
  6. IActiveScriptParse::ParseScriptText()でスクリプト文を解析させる
  7. IActiveScript::SetScriptState(SCRIPTSTATE_CONNECTED)をコール
  8. IActiveScript::SetScriptState(SCRIPTSTATE_CLOSED)をコール
  9. インターフェイスポインタの後始末

という流れ。

続きを読む

“HTML Speech Input” on Google Chrome

先日、Google Chromeがバージョンアップしてv11になり、音声入力APIがブラウザで実装されましたね。iPhoneなどのスマートフォンではすでにお馴染みの機能ですが、やっとこさ、PCバージョンのブラウザでも搭載されました。

なんか難しそうに思いますが、既存のHTMLのINPUT タグに、x-webkit-speech 属性を追加するだけ。

まだ独自仕様なので、speech 属性ではなく、x-webkit-speech となっています。Google Translater(翻訳) なんかで確認すると、speech と x-webkit-speech の二つが指定されています。いずれ標準化されるんでしょうかね。
lang属性で、言語を指定できるみたいです。指定しない場合はOSの言語設定が適用されるみたいで、日本語もちゃんと認識されます・・・が、しゃべる人によって認識率は低くなるのは、スマートフォンの場合と同様のようです(笑)
カタカナ語をしゃべると、英語だったり、日本語だったり、結構揺れますね~( ̄0 ̄)

HTML5仕様のようですが、別にHTML4で書いても認識出来るみたいで(当たり前か(^^;;)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=shift_jis">
		<title>Title...</title>
	</head>
	<body>
    <input type="text" name="q" speech x-webkit-speech>
	</body>
</html>

で、表示はお馴染みのマイクマークが付きます。

htmlspeech

で、音声入力をすると、この入力ボックスにワード(語)が入るので、DOM操作でこのワードを拾うときは、onwebkitspeechchange イベントをハンドリングすればいいようです。
HTML5仕様的には、onspeechchangeなんでしょうけど・・・、speech属性と同じく、onspeechchangeはまだ認識されませんでした。

// <input type="text" name="q" x-webkit-speech onwebkitspeechchange="SpeechChange(this)">
function SpeechChange(oInput)
{
  //alert(this.value); ← 記述ミス(間違い)修正しました
  alert(oInput.value);
}


//HTMLにonxxxxとか書きたくない場合は・・・、
// <input type="text" name="q" x-webkit-speech>
var oInputs =  document.getElementsByName('q');
for(var i in oInputs)
{
  if(typeof oInputs[i] == 'object')
    oInputs[i].addEventListener('webkitspeechchange',function(){alert(this.value);});
}
//とかでしょうか。

ここでややこしいのは、onchangeイベントでは拾えない、っちゅーこと。onchange は音声入力以外での入力に反応するようです。ややこしい。いずれはonchangeで拾えるようになるんじゃないかな~、とは思っているんですが・・・どうなんでしょうかね。イベントを別々にする意味はあまりないような気がするんですが・・・。

それと・・・まだ、エラーイベント(onwebkitspeecherror)がまだ実装されていないみたいすね~。
他のブラウザも実装してくれるんでしょうかねぇ・・・?

既存の入力ボックスに、x-webkit-speech 属性を追加するだけでいいので手間がかかりませんし(文字列置換で済むと思う)、問い合わせページとかの場合は、speech 属性とともに付けとくと、アクセシビリティーの向上?にはいいかもしれません。とはいいつつ、音声入力を必要とするユーザーのchrome使っている比率はメッチャ低いと思いますが・・・ただそう感じただけで根拠はありません(^^;;;

エクスプローラー(Windows7)のコマンドバーにボタンを追加する

東日本大震災の影響で Internet Explorer 9の日本語版リリースが延期されましたね。インターネット上のトラフィックが増えることによる影響を考慮してのことでしょうか。しょうがないですね。

さて、本題です。
(※注)かなり長文になります。間違い・勘違いがあると思うので、随時修正が入るかと思います。すみません。

Windows7のエクスプローラはXPのものとは違って、メニュー/ツールバーがデフォルトで非表示になってますね。その替わりにWindows7のエクスプローラには新しくコマンドバーっていうのがウィンドウの上部がついてます。

コマンドバー

正式名は確認してませんが・・・(たぶんコマンドバーで合ってるはず)、このコマンドバーを自由にカスタマイズできるツールがWindowsに標準ではありません。サードパーティー用にわざとそういうカスタマイズできる設定を提供しなかったのか、それとも、マイクロソフトはこのユーザーインターフェイスをあまりいじって欲しくないのか、理由は分かりませんが、カスタマイズできればそれに越したことはありません。

僕はここに、【コマンドプロンプト】ボタンを追加できれば・・・というのが今回の備忘録を書くきっかけです。

続きを読む