Linux用タッチスクリーンをインストールする

タッチスクリーン入力機能付きPSOne LCDのセットアップと設定

これまでは、フレンドリーなインターフェースの欠如が、Linux®をエンド・ユーザーにとって商業的に実現可能な製品となることから阻んでいましたが、GUIの登場によって、それも過去のことになりました。消費者にとって使いやすいLinux製品を作るための次のステップは何でしょうか。ユーザー指向のLCDタッチスクリーンを追加することを考えてみましょう。タッチスクリーンがカスタム・デジタル・メディア・センター(家庭用または車載用)、DVR、PVRなどのデバイス、そして家事ロボットの制御インターフェースに加わることで、バックエンドのLinuxアプリケーションが非常に使いやすくなります。潜在的な用途は数知れません。この記事では、Sony PSOneのLCDのインストール、モードラインの作成、およびタッチスクリーンのインストールについて概要を述べます。すべてLinux向けです。

Greg Lindley (lindleyg@us.ibm.com), System Support Engineer, IBM

Greg LindleyはIBMのVMware ESX製品サポートのチーム・リーダーとして、過去2年間の大部分はVMware製品のサポートを行ってきました。またLinuxのサポートに5年以上、UNIXサポートに15年以上の経験を積んでいます。連絡先はlindleyg@us.ibm.comです。



2005年 12月 06日

KDE、GNOME/Nautilus、OpenWindows、WINEなど、さまざまなGUIによって、Linuxアプリケーションのパワーとエレガンスへのアクセスが容易になりました。Linuxを消費者デバイス市場により確実に浸透させるためには、これにどんなコンポーネントを追加すればよいでしょうか。タッチスクリーンです。タッチスクリーンが加われば、Linuxデバイスをデジタル・ビデオ・レコーダー、Tivoのようなパーソナル・ビデオ・レコーダー、メディア・センター、スマート・ハウス・システム、さらにトースターの制御インターフェースなど、さまざまなデバイスのコントローラーにできます。可能性は無限です。

タッチスクリーンには、他の製品との組み合わせで販売されているものや、個別に販売されているものなど、さまざまな種類があります。CRTとほぼ同じ長さの歴史があり、今ではLCDでも見られるようになりました。場合によっては、タッチスクリーンが表示装置にすでに組み込まれていることもあります。それ以外の場合は、(この記事で述べるように)個別の装置として販売されているものの中から、サイズや目的の機能に応じて選ぶ必要があります。

この記事では、LCD(画面)、モードライン(モニターの駆動方法をサーバーに指示する設定行)、およびタッチスクリーン(入力用)のインストールと設定を準備する手順の概要を述べます。また、タッチスクリーンを組み込む際に生じる可能性のあるその他の疑問に答えてくれる参考資料も紹介します。

LCDのインストール

タッチスクリーンは入力専用です。したがって、その後ろに画像を表示するものが必要です。ユーザー・インターフェースを表示するだけでなく、ディスプレイはキャリブレーション(較正)にも使用されます。キャリブレーションは、主に2つの方法で行われます。

  • より簡単な方法としては、さまざまなベンダーのいずれかのLCDスクリーンを入手して、PCシステムに接続します。使用しているビデオ・カードに直接接続するにせよ、アダプターを使うにせよ、接続できることだけは確認してください。
  • この記事で説明する、より難しい方法は、かなり安価なPSOne LCDを入手することです。この方法では、半田付けとケーブルの接合が必要ですが、このような改造のためのガイド(「参考文献」を参照)に従って作業すれば、それほど難しくはありません。この方法でPSOne LCDを使用するには、CSYNC(Composite Sync)信号を備えたビデオ・カードが必要です。ほとんどのATIおよびMatroxカードは、この信号を備えています。この信号を備えていないカードの場合、CSYNC信号を生成する回路を作ることもできますが(「参考文献」を参照)、一般に、この信号を生成するカードを購入する方が簡単です。

電源の接続

タッチスクリーンとは何か

タッチスクリーンは、ディスプレイを入力デバイスとして使用するためのディスプレイ・オーバーレイであり、ディスプレイの内容と対話するための主要な入力デバイスとして、キーボードやマウスを使用する必要をなくします。タッチスクリーン・パネルは、通常、次のいずれかです。

  • 感圧式(抵抗)
  • 静電式(静電容量)
  • 超音波表面弾性波方式(SAW)
  • 光イメージセンサー方式(赤外線)

