1 この点字キーボードの概要
●この点字キーボードでできること
「わざわざ点字専用キーボードを作らなくても,PC用のキーボードで点字を入力できないの?」と思われた方もいらっしゃるでしょう.
確かに,擬似的に通常のキーボードを点字に利用する実用的なWindowsソフトウェア環境(ドライバや専用アプリケーション)は複数あります.しかし,点字入力に欠かせない6個のキーの同時押し下げを送信しないものが多く,この用途には使いにくいです.あったとしても,使用わないキーが邪魔です.
そこで,USBコントローラ内蔵のマイコン(AT90USB647,アトメル)を使って,USBインターフェースの点字キーボードを自作しました.
このキーボードはIBM PC-AT互換機(以後PC)や Apple Macintosh(以後Macintosh)のUSBポートに接続して6点の点字で文字を入力するUSBキーボードで,12個(必須である点字用に6つ,スペース用に1つ,モディファイア・キーに5つ)のキーで構成されています.一般的なUSBキーボードが1つのキーの押し下げで1文字を入力するのに対して,点字キーボードは基本的には6〜8個のキーを同時に押し下げることによって1文字を入力します.このキーボードでは原則的には全てのキー押し下げが解除されたタイミングで,事前のキー押し下げの履歴に応じて確定した文字をコンピュータに送ることで,点字の入力を実現します.また,点字が入力ができるという点字キーボードとしての必須機能に加え,以下の特徴を持っています.
・モード変更時のモードの状態読み上げ
このキーボードは非常に少ないキーで通常のUSBキーボードと遜色の無い文字をカバーするために,やむを得ず複数のモードを備えています.モードの状態を表示装置なしに把握できるように,モード変更時にはモードの状態を読み上げる機能を備えています.
・確定前の点字の読み上げ
点字入力に習熟したユーザが短い間隔でキーの押し下げ/押し上げをする場合は,直ちに現在のキーの状態に応じた文字をコンピュータに送ります.
点字入力に不慣れなユーザなどが長い間キー押し下げを持続している場合は,最後のキー押し下げから一定時間(※1)経過すると,候補である現在のキーの状態に応じた文字を読み上げます.この時,文字をコンピュータには送りません.さらに押し下げを持続すると,その後は一定間隔(※2)で現在のキーの状態に応じた文字を読み上げ続けます.この時も文字をコンピュータには送りません.いろいろキー押し下げ上げを試行して最終的に全てのキーを押し上げた時点で,直前のキー状態で文字を確定してコンピュータに送ります.少し分かりにくいと思われるので,以下に凡例をあげます.
【凡例】
- 見当をつけてキーを押し下げたため自身が無いので3秒間キー押し下げたままにした.読み上げた文字が正しかったので,全てのキーを離した。
- 自信があったキーを押し下げたが,念のため3秒間キー押し下げたままにした.読み上げた文字が正しくなかったので,(全てのキーを離すことなしに)次の見当のキーをいろいろ押し上げ下げして,最終的に読み上げた文字が正しくなったので,全てのキーを離した.
※1)実施例として3秒を初期状態に設定しています.
※2)実施例として1秒を初期状態に設定しています.
・入力のキャンセル
点字キーを押し下げして入力を開始しても,キャンセルしたい場合には,(全てのキーを離すことなしに)スペース・キーを押すことで文字の送信をキャンセルできます.
●この点字キーボードの構成
以下の図1に点字キーボードのブロック図を示します.
|
<図1>点字キーボードブロック図
|
2 ハードウェアの設計・製作
アーキテクチャがシンプルかつ高速なことを特徴とするアトメル社のAVRマイコンを使用した回路を検討しました.今回採用したUSBコントローラ付きのAVRマイコンでは,USBデバイス作成が容易であるという主な特徴に加え,出荷時に書き込み済みのブート・ローダによりUSB経由でファームウェアを書き込むことができます.従来のAVRマイコンにはファームウェアが何も書き込まれていないので専用のファームウェア書き込み用のハードウェア(以後フラッシュROM・ライタ)が必要なのですが,今回使用したUSBコントローラ付きAVRマイコンの場合はUSB経由で前述のブート・ローダと専用アプリケーション(後述のFlip)がやり取りしてユーザ・プログラムの書き込みを面倒みてくれます.
このキーボードの全回路(図2)は電源・クロック・リセットやバイパス・コンデンサなどの基本回路を除くと,このAVRマイコンのI/Oポートに入力用のスイッチが少々と外付けシリアル・フラッシュROMと低周波アンプ接続されているに過ぎません.このAVRマイコンには必要な周辺回路が多く含まれていますし,読み上げ関係も定番のOPアンプを使用しますので,各機能毎に概略を決定したら回路設計は,ほぼ完了してしまいます.
|
<図2>点字キーボード回路図
|
回路中のK1〜K12は,それぞれ Shift/③/②/①/④/⑤/⑥/Alt/Fn/スペース/Ctl/Gui のキーに対応しますので,配置に注意してください.
|
RESはリセットボタンです.
|
HWBはブート・ローダ起動ボタンです.
|
SPはスピーカーです.
|
WE(Write Enable)で,外付けシリアル・フラッシュ書き込み可能にする場合のジャンパ端子です.
|
WP(Write Protect)で,外付けシリアル・フラッシュ書き込み不可にする場合のジャンパ端子です.
|
●マイコンの周辺回路の設計
マイコンの周辺回路は,図2でOPアンプ(LM386)や外付けシリアル・フラッシュROM(AT45DB161D)を除いた部分です.このAVRマイコンの応用例として特筆すべき内容はありませんが,電源,クロック,リセット回路,ブート・ローダ起動回路,キーボード・エンコーダについて以下に説明します.
【電源】
外付けシリアル・フラッシュROMの電源は,このAVRマイコンの内蔵のレギュレータを使用します.
【クロック】
今回は16MHzの水晶を用いましたが,8MHzで十分処理できるのでプログラムの冒頭でプリ・スケーラを用いてシステム・クロックを8MHzに設定します.
【リセット回路】
ブート・ローダの起動にはリセット回路が必要なので実装します.メーカー出荷時に予めリセット用にポートが設定済みです.
【ブート・ローダ起動回路】
ブート・ローダの起動にはブート・ローダ起動回路が必要なので実装します.メーカー出荷時に予めブート・ローダ起動用にポートが設定済みです.
【キーボード・エンコーダ】
キーボードというとダイオード・マトリクスを連想しますが,このキーボードではキーボード・エンコーダの特別な回路はありません.I/Oポートにスイッチを接続し,キーのエンコードは全てソフトウェアで行います.
●読み上げ回路の設計
読み上げ回路は,図2の下部のOPアンプや外付けシリアル・フラッシュROMの部分です.外付けシリアル・フラッシュROM I/F,ロー・パス・フィルタ,低周波アンプについて以下に説明します.
【外付けシリアル・フラッシュROM I/F】
読み上げる音声データは外付けシリアル・フラッシュROM(2Mバイト)に格納しますので,このAVRマイコンのUART2を同期シリアル・インターフェースであるSPI(Serial Peripheral Interface)モードに設定し,外付けシリアル・フラッシュROMとインターフェースします.
【ロー・パス・フィルタ】
8ビットのPWMモードのポート出力を音声信号として扱うので,簡易的なロー・パス・フィルタを実装します.この回路は入力線の配線を短くする必要がありますので,アナログ信号出力端子から近い場所に配置します.
【低周波アンプ】
低周波用のOPアンプ(LM386)を使用した簡易的な低周波アンプを実装します.このOPアンプは使い易いのですが,ローノイズではありません.出力するノイズはスピーカでは許容できる程度ですが,ヘッド・ホンを使用する場合には数百オームの抵抗を直列に挿入してください.
●実際の製作
配線
回路図(図2)に従ってユニバーサル基板上で配線しますが,以下の「製作手順」と「製作上の注意点」を踏まえ,レイアウトを十分検討してからハードウェアを製作します.
製作手順
- AVRマイコン取り付け(QFP64変換基板)
- 外付けシリアル・フラッシュROM取り付け(SOP8変換基板)
- ICソケット・ピン取り付け(SOP8変換基板)
- キー・スイッチ取り付け位置の決定(メイン基板)
- キー・スイッチ取り付け(メイン基板)
- キー・スイッチ取り付け部の補強(メイン基板)
- QFP64変換基板取り付け(メイン基板)
- ICソケット取り付け(メイン基板)
- ピン・ヘッダ取り付け(メイン基板)
- USBコネクタ取り付け(メイン基板)
- グランド配線(メイン基板)
- 5V電源配線(メイン基板)
- 3.3V電源配線(メイン基板)
- その他の配線(メイン基板)
- SOP8変換基板挿入(メイン基板)
- LM386挿入(メイン基板)
- WEジャンパ・ピン挿入(メイン基板)
- キー・トップ取り付け(メイン基板)
製作上の注意点
- キー・スイッチは基板に取り付けるタイプなので,できればホット・メルト接着剤などでハンダ付け後に補強すると良いでしょう.
- 今回のキー・スイッチはユニバーサル基板に実装する際に,キー・スイッチの足を基板のピッチに合わせるためにリード線を少し曲げたり,キー・スイッチ下部にある突起を挿入する穴をプリント基板に開けたりする必要があります.加工が面倒な場合は別途,部品を検討してください.
- 2つあるタクト・スイッチは隣接して実装してください.
- QFP64のハンダ付けは慎重に行うことは当然ですが,ハンダ・ブリッジなどを気にせずに手早く作業を進めることが重要です.ハンダ付けが一通り終わった後に余分なハンダを吸取線などで吸い取とり,ハンダごてをあてて調整すると奇麗に仕上がります.
- 発振回路は,端子から近い場所に配置してください.
- ロー・パス・フィルタは,アナログ信号出力端子から近い場所に配置してください.
- バイパス・コンデンサは,電源端子・グランド端子から近い場所に配置してください.
- 電源やグランドの配線には,スズ・メッキ線など太めの線材を使用してください.
その他の注意点
- 分解などでキー・スイッチからキー・トップを外す際には,キー・スイッチ本体の上下方向に力が加わらないように注意してください.プリント基板を押さえながらキー・トップをもぎ取るようなことをせず,嵌合部(キー・スイッチの「+」の凸とキー・トップの「+」の凹)付近の隙間に横からマイナス・ドライバを挟んで上下にこじるようにしてキー・トップを外すと良いでしょう.
|
|
|
|
|
<写真1> QFP64変換基板
|
<写真2> SOP8変換基板
|
<写真3> キー・スイッチ
|
<写真4> キー・トップ
|
<写真5> USBコネクタ
|
3 ソフトウェアの設計・製作
作成するプログラムは,以下の合計3つのプログラムです.
- 点字キーボード本体であるメイン・ファームウェア
- ROM用音声データを外付けシリアル・フラッシュROMに書き込むツールであるサブ・ファームウェア
- 音声ファイル作成プログラム(本誌添付の音声ファイルを使用する場合は不要)
●メイン・ファームウェア設計・製作
点字キーボードの本体である点メイン・ファームウェアを作成します.メイン・ファームウェアの作成にあたっては,アトメル社が公開しているサンプル・プログラムを多いに活用します.点メイン・ファームウェアはアトメル社が公開しているサンプル・プログラム(USBKEY_STK525-series6-hidkbd-2_0_2-doc.zip)(以後,HID)をベースとしています.このHIDは,若干の修正で各種用途に応用が可能である完成度が高いものです.ファームウェアにはOSが含まれていないのですが,簡易的なタスク実行環境が実現されていますので修正は容易です.主な修正箇所はキーボードをハンドリングしているタスクになります.
元になるプロジェクトのキーボードをハンドリングしているタスクは入力ポート操作により適当なキー・コードを送るだけの仕様なので,パッチで既存の機能の大半を削除して以下の機能を追加します.また,元になるプロジェクトのレポート・ディスクリプタも少し修正します.
- メイン・ループ
メイン・ループは実際には存在しないのですが,タスクの主要な関数がタスク・ディスパッチャに定期的に呼ばれますので,便宜上この呼称にします.
キー・スキャンを司る部分なので,下位の関数呼び出しのみならずタイミング生成その他で大きく変更することになります.
- キー・エンコーダ
キーが接続されたポートの状態と点字の文字をマッピングさせます.
ハッシュテーブルを使いたいところですが,検索するキー数が数百程度でありプログラム可能な内蔵フラッシュ・ROMもそれほど大きくはないということで配列ですませます.
キーが接続されたポートの状態と点字の文字を一対一で対応させた配列を使って,ミニ・キーボードの殆どのキー・コードを網羅します.
また,キー・エンコーダはPCだけでなくMacintoshへも対応します.
- USB出力制御
全てのキーの押し下げが無くなったタイミングで文字を送りますので,文字の生成用にキー押し下げの履歴を保持するワーク・エリア(以後キー状態ストア)を用意します.
- 音声ガイド
押し下げが一定時間経過した場合に,キー状態ストアの状態からでなく,現在のキーの押し下げ状態から文字を確定します.
続いて確定した文字の音声データを読み上げますが,実際の読み上げは外付けシリアル・フラッシュROMから読み込んだ音声データを音声バッファにセットすることで音声ガイド用割り込みハンドラに委ねます.
この時,キー状態ストアをクリアして現在の現在のキーの押し下げ状態をキー状態ストアに反映し,全てのキー押し下げ解除に備えます.
- SPIモード設定
UART2に接続した外付けシリアル・フラッシュROMにアクセスするので,SPIモードに設定します.
- 外付けシリアル・フラッシュROM読み込み
この外付けシリアル・フラッシュROM読み込みに必要な最小限の外付けシリアル・フラッシュROMコマンドをサポートします.
- 音声ガイド用割り込みハンドラ
定期的に呼び出され,音声バッファのデータを再生をします.
- 各種モード
点字キーボードとしての機能を拡張するために以下のモードを備え,それらの初期化/保存コマンドを備えます.
- スキャン・コード・モード
対応するOSの変更
- ブレイラ・モード
エミュレートする点字タイプ・ライタの変更
- コード・モード
点字コード体系の変更
- 音声ガイド・モード
音声ガイドのオン/オフ
- 入力方式・モード
片手入力機能のオン/オフ
- キー動作・モード
モディファイア・キーをカーソルキーとして動作させる機能のオン/オフ
- ウォッチドッグ・タイマ
万が一暴走した場合でも何とか運用を続行するために,内蔵のウォッチドッグ・タイマを使います.
プログラムの冒頭で初期設定(2秒でリセットがかかる)し,キー・スキャンのアイドルでウォッチドッグ・タイマをクリアするようにします.
- レポート・ディスクリプタ変更
オリジナルでは,101キーボードをエミュレートするようになっていますので,もっと多くの文字が扱えるように変更します.
※ここでは,レポート・ディスクリプタの説明は割愛させていただきます.
このプログラムの製作は,Windows上で解凍したHIDのプロジェクトに,差分データを用いてパッチをあて,ビルドすることで完了します.
●サブ・ファームウェアの設計・製作
ROM用音声データを外付けシリアル・フラッシュROMに書き込むツールであるサブ・ファームウェアを作成します.サブ・ファームウェアの作成にあたっては,やはりアトメル社が公開しているサンプル・プログラムを多いに活用します.サブ・ファームウェアはアトメル社公開しているサンプル・プログラム(USBKEY_STK525-series6-cdc-2_0_3-doc.zip)(以後,CDC)をベースとしています.このCDCもHIDと同様に,若干の修正で各種用途に応用が可能である完成度が高いものです.このファームウェアもHIDと同様の構成であり,その修正は容易です.主な修正箇所はCDCをハンドリングしているタスクになります.
元になるプロジェクトのCDCをハンドリングしているタスクは仮想シリアル・ポートへの入力をエコーバックするだけの仕様でSPIモードでもありませんので,パッチで既存の機能に以下の機能を追加します.
- メイン・ループ
メイン・ループは実際には存在しないのですが,タスクの主要な関数がタスク・ディスパッチャに定期的に呼ばれますので,ここでも便宜上この呼称にします.
CDCを司る部分なので,下位の関数呼び出しのみならず仮想シリアル・ポートを外付けシリアル・フラッシュROMへリダイレクトするなどその他で大きく変更することになります.
キー・ダウン・イベントでメンテ用のコマンドを実行するだけの簡易的なイベント・ディスパッチャを実装します.
- シリアル・フラッシュROM情報表示コマンド
外付けシリアル・フラッシュROMのベンダー情報やライト・プロテクト状態など,種々の情報を表示します.
- シリアル・フラッシュROM書き込み開始コマンド
外付けシリアル・フラッシュROMを消去し,仮想シリアル・ポートからのストリームを外付けシリアル・フラッシュROMに書き込む状態でスタンバイします.
- シリアル・フラッシュROM書き込み終了コマンド
外付けシリアル・フラッシュROMをソフト的にライト・プロテクトし,書き込みを終了します.
- SPIモード設定
UART2に接続した外付けシリアル・フラッシュROMにアクセスするので,SPIモードに設定します.
このプログラムの製作は,Windows上で解凍したCDCのプロジェクトに,差分データを用いてパッチをあて,ビルドすることで完了します.
●音声ファイル作成プログラムの設計・製作
サブ・ファームウェアの入力データである音声ファイルを作るツールを新規に作成します.この音声ファイルは,単語を発声した複数のWAVファイルを1つにまとめた構造になっています.
音声ファイルの内容はそのまま外付けシリアル・フラッシュROMに0番地から書き込み,このキーボードの音声ガイドのサンプリング音源として利用します.
音声ファイルは,複数のWAVファイルから構成されます.このAVRマイコンの性能や内蔵フラッシュROM容量や外付けシリアル・フラッシュROMの容量などのトレードオフがありますので,WAVファイルはサンプリング周波数が22KHzで分解能が4ビットのモノラルのADPCM(Adaptive Differencial PCM)のデータに限定します.音声ファイルの構造は,WAVファイル情報の配列からなるヘッダに続いて実際のWAVファイルの内容をそのまま複数収めた簡易的なものにしています.
- ヘッダの構造
ヘッダは256個のWAVファイル情報の構造体(名前,アドレス,バイト数で構成)の配列からなる4KBの領域です.
音声ガイドは,与えられた単語をヘッダ内で検索し,実データが収まっているアドレスのデータを読み上げます.
- データの構造
容量も限られているので,4KBのヘッダに続いてパディングなしでWAVファイルの内容を連結した構造にします.
このプログラムの製作は,UNIX互換環境(Linux/MacOS X等)で音声ファイル作成プロジェクト(SoundData.tar.gz)を解凍・コンパイルすることで完了します.
●ソフトウェア書き込み手順
以下でソフトウェア書き込みの手順を示します.
これら手順は Windows XP で実施します.
-
先ず,サブ・ファームウェアを書き込みます.
後述のFlipというフリー・ソフトを使用して,このAVRマイコンの内蔵フラッシュROMのユーザー領域にファームウェアを書き込みます.このフリー・ソフトを使用することで,特別なフラッシュROM・ライタを準備することなくAVRマイコンにファームウェアを書き込むことができます.
-
次に,サブ・ファームウェアを用いて,ROM用音声データを書き込みます.
サブ・ファームウェアは,仮想的なシリアル・ポート(COMポート)として機能しますが,その出力先はコマンドにより外付けシリアル・フラッシュROMに設定可能です.以下を実行して,ROM用音声データを外付けシリアル・フラッシュROMに書き込みます.
- HyperTerminalを使用して,仮想シリアル・ポート経由でサブ・ファームウェアを書き込み可能状態に設定します.
- copyコマンドを使用して音声ファイルをCOMポートにコピーすることで,ROM用音声データを外付けシリアル・フラッシュROMに書き込みます.
- HyperTerminalでサブ・ファームウェアのデータ確認コマンドを実行し,書き込んだROM用音声データを確認します.
-
最後に,点字キーボード・ファームウェアを書き込みます.作業用のサブ・ファームウェアはもう不要なので,点字キーボード・ファームウェアを上書きして破棄します.
ここでもFlipを使用してUSB標準キーボードとして機能するファームウェアを書き込むことで,点字キーボードは完成です.
●実際の製作
ソフトウェア製作では,以下の「開発環境のセットアップ」と「ビルドとソフトウェア書き込み」を実施します.
製作は Windows XP で実施します.
開発環境のセットアップ
以下のファイルを入手してインストールを実施することで,開発環境をセットアップします.
作業場所は,C:\tmpとしますので、このフォルダがない場合は適宜作成してください。
詳細は【開発環境のセットアップ.html】を参照ください.
- WinAVR(フリーウェア)
Cコンパイラなどを含むCUIによるWindows用AVRマイコン・ツール群で,プログラム開発環境の基盤となるものです.今回は,2009年3月13日のバージョンを使用します.
- AVRStudio(フリーウェア)
プログラムのビルドなどを視覚的に分かり易く実行するための,GUIによるWindows用AVRマイコン・統合開発環境です.今回は,バージョン4.1.6を使用します.
- Flip(フリーウェア)
このAVRマイコンにファームウェアを書き込むツールです.USB機能付きのAVRマイコンの場合はこのツールによって,専用のライタでなく USB経由でファームウェアを書き込むことができます.今回は,バージョン3.3.3を使用します.
※FlipはJavaプログラムですから,Java をインストールしていない場合は,Java の実行環境JRE(Java Runtime Environment)をインストールしてください.
- パッチ・ツール(フリーウェア)
patchというUNIXのパッチ・ツールのWindows移植版を使用します.
ビルドとソフトウェア書き込み
- CDCファームウェア作成・書き込み
- CDCドライバ・インストール
- 音声ROMデータ書き込み
- HIDファームウェア作成・書き込み
4 実際に点字キーボードを使用してみた
このキーボードは,通常のUSBキーボードと同様にPC(Windows2000/XP)或いはMacintosh(Mac OS X Panther/Tiger)のUSBポートに接続して直ぐに使用することができます.このキーボードは,標準的なキーボードとキーの数,機能,キー入力の方法が異なりますので,以下でそれらを簡単に説明します.
まず,キーの数や機能について説明します.このキーボードには,6個の点字キ―と標準的なキーボードにもあるスペース・キーと5個のモディファイア・キー(「Shift」「Ctrl」「Alt」「Gui(※3)」「Fn」)の計12個のキーがあります.点字キー以外の基本動作は標準的なキーボードと同様ですからここでは省略します.このキーボードの点字キーは初期状態ではパーキンス・ブレイラ(写真6)という点字タイプ・ライタに準拠しています.パーキンス・ブレイラのキー・アサインでは点字キーは左からそれぞれ6点点字(図3)の③の点,②の点,①の点,④の点,⑤の点,⑥の点に対応します.
※3) WindowsのWindowsキー,Macintoshのコマンドキー
|
<図3>6点点字
|
|
|
<写真6>パーキンス・ブレイラ
|
<写真7>点字キーボード
|
次にキー入力方法について説明します.このキーボードは,点字キーのキーの押し下げのみでは文字をコンピュータに送りません.
- 通常入力
通常は全ての点字キーの押し下げが解除された時点で,それまでの点字キーの押し下げの履歴から点字を確定し送ります.無理に同時に押し下げたりする必要はありませんし,キー入力のオート・リピート機能はありませんので,落ち着いてゆっくり(3秒以内)キー入力できます.
- 音声ガイド時入力
キー入力中の点字が分からない場合はキーを押し下げて3秒待つと,今までの点字キー押し下げの履歴ではなく現時点でのキー状態から確定した点字の文字を候補として1秒毎に読み上げます.
次にモードについて説明します.このキーボードは,複数のモード持っていますが,それぞれのモードの状態が遷移する際には,遷移後の状態を読み上げます.これらのモードの状態は基本的には独立して変更できますが,まとめて初期化/保存することができます.
最後は動作チェックを兼ね,以下のシナリオに沿って操作してみます.
- ホスト・コンピュータに接続する
- このキーボードをPCに接続すると標準キーボードとして認識され,タスク・バーにキーボードを検出した旨が表示されます.
- モードを初期化して「北米点字コード状態」にする
- このキーボードの「Shift」「Ctrl」「Fn」「Alt」「⑥の点字キー」を押し下げ押し上げし,全モードを初期化します.これで普通のアプリケーションでアルファベットの点字の入力が可能になります.
- 「北米点字コード状態」で,「メモ帳」の入力を試す
- 次にスタートメニューからアクセサリの「メモ帳」を起動します.
- 英語ですから,IMをオフ(※4)にします.
- ①と②の点字キーを押し下げ上げすると,「メモ帳」に「b」が表示されます.
- 「6点カナ・コード状態」で,「メモ帳」の入力を試す
- 次に「Shift」「Ctrl」「Fn」「Alt」「④の点字キー」を押し下げ押し上げすると,“6点カナ”と読み上げ後にコード・モードがカナの状態に遷移します.
- また,①と②の点字キーを押し下げ上げすると,「メモ帳」に「i」が表示されます.
- 日本語ですから,IMをオン(※4)にします.これで普通のアプリケーションで点字でカナ漢字変換して日本語入力が可能になります.
- ①と②の点字キーを押し下げ上げすると,今度はIM上にひらがなで「い」という文字が表示されます.
※4) このキーボードで「Ctrl」「Fn」押し下げ上げするとIMEが交互にオン/オフします.エンター・キーやバックスペース・キーなどその他のキー・コードについては,本誌資料の【Fnキー・コード表.xls】を参照ください.
5 改良・応用の可能性
改良
読み上げ機能は,出力する音声の品質を犠牲にして最小限のリソースで構成したため,ハードウェア,ソフトウェアともに改良の余地があります.
ハードウェア関連では,低周波アンプの改善があります.低周波アンプをローノイズの本格的な回路に変更することで耳障りなホワイト・ノイズを低減することができます.
ソフトウェア関連では,PWMの分解能向上があります.今回は下位互換のAVRマイコンでの実現性を踏まえて,8ビットのPWMを使用しています.これを今回採用したAVRマイコンで可能な16ビットのPWMを使用することで,読み上げの音質を大きく改善できると思われます.
8点の漢点字の対応は試行中で実装が完了しておりませんが,下位互換のAVRマイコンであるAT90USB162とそのサンプル・プログラムの修正(※5)では,8点の漢点字への対応は実現できていますので,何れ実現は可能だと思います.
※5) レポート・ディスクリプタのレポート・カウントの数を8にして,文字を送る箇所もそれに対応させ全て8文字送るように変更します.
応用
今回は,このキーボードを最終的にはHID キーボードとしてのみ実現しましたが,USBデバイスは複合したデバイス構成にすることが可能です.特殊なハードウェアを追加することなくファームウェアの変更のみで,必要に応じてマウスなどの機能を追加することは容易です.
Blue Toothモデムを実装すれば,容易にBlue Tooth対応は容易に実現可能ですが,あいにくBlue Toothモデムは非常に高価なので,このキーボードには不向きであると考えます.このキーボードで使用したAVRマイコンは,USB OTG(On The Go)という機能を備えています.この機能を用いることでBlue Toothモデムを使わず,Blue Tooth対応を実現できる余地があります.USB OTGではPCなどのホスト・コンピュータが無い状態で周辺装置間の通信が可能です.Blue Toothのプロトコル・スタックをファームウェアで実現すれば,安価なUSB Blue Toothのドングルを用いてホスト・コンピュータと接続できる可能性があります.
コラム「点字の基礎知識」
公共の場所や飲料の上部など至る所で点字を見かける点字は日本語(カナ)を点字で表現したものです.図4の①の点だけが凸になっているのは「あ」です.
このカナ点字の起源はフランスのアルファベットで,フランス人のルイ・ブライユ氏(1809 - 1852)によって発明された記号の体系で,世界中で使われている一般的な点字の基礎です.このフランスのアルファベットは六つの点によって1文字を表します.2の6乗(=64)の組み合わせがあれば,確かに英語のアルファベットなどの表音文字が表現できそうです.
日本では,最初に6点のカナによる点字が石川倉次氏(1859 - 1944)によって発明されました.現在では,8点の漢点字など,カナ点字を礎として独自に進化しています.点字の進化は,各国で独自に進んでいるため,国や言語が異なれば点字が異なり不便ですが,PC の普及で,点字の標準化が活発になっています.
昨年は,ルイ・ブライユの生誕200周年,石川倉次の生誕150周年の年でした.発明から100年以上経過しましたが,点字の利便性の向上は十分ではありません.PC のハード・ベンダー,ソフト・ベンダーもオープン・ソースの有志も,まだまだ障がい者に対して便宜を図る努力が足りないのでしょう.
|
<図4>カナ点字の「あ」
|