対応FAQ | − KeyNavi対応についての質問と回答 |
→ KeyNaviトップ[3]
|
■ ■KeyNavi対応についての質問と回答はこちら
KeyNavi1.0で英数字以外のキーにも対応しました。
【拡張キー名:英数字以外のもの】
該当する拡張キー名を使って下さい。 「F1」なら "F1"、「Ctrl-F1」なら"cF1" などとなります。
2003/12/2更新:
「CarriageReturn(Enterキー)」のknxを「CR」から「RET」に変更
(Ctrl-Rと区別する為)。
使えます。
「Ctrl」「ALT」「Shift」単独 或いは任意に組合せて指定できます。
但し「Ctrl」や「ALT」を使う割当は ブラウザの既定ショートカットに使われている場合があります。
例: 「Ctrl-F」は検索、「ALT-F」はファイルメニュー
「きぃなび」でこれらと重複するショートカットを作ると 新たに指定した方が優先され ブラウザ既定ショートカットは無視されます。
補足:
KeyNavi拡張ハンドラ関数を定義すると
上書き、並列実行の2つを選択できます。
ただ並列実行は複数の動作が同時に起こり
ユーザが混乱しやすいので上書きにするのが普通です。
その点、「Shift」は重複の問題が無いので このサイトでは「Shift」キーをメインに使っています。 「Ctrl」「ALT」を使いたい場合は それらが ブラウザのショートカットに使われてないか調べるといいでしょう。 一般的に 数字キー、キーボードの右側のキー(ALT)はあまり使われてないようです。
注:
KeyNaviのデフォルトでは「Ctrl-I/K/J/L」に上下左右のフォーカス移動
を割当てています。
KeyNavi設定画面「Ctrl-/」でそれらを使わないよう設定できます。
また、イントラネットのようにユーザに ページの使い方を指定できるケースは 臆せず使ってしまって構わないでしょう。 常日頃からアクセスするページなら慣れてくれるはずです。
実験:
「Ctrl-1」でフォーカス ・
「ALT-1」でフォーカス
■ KeyNavi以外にスクリプトがある場合
KeyNaviでは
onkeydown, onkeyup, onkeypress, onload, onresize, onmousedown
に対しイベントハンドラを設定しています。
別のスクリプトでも これらを設定している場合は 上書きされた可能性があります。 その場合は それらのスクリプトの後に「KeyNavi」の指定 <script language="javascript" src="keynavi_ja.js" ></script> を記述します。 すると KeyNaviのイベントハンドラは後から追加される形になるので 既存のスクリプトの実行も合わせて行われます。
ご不明の場合は上記指定を
ソースの最後(</body>の直前など) に記述して下さい。
参考:JavaScript@KeyNavi.Net:イベントハンドラの登録 [Shift-Y]
KeyNaviではイベントハンドラの登録方法を工夫!
ページ内のリンクやボタンの数が多く アルファベットや数字を使い切っても
まだ不足するというケースです。
以下のような方法を検討してみて下さい。
■ 修飾キー組合せ
KeyNaviでは修飾キー「Ctrl」「ALT」「Shift」を
任意個数 組合わせたショートカットが可能です。
例えば 「Ctrl-ALT-Shift-F」などといった組合せも可能です。
何通りの組合せが可能か計算してみます。 英字(26個)+数字(10個)=36通り、 修飾キー単独で3通り、 2つ組合せで3通り 3つ全て使うものが1通りです。 そのため 36*(3+3+1)=252 通りが可能です。 注意する点として 「Ctrl」「ALT」を使うショートカットは ブラウザ既定のショートカット「検索:Ctrl-F」「ファイルメニュー:ALT-F」 などと重複する可能性があります。
■ 履歴ショートカットを実装する
単独キー入力で実行するようなショートカットではなく
キーの連続入力で実行するものを用意します。
例えば 「¥」キーを選択キーにして
2連続「¥-A-B」とすれば 36**2=1296通り、
3連続「¥-A-B-C」なら 36**3=46656通りになります。
■ ショートカットの動作を「フォーカス」にする
このサイトでは ショートカット入力時の動作を
「ページJump」にしていますが フォーカスに変更することもできます。
フォーカスだとショートカットが重複しても問題ありません。
例えば ページ内に「リンク1[Shift-L]」「リンク2[Shift-L]」などと 「Shift-L」を使う複数のオブジェクトがあった場合、 「Shift-L」の連続入力でフォーカスを順番に移せます。 また「<・>」で前後に移動できます。 なお「Tab」「Shift-Tab」を使う一般的なフォーカス移動と異なり フォーカス開始時にスクロール位置が先頭に戻ることはありません。 現在表示されているエリア内のリンクからフォーカスが始まるので 直感的に使えます。 ■ 英文サイトの場合
英文サイトでは文中の各単語がアルファベットで記述されている為
ページを全く編集せず そのまま「頭文字フォーカス」が使えます。
「Shift-英数字」で各リンクやボタンにフォーカスします。
この方法はZopeでの活用 [Shift-H]で使用されています。 ■ フォーカス移動「Ctrl-矢印」や「Tab」を使って貰う
ショートカットではなく
KeyNaviの基本機能を使って貰うのも1つです。
内部関数を呼べば キー配置をウィンドウの左横に表示できます。
使い方 [Shift-Z]
<a href="javascript:void(0); onclick="kl_hwin_open()">使い方</a>
同じキーに対し別のオブジェクト(リンクやフォーム)が割当てられていた場合です。
実行される動作がクリックかフォーカスなのかにより動作が異なります。
■ クリックの場合(このページなど)
表示エリア(画面)中心からもっとも近いオブジェクトに対し
クリックが実行されます。
■ フォーカスの場合
現在フォーカス中のオブジェクトが表示エリア内にある場合は
その次のオブジェクトがフォーカスされます。
フォーカス中のオブジェクトが表示エリア外にあったり どのオブジェクトにもフォーカスしていない場合は 表示エリア内先頭付近のオブジェクトが優先的にフォーカスされます。
これらの動作は
「Ctrl-矢印・I/K/J/L」によるフォーカス移動と同じです。
フォーカス開始時は現在表示されているオブジェクトを優先します。 Tabによるフォーカスと異なり初回キー入力時に スクロール位置が変わらないよう工夫されています。
不注意なユーザはテキスト入力窓にフォーカスしないまま
何かキーを押すかも知れません。
その場合にページが移動することになりユーザが混乱する可能性があります。
フォーム入力ページ等でKeyNaviの割当を無効にするには 「KL_MAP_DEFAULT="mapac..."」とします。 「ALT」「Ctrl」「ファンクションキー」入力についてはそのまま通りますが 通常のテキスト入力で使うキーについてはKeyNaviは動作しないようになります。 この場合でも開発者が指定したショートカットや 「Ctrl-矢印」によるフォーカス移動は利用可能です。
ユーザにショートカット操作による履歴の「戻る・進む」や「再読込み」
ができないようにするには「KL_DISABLE_NAVI=true」として下さい。
右クリック、フルスクリーン(F11)なども無効化されます。
具体的には Ctrl修飾はテキスト入力で使う「Ctrl-A/C/V」以外全て
ALT修飾全て、Functionキー、BackSpace(テキスト入力時を除く)も無効化されます。
一方、開発者が指定したショートカットや 「Ctrl-矢印」によるフォーカス移動については無効化されず そのまま利用可能です。 ・参考:サンプル5:フォーム入力&ブラウザ機能制限 [Shift-2]
Note:
セッション管理などの問題でこのような措置が望まれる場合があります。
しかしユーザビリティ上は好ましい設定とはいえません。
長期的にはユーザが履歴操作を行った場合でも対応できるよう
サーバ側の処理を工夫するか専用の履歴ボタンを作るのをお勧めします。
|