タッチスクリーンは、従来、POS(Point Of Sale)、ATM、PDAなどの情報デバイスのディスプレイで使用されていましたが、組み立てラインの状況など、状況の変化にすぐに対応できるので、重工業用の制御装置としても急速に受け入れられつつあります。このような普及の要因のひとつは、SoC(System on a Chip)およびディスプレイの製造業者が製品へのタッチスクリーン機能の組み込みを始めたことにあります。今まで、この要求を満たしていたのはアフターマーケット業者でした。

LCDを機能させて、ディスプレイのバックライトを点灯させるには、電源が必要です。LCDのインストールと同様、これにも簡単な方法と難しい方法があります。

簡単な方法は、必要に応じてコンセントやカー・アダプターに接続できるLCDを購入することです。コンセントへの接続は簡単です。PCも一般にコンセントから電源を得ているからです。

難しい方法(そして私が選んだ方法)は、eBayでカー用電源アダプターを購入する方法です。これは12ボルトを使用します。12ボルトは、通常のコンピューターで電源装置からケース内に供給される電圧です。私は、機能的には同じなので、「Hooking up a Neon Light」(ネオン電球の接続)という説明記事を参考にしました(「参考文献」を参照)。手を加えた後、PCの電源装置に直接接続します。やはり、ケーブルの接合と半田付けが必要ですが、コンセントをもう1つ占領せずにすみます。

次は、モードラインです。

モードラインとは何だったでしょう?

モードラインは、構成ファイル内の構成行であり、接続されたコンピューター・モニターに関する情報と、それを指定された表示解像度で駆動する方法をサーバーに知らせます。(元来は、XFree86でのXF86Configでした。)今では、多くのLinux/UNIX®バージョンでは、サーバーが起動時に次のような他の因子に基づいて構成を計算するので、モードラインは不要になっています。

  • サーバー構成ファイル内の一般的で直感的な設定
  • EDIDクエリーによって取得したモニター機能

EDID(Extended Display Identification Data)は、ベンダー情報、最大画像サイズ、カラー特性、工場出荷時のタイミング設定、周波数範囲限界、モニター名とシリアル番号の文字列など、モニターとその性能に関する基本情報を含んだVESA標準のデータ・フォーマットです。情報はディスプレイに格納されていて、モニターとPCのグラフィックス・アダプターの間にあるDisplay Data Channel(DDC)を介してシステムと通信するために使用されます。EDIDの最新バージョンは、CRTディスプレイ、LCDディスプレイ、および将来のディスプレイ・タイプで使用できます。EDIDはほとんどすべてのディスプレイ・パラメーターの一般的な記述を提供するからです。

1行のモードラインには、指定された解像度のラベルをはじめとして、10個のパラメーターが含まれています。2番目のパラメーターは、ピクセル・クロック・レート(MHz)を指定します。その後に、4桁の数字が2つ続きます。最初の数字のグループは、X解像度(幅)と関連パラメーターを指定します。2番目のグループは、Y解像度(高さ)を指定します。オプションとして、水平および垂直同期を制御するパラメーターを追加することができ、さらにインターレースおよびダブルスキャン・モードのオプションもあります。

なぜ、モードラインにこだわるのでしょうか。旧式のディスプレイ、珍しいタイプのディスプレイ、あるいは調整が不十分なディスプレイの場合、モードラインを手動で設定することが唯一の解決策となることがあるからです。


適切なモードラインの判断

LCDを接続する簡単な方法を選んだ場合、Linux OSが起動するときに、スクリーンは自動的に認識されます。この場合は、タッチスクリーンのセットアップをすぐに始めることができます。より難しい方法を選んだ場合や、LCDが自動認識されなかった場合は、カスタム・モードラインを作成する必要があります。Googleで検索したり、製造元の仕様書を参照したり、適切な構成ファイルに含まれているモードラインを試すことで、さまざまなモードラインを集めることができます。PSOne LCDをインストールする場合、適切なモードラインを得る最も簡単な方法は、Windows搭載PCとPowerStripツールを使用することです(PowerStripツールは、多種多様なビデオ・カードに高度なマルチディスプレイ対応のプログラマブル・ハードウェア・サポートを提供します。「参考文献」を参照)。

LCDのネイティブ解像度がわかっている場合は、それから始めてください。PSOne LCDの場合は、640x480i(Arcade)から始めてください。そこから、安定した画像が得られるまで、スキャン・レート(PowerStripツールで変更できる設定)を調整する必要があるかもしれません。

