Ticket #31905

Open Date: 2013-08-20 14:54

Last Update: 2013-10-09 23:38

日本語入力中にエスケープキーを押すとクリアと通知させたい

Reporter:nishimotoOwner:nishimoto
Priority:5 - MediumMileStone:2013.3jp (closed)
Type:Feature RequestsSeverity:5 - Medium
Component:(None)Status:Closed
ResolutionFixed

Details

日本語入力中にエスケープキーを押すとクリアと通知させたいということで、下記の変更を検討中です。

https://bitbucket.org/nvdajp/nvdajp/commits/492608e63fa3fb78fd448a5d6fae18cb3eee5a9f?at=imeclear

本家のもともとの実装では、入力が取り消されたときに、取り消された文字を通知するようになっており、ここを仕様変更する実装になっています。

本家へのパッチ提案の可能性もあるので、ここに情報をまとめておきます。

Attachment File

Attachment File ListNo attachments
Add New attachment
Add attachment filesPlease login to add new attachment

Ticket History - 3/21 Histories [Show all old Histories]

2013-08-20 14:54 Updated by: nishimoto

  • New Ticket "日本語入力中にエスケープキーを押すとクリアと通知させたい" created

2013-08-20 16:50 Updated by: nishimoto

Comment

ATOK 2013 で、入力文字を確定するために Enter を押したときにも「クリア」と通知される現象を確認しました。

Windows 7 32ビット+メモ帳でご報告いただきましたが、私の Windows 8 64ビットでも再現しました。

2013-08-21 13:48 Updated by: nishimoto

Comment

imeclear の下記の作業を評価中です。今のところ問題は報告されていません。

https://bitbucket.org/nvdajp/nvdajp/commits/4b83aa91d4d248667ee876b532fd4c255760909c?at=imeclear

2013.2jp にマージするかどうかを判断しているところです。

2013.1jp で本家の IME 対応を日本語化したときには、独自に行った拡張はすべて設定で無効化できるようにしました。

今回の修正も、「日本語版の文字入力拡張」をオフにしたら本家版の挙動に戻せるようにするかどうかを、合わせて検討します。

2013-08-23 08:52 Updated by: nishimoto

  • Milestone Update from (None) to 2013.2jp (closed)
  • Resolution Update from None to Fixed

Comment

開発スナップショット jpdev130823

https://dl.dropboxusercontent.com/u/62564469/nvda_snapshot_jpdev130823.exe

ブランチ imeclear ハッシュ f0502d2 です。

本家の rc をマージしているので、2013.2jp のリリース候補としての作業です。

既存の実装との整合性を考慮して、「日本語版の文字入力拡張」をオフにしたら本家版の挙動に戻せるようにしました。

また「日本語版の説明」とその英語版ドキュメントに、この仕様変更について加筆しました。

2013-08-23 13:17 Updated by: nishimoto

Comment

imeclear 424f716 にて、本変更とは直接関係ないと思われる tsf.cpp の変更を元に戻しました。

2013-08-26 11:06 Updated by: nishimoto

Comment

release-2013.2jp ブランチに imeclear をマージしました。

$ git merge imeclear
Updating a11ff7c..424f716
Fast-forward
 source/NVDAHelper.py                 | 9 ++++++++-
 source/locale/ja/LC_MESSAGES/nvda.po | 5 +++++
 user_docs/en/readmejp.t2t            | 6 ++++--
 user_docs/ja/readmejp.t2t            | 6 ++++--
 4 files changed, 21 insertions(+), 5 deletions(-)

2013-08-31 22:02 Updated by: nishimoto

  • Owner Update from (None) to nishimoto
  • Resolution Update from Fixed to Postponed

Comment

Microsoft IME (2003, 2010) と Microsoft Word (2003, 2010) の組み合わせで、Enter キーを押して確定したときにクリアと通知する現象を確認したため、本チケットに関する作業のやり直しを検討します。

2013-09-01 20:09 Updated by: nishimoto

Comment

キーイベントで判定する必要があるかも知れないので、要求仕様を整理するために IME のキー操作でクリアを通知する可能性があるものを調べてみました。

