2012/01/28

左手の小指を救え



Emacs系のエディタを使っていると朝から晩までCTRLキー押しっぱなし。お陰で左手の小指は常に痛い。

あまりにも辛いので、HHK Lite2*1 の CTRLキーをタッチセンサにしてみた。


f:id:gnrr:20120127233946j:image:w360


今回は Cypress の PSoC を使う。横着して FirstTouch のFTMF基板にテキトーに配線して筐体に押し込んだ。


一応 GitHub に PSoC Designerのプロジェクト一式を置いておく。


手書きで汚いけど、接続はこんな感じ↓。


f:id:gnrr:20120127233128p:image:w360


下はソフトウェア部分。PSoC はハードウェア初期化を書かなくていいから楽だ。



//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

BYTE out_p1;

void main(void)
{
M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
// Insert your main routine code here.
M8C_EnableIntMask(INT_MSK0, INT_MSK0_GPIO);
CSD_1_Start();
CSD_1_InitializeBaselines() ; //scan all sensors first time, init baseline
CSD_1_SetDefaultFingerThresholds() ;

out_p1 = 0x40;
while(1) {
BYTE val_p1 = out_p1;

CSD_1_ScanAllSensors();
CSD_1_UpdateAllBaselines();

if(CSD_1_bIsSensorActive(0)) {
val_p1 |= 0x04; // BLUE LED HI (touch sw indicator)
val_p1 &= ~0x40; // SENSEOUT LO
} else {
val_p1 &= ~0x04; // BLUE LED LO
val_p1 |= 0x40; // SENSEOUT HI (Hi-Z)
}
out_p1 = val_p1;
}
}


#pragma interrupt_handler GPIO_INT
void GPIO_INT(void)
{
// P0_2: keyboard matrix drive signal (active-lo)
PRT1DR = (PRT0DR & 0x04)? 0x40 : out_p1;
}

メインループでセンサを読んどいて、キーボードマトリクスのドライブ周期をエッジ割り込みで捉えて乗せるだけ。ソフトで出力してるから若干遅れるけど、CPU_Clock = 24MHz/2 くらいなら問題なく読み取ってくれるようだ*2。

下はセンサの電極部分。CTRLキーのキートップの裏側に銅板*3を貼って、ホットボンドで止めとく。センサの配線は黄色の1本のみ*4。


f:id:gnrr:20120127234032j:image:w360


USBハブ基板を取り去って、代わりに書込器用のヘッダをつけとく。これでCapSense の感度を後で調整できる。


f:id:gnrr:20120127234034j:image:w360


左手小指はCTRLキーに乗せているだけ。ああ、なんて楽なんだ。


これでまた一歩、普通のキーボードにさわれない体に近づいた。




*1:ちなみに、これは「もらいもん」


*2:CPU_Clock = 24MHz/16だとさすがにダメだった。


*3:粘着テープつき t=0.1mm


*4:緑線は予備





2012/01/08

xming を気軽にテスト



すでに teraterm とかで telnetで linux につながってて、でも ssh とか入れるのめんどくさいときに手軽にテストするには、次のように。



  1. windows に xming をインストール

    ココとかを参考に。

    puttyはとりあえずは入れなくていい。

  2. X0.hosts ファイルに、linux マシンのIPアドレスかホスト名を書く

    X0.hosts は xming のインストールフォルダにある。

  3. xming を再起動

  4. linux マシンにログインして下記実行

    ~/.profile に

    export DISPLAY="192.168.100.2:0"


    とか書き足して、飛ばし先のwindowsマシンを指定しといて、

    . ~/.profile


    として効かしとく。

  5. テスト
    linux マシンのコンソールで

    xterm


    とか入れるとウィンドウが開くはず。


これで ssh なしで X 飛ばすことができるが、セキュリティに難有り。


ちゃんと使うならやはり ssh 接続すべし。これはあくまでテスト用。





TortoiseGit / github のリポジトリを作って既存のプロジェクトをつっこむ



よく忘れるのでメモ。




  1. github にログインして 黒い「New repository」ボタンを押す

  2. Project Name を適当に入れて、「Create repository」ボタンを押す

  3. 表示された案内に書いてある「Next steps:」の「git@github.com:なんちゃら.git」の部分をコピる

  4. Exproler でローカルの適当なフォルダ内で右クリックして、TortoiseGit のメニューから「Git Clone...」を選択

  5. 下記のように設定して「OK」する
    f:id:gnrr:20120109013946p:image:w300
    ローカルフォルダにディレクトリができて、その中に .git フォルダができる

  6. .git フォルダと同じ階層に、管理したいプロジェクトフォルダの中身を放り込む
    f:id:gnrr:20120109013947p:image:w300

  7. そのフォルダ内のなにもないところで右クリックして、
    TortoiseGit のメニューから「Git Commit -> "master"...」を選択

  8. 下記のように設定して「OK」する
    f:id:gnrr:20120109013948p:image:w300

  9. ついでにPushしとく
    f:id:gnrr:20120109013950p:image:w300
    f:id:gnrr:20120109013949p:image:w300


再度 github を見に行って、リポの中身が反映されていたらOK。


もちょっと簡単にやる方法があるような気がする…。





2011/12/05

Visual C# 2010 Express Edition で「要求されたレジストリアクセスは許可されていません。」が出る



VC# 2010 Express Edition で新しいプロジェクトを作ろうとすると「要求されたレジストリアクセスは許可されていません。」が出る*1。


ぐぐったら、やれ Windows Resource Kit を入れるだの、レジストリをいじるだの出てきたけど、効果なし。


仕方ないので、VC# 2008 Express Edition を入れてみると、こちらではOK。


念のため、もう一度 2010 でやってみると、なぜかうまくいった。2008 がなんかしてくれたようだ。


ま、2008 を使うつもりはないけど、入れたままでいいや。




*1:事例も少なそうだし、ひょっとして AVR Studio 5 の影響だろうか。





2011/12/03

MPC で iso を直接再生する wsh スクリプトを書いてみた



動画を見るときは Media Player Classic(MPC) を使ってる。でも MPC は ISOは直接再生できないので、ISO を見るときだけは仕方なく VLC を使っていたのだった。

でも VLC ってちょっと使いにくい。なので、MPC で iso を再生する wsh スクリプトを書いてみた*1。



やってることは単純で WinCDEmu で DVD の ISO をマウントして MPC で再生するだけ。MPCを閉じたらアンマウント。


これを使って、ISO ファイルをダブルクリックして再生するための手順を書いておく。


なお、.vbs をファイルの関連付けすることはできないと思うので、MakeExe で .vbs → .exe に変換したものを .iso に関連付けするようにした。




  1. mpcをダウンロードしてインストール

  2. WinCDEmuをダウンロードしてインストール

  3. MakeExe をダウンロードして展開

  4. 上述の dvd_iso_play.vbs をどこかに保存

  5. dvd_iso_play.vbs の MOUNTER と PLAYER を書き換える

  6. MakeExe を展開したディレクトリに makewin.exe があるので、そこに dvd_iso_play.vbs をドラッグアンドドロップ

  7. dvd_iso_play.vbs と同じ場所に exe ができるので、これを iso ファイルに関連付ける
    Windows 7では スタート / 規定のプログラム / ファイルの種類またはプロトコルのプログラムへの関連付け


これで、.iso をダブルクリックすると mpc で再生できるはず。


にしても MakeExe 素晴らしい。作者に感謝。




*1:ハゲしく既出な気もするんだけど