表1に、各種のビデオ・カードに応じたPSOne LCDの適切なモードラインの一覧を示します。これらは、インターネット検索で見つけたものです。これらのカードすべてを試してみることはできないので、私が保証できるのは、私が使用しているATI 9600XTだけです。このリストの誤りに気づいた場合や、追加したい項目がある場合は、Eメールでお知らせください。

表1. Linuxのモードライン
カードNTSC/PALモードライン
Matrox MystiqueNTSC"640x480" 12.954 640 680 744 816 480 496 504 528 interlace +hsync +vsync
Matrox Millenium G200NTSC"640x480" 13.193 640 688 752 832 480 492 500 524 interlace -hsync -vsync
Matrox Millenium G200PAL"720x576" 14.875 720 736 800 896 576 602 606 668 interlace +hsync +vsync
ATI 7000NTSC"640x480" 12.175 640 664 720 784 480 486 493 524 interlace +hsync +vsync
ATI 7000PAL"720x576" 14.950 720 763 859 920 576 580 584 588 interlace +hsync +vsync
ATI 9600XTNTSC"640x480" 13.582 640 704 768 864 480 486 493 524 interlace -hsync -vsync
ATI 9700PAL"720x576" 14.881 720 781 829 960 576 606 610 646 interlace +hsync +vsync
EPIA 800NTSC"640x480" 13.678 640 672 736 800 480 486 494 524 interlace composite

モードラインの配置

正しいモードラインがわかったところで、この情報を設定するべき場所が2か所あります。最初の場所はxorg.conf構成ファイルであり、2番目の場所はブート・パラメーターです。両方を見てみましょう。

xorg.conf構成ファイル

リスト1は、xorg. conf構成ファイルの例です。これにもう1つのMonitor/Screen識別子を追加することによって、デュアルヘッド・ディスプレイ設定に簡単に変更できます。また、ForceMinDotClockオプションに注目してください。ATI 9600XTは最小ドット・クロックを20Mと報告しますが、実際には、それより低いことがあります。このオプションによって、モードラインでドット・クロックを下げることができます。PSOne LCDがディスプレイを駆動するには、より低いドット・クロック(12~15Mの範囲内)が必要です。使用するLCDによって、この設定を含めなければならない場合と、含めなくてもよい場合があります。

このリストには、タッチキットに必要な情報も含まれています。デバイスとドライバーは、私が使用したタッチキットのインストール・マニュアルから借用しました。使用するタッチスクリーンの製造元によって、これとは違う場合があります。

リスト1.xorg.conf構成ファイル
# Xorg configuration created by system-config-display

Section "ServerLayout"
    Identifier     "Single head configuration"
    Screen      0  "Screen0" Absolute 0 0
#   Screen      1  "Screen1" Absolute 640 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "TKPANEL" "SendCoreEvents"
    Option         "AllowMouseOpenFail" "true"
EndSection

Section "Files"
    RgbPath      "/usr/X11R6/lib/X11/rgb"
    FontPath     "unix/:7100"
EndSection

Section "Module"
    Load  "dbe"
    Load  "extmod"
    Load  "fbdevhw"
    Load  "glx"
    Load  "record"
    Load  "freetype"
    Load  "type1"
    Load  "dri"
    Load  "v4l"
EndSection

Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "kbd"
    Option          "XkbModel" "pc105"
    Option          "XkbLayout" "us"
EndSection

Section "InputDevice"
    Identifier  "Mouse0"
    Driver      "mouse"
    Option          "Protocol" "IMPS/2"
    Option          "Device" "/dev/input/mice"
    Option          "ZAxisMapping" "4 5"
    Option          "Emulate3Buttons" "yes"
EndSection

Section "InputDevice"
    Identifier  "TKPANEL"
    Driver      "touchkit"
    Option      "Device" "/dev/tkdat0"
    Option      "DebugLevel" "0"
EndSection

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Monitor Vendor"
    ModelName    "LCD Panel 640x480i"
    HorizSync    15.720
    Option          "dpms"
    Modeline     "640x480" 13.582 640 704 768 864 480 486 493 524 interlace -hsync -vsync
EndSection

Section "Device"
    Identifier  "Videocard0"
    Driver      "radeon"
    VendorName  "Videocard vendor"
    BoardName   "ATI Radeon 9600"
    Option      "ForceMinDotClock" "13M"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device     "Videocard0"
    Monitor    "Monitor0"
    DefaultDepth     16
    SubSection "Display"
        Viewport   0 0
        Depth     16
        Modes    "640x480"
    EndSubSection
EndSection

Section "DRI"
    Group        0
    Mode         0666