ATOK: Esc, Ctrl+[ (開き大かっこ)

Microsoft IME: Esc, Shift+Esc, Ctrl+Z

いずれも Windows 8 で「全文字消去」の動作を確認しました。

以下、参考Webサイト:

http://www.cnet-try.ne.jp/FF/ATOK/

http://office.microsoft.com/ja-jp/support/HA101864593.aspx

2013-09-02 17:29 Updated by: nishimoto

Comment

misono さんの修正提案 fiximeclear をマージしました。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git

424f716..e729bef imeclear -> imeclear

実装から判断すると以下の仕様になっています:

  • 候補文字列が空になったときに、その原因になったキー操作が Esc などである場合に ui.message でクリアと通知する(音声と点字の両方に通知)
  • 候補文字列が空になったときに、その原因になったキー操作がバックスペースである場合は、点字ディスプレイには通知せず、音声で、消去された文字に続けてクリアと通知する

次のリリース候補にこのままマージするか、さらに修正するか、検討中です。

2013-09-03 10:17 Updated by: nishimoto

Comment

追加の修正をしていただいたので imeclear ブランチにマージしました。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git

e729bef..2f699ba imeclear -> imeclear

バックスペースキーで1文字ずつ削除したときの処理を実装していただいたのですが、なぜか、クリアと読む場合と読まない場合がはっきり分かれています。

具体的には、「あ」「か」「さ」など、ア段の文字はカナ1文字だけを入力してすぐバックスペースを押すと「クリア」と読むのですが、「い、う、え、お」「き、く、け、こ」など、ア段以外の文字は、1文字だけ入力してすぐ削除しても「クリア」という通知がありません。

Windows 8 64ビット、メモ帳、Microsoft IME および ATOK 2013 で同じような状況です。

点字ディスプレイをつないで検証してみるべきですが、まだやっていません。

もう少し調べてみます。

2013-09-03 13:16 Updated by: nishimoto

Comment

いま作業中の箇所が呼ばれるタイミングと「直前に押されたキーのキーコードの更新」の順序が不定であるために、 A I U E O など直前の入力文字のキーコードを判定する必要が出てきています。

作業中の箇所が呼ばれるのは、変換候補文字列が確定されて empty になるか、入力コンポジションのセッションがキャンセルされて empty になるか、どちらかしかないように思えるので、キャンセルになるべき操作だったかどうかを定義するよりも、確定になるべき操作かどうかを定義して判定するほうが、安全な実装になるのではないか、思い始めました。

もう少し考えてみます。

2013-09-07 11:05 Updated by: nishimoto

Comment

作業時間が取れなくて遅くなってしまいましたが、最新の fiximeclear で本件の再確認をしています。

Windows 8 64ビット、Word 2013、Microsoft IME の組み合わせで、キーボード設定「コマンドキーの読み上げ」を有効にすると、エンターで確定したあとでアプリケーションのウィンドウタイトルを読み上げたり、クリアと読み上げたりする現象が発生しています。

「コマンドキーの読み上げ」は初心者向けの教材で推奨されていることがあるので、対応が必要と思います。

もう少し調べてみます。

2013-09-07 13:37 Updated by: nishimoto

Comment

Windows XP sp3 と Office IME 2010, Word 2003 の組み合わせでも、「コマンドキーの読み上げ」有効のときに、日本語変換を確定した後の冗長なメッセージが発生するようです。

確認に使っている実行ファイル(電子署名なし)を下記においておきます。

https://dl.dropboxusercontent.com/u/62564469/nvda_jpime130907.exe

2013-09-07 15:05 Updated by: nishimoto

Comment

コマンドキーを読みあげるとそのタイミングの影響で、getAsyncKeyState がうまく動かないのかも知れません。。

release-2013.2jp から派生した2種類のブランチについて、下記の作業をしました。

noimefix ブランチ:imeclear の実装をいったん削除する

imeclear ブランチ 0d345da : 「コマンドキーの読み上げ」がオフのときにだけ imeclear の処理を有効にする

どちらも bitbucket にだけ push してあります。

https://bitbucket.org/nvdajp/nvdajp/commits/all

どちらかを 2013.2jp にするか、他の選択肢を探すか、あるいはもっと 2013.2jp の開発に時間をかけるか、あと1日、ご意見を待ちつつ、考えてみます。

コマンドキーの読み上げがオフのときだけ imeclear という実装を jpime130907a としてビルドしました。

https://dl.dropboxusercontent.com/u/62564469/nvda_jpime130907a.exe

2013-09-07 22:58 Updated by: nishimoto

Comment

下記の修正が反映された状態で再度動作確認をしています。

To git@bitbucket.org:misono/nvdajp.git 6226d1e..4a4e47e fiximeclear -> fiximeclear

コマンドキーの読み上げの影響そのものは解決されたようです。

新たなテスト条件として、点字ディスプレイへの出力を有効にすると、Word 2013 やワードパッドで、エスケープキーを押したの挙動が不確実になります。

具体的には「クリア」とだけ読み上げたり、削除された文字列だけを読み上げたり、その両方を読み上げたり、のどれが起こるか確実ではありません。

コマンドキーの読み上げの設定には関係ないようです。また、ATOK 2013 と Microsoft IME の両方で同じ状況のようです。メモ帳では起こらないので TSF には依存しているようです。

Windows 8 64ビットで、USB 仮想 COM ポート接続で BM46 を使って試しています。

もう少し調べてみます。

2013-09-08 07:49 Updated by: nishimoto

Comment

現状の実装では本チケットを「完了」にできそうにないので、いったん 2013.2jp のマイルストーン指定を解除したいと思います。

2013-09-08 07:49 Updated by: nishimoto

2013-09-18 21:03 Updated by: nishimoto

Comment

getAsyncKeyState をなるべく使わない実装に書き直してみましたが、まだバックスペースの処理がうまく書けないので、検討中です。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git ea692ce..9582b44 imeclear -> imeclear

2013-09-18 23:29 Updated by: nishimoto

Comment

コメントの追加などを行いました。

また、エスケープが押されたときの通知を音声のみにしました。

これはバックスペースの処理に合わせる意味と、文字が消えたときに一時的なメッセージ表示でエディットコントロールの内容を隠すよりも、エディットコントロールそのもので文字が消えたことをすぐに示したほうがよいのではないかという考えです。

バックスペースの処理については、getAsyncKeyState の最下位ビット判定で BM46 のバックスペース操作にもうまく対応できているので、このままにするか、同等の処理を keyboardHandler に追加するか、もうすこし検討します。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git 9582b44..cbdec8a imeclear -> imeclear

2013-10-05 11:04 Updated by: nishimoto

  • Resolution Update from Postponed to Fixed
  • Milestone Update from (None) to 2013.3jp (closed)

Comment

この件については現在の jpnext の実装で作業完了にして jpbranch にマージしたいと思います。

2013-10-09 23:38 Updated by: nishimoto

  • Ticket Close date is changed to 2013-10-09 23:38
  • Status Update from Open to Closed

Comment

jpbranch に imeclear ブランチをマージしました。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git
   941f679..705facc  jpbranch -> jpbranch

Add Comment/Update #31905 (日本語入力中にエスケープキーを押すとクリアと通知させたい)

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login