EndSection

カーネル・ブート・オプション

これらのオプションを設定するべき2番目の場所は、ブート時にカーネルが情報を正しく表示できるような場所です。どのようなオプションを指定すべきかを判断するには、「Framebuffer Howto」のセクション18を参照してください(「参考文献」を参照)。リスト1のxorg.confファイルと「Framebuffer Howto」のセクション18を使用して、次のような(正しい)ビデオ・ブート・パラメーターを見つけてください。

リスト2.カーネル・ブート・オプション
kernel /vmlinuz-2.6.11-1.27_FC3 ro root=/dev/VGROOT/LVROOT rhgb quiet vga=0x301
video=radeonfb:xres:640,yres:480,depth:16,left:96,right:64,hslen:64,upper:31,
                                               lower:6,vslen:7,pixclock:13582

このビデオ・オプションを適切なブート構成ファイル(GRUBではmenu.lst、LILOではlilo.conf)に追加する必要があります。ビデオ・オプションは、実際には、rhgb(Red Hat Graphical Boot)が開始されるまで有効にはなりません。vga=0x301は、グラフィックスを640x480に設定します(「Howto」のセクション5.3を参照)。これはPSOneスクリーンで必要な解像度ではありませんが、rhgb以前に表示されるテキストが読みやすくなります。


タッチスクリーンのセットアップ

最初にすべきことは、適切なタッチスクリーン・ソフトウェアのインストールです。私が使用したタッチスクリーンの場合は、eGalaxからソフトウェアをダウンロードします(「参考文献」を参照)。私はFC3ディストリビューションを使用しているので、FC3イメージをダウンロードしました。私が追加しなければならなかった唯一の変更は、ビルド・プロセスにXサーバーのx86_64インクルード・ファイルを指定することだけでした。このために、touchkit_drv.oファイルのmakeファイルに-I/usr/X11R6/lib64/Server/includeを挿入しました。このインストールは32ビット・システム用にセットアップされているので、この訂正が必要なのは、厳密な64ビット・システムを使用している場合だけです。

リスト3に、xorg. conf構成ファイル内の2行を示します。最初の行は、すべてのコア・イベントをマウスだけでなくTKPANELデバイスにも送信するようにXサーバーに指示しています(両方を同時に使用できるように)。2行目は、マウスがない場合もXディスプレイの表示を続行するように指示しています。こうすると、システムにマウスが接続されていなくても、タッチスクリーンを使用できます。

リスト3.xorg.confファイルの重要な2行
    InputDevice    "TKPANEL" "SendCoreEvents"
    Option         "AllowMouseOpenFail" "true"

touchcfg構成ユーティリティー(または使用するタッチスクリーンに対応した適切なユーティリティー)でタッチスクリーンを設定しなければならない場合もあります。図1は、touchcfgユーティリティーのスクリーンショットです。

図1.touchcfg構成ユーティリティー
touchcfg構成ユーティリティー

このユーティリティーからキャリブレーションを行って、ディスプレイの端がどこにあるかをタッチスクリーンに教えることができます。詳細キャリブレーション(4ptではなく25pt)では、画面の位置をさらに詳細に指定できます。このユーティリティーでは、簡単な描画テストを行ったり、ダブルクリックの速度と領域を設定することもできます。タッチスクリーン構成ユーティリティーによっては、さらに多くの機能を備えているものもあれば、より少ない機能しか備えていないものもあるでしょう。

これで完了です。マシンを再起動すると、タッチスクリーンが通常のマウスと同じように機能します。指でテキストに触れることによって、テキストやアイコンを選択することができます。指を押し付けたままにすると、マウスの右クリックと同じ動作になります。図2と3に、LCDの起動画面を示します。

図2.rhgb画面
rhgb画面
図3.KDEの起動
KDEの起動

参考文献

学ぶために

製品や技術を入手するために

  • PowerStrip tool は、モードラインを決定するために役立ちます。
  • SurePOS 500 systemは、食品業界や小売業界の過酷な環境に耐えるように設計された、革新的な赤外線タッチスクリーン・インターフェースです。
  • Geeks.comから、5インチLCDを(在庫がある時に)入手してください。
  • 12ボルトを供給するために12-volt Thermaltake Cigarette Lighterを使うこともできますが、隠すのは少し難しいようです。
  • developerWorksから直接ダウンロードできるIBM trial softwareを使って、皆さんの次期Linux開発プロジェクトを構築してください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=229863
ArticleTitle=Linux用タッチスクリーンをインストールする
publish-date=12062005