キャレットのちらつきNo.36228
聖人(きよと) さん 17/12/19 22:24
 
お世話になっております。

秀丸エディタ / 秀丸メールの編集エリアにおいて、キーの長押しなどでキャレット
移動中に、
キャレットが点滅したり、酷い時には画面から消えてしまうことがあります。
(現象の出方に数分〜程度の周期的な揺らぎがあるようです。つまり、一時的に問題
ないときもあります。)
移動を止めた際には正しく表示されます。

確か、以前は「カーソル点滅」の設定によらず、キャレット移動中はキャレットが消
えることなく常に表示されていたと記憶していて、
特に困ることはなかったのですが、今の挙動になってしまってからキャレットを見失
うことが増え、少々困っています…。

もし何か設定等で回避できるのであれば、教えていただけないでしょうか?
また、それが不可能であれば、対策して頂くことは可能でしょうか?

以下、詳細です。

・近場のWindows 10機すべてで同様の現象が出ました(x86 / x64、1703又は1709)。
  グラフィックドライバはいずれもnVidiaかIntelのもので、Radeon系は試せていま
せん。
・現象が出る環境では、最新版(v8.77)だけでなく、v4.19といった古いバージョンで
も発生します。
・同一機材のWin7環境下では、キャレットが消えることはなかったと記憶しています
(既にアップグレード済のため、確認できません…)。
・念のため古い機材(Win95 OSR1相当 + v4.19)でも確認してみましたが、現象は出ま
せんでした。
・「トラブル対策」や「独自キャレット」、「カーソル形状」、「文字の描画」につ
いては、設定を変えても特に変化がないようです。
・カーソル移動の加速をしていない環境でも出ます(33ms周期のキーリピートでカー
ソル移動した場合でもちらつきが確認できます)。
・検索エリアなど、エディットボックス内ではキャレットのちらつきはありません。

[ ]
RE:36228 キャレットのちらつきNo.36229
秀丸担当 さん 17/12/20 09:02
 

秀丸エディタのキャレットは、Windows標準のキャレットのときも、独自キャレット
のときも、実際に画面に描画した後に画面の内容を反転しているので、タイミング次
第では一瞬反転しなく見える可能性はあると思います。
ただすごく一瞬のことで、見えない状態が続くのはうまく確認できませんでした。こ
ちらで確認できたのは、1秒間に何回も点滅していそうな素早い点滅状態はありました。
Windows 7以下やクラシック表示のときでもその可能性はあるはずと思いますが、Win
dows 8以降ではGPUを使ったウィンドウ合成(DWM)のみになったため、違いがあるの
かもしれません。

検索ダイアログの入力は小さいためかわかりづらいですが、メモ帳でも同じような点
滅は起きるようです。
あらかじめ反転したものを描画する方式か、レイヤーウィンドウの方式にすると回避
できるとは思いますが、はたしてそこまでするべきかは何とも言えないです。

場当たり的な対策になってしまうかもしれませんが、[その他]→[ファイルタイプ別
の設定]→[デザイン]のところで、「カーソル位置の縦線」をONにしておくと、見失
うことは防げると思いますが、どうでしょうか。
あと「カーソル行」は「下線モード」にしておくと十字になって見やすいと思います。

[ ]
RE:36229 キャレットのちらつきNo.36230
聖人(きよと) さん 17/12/20 19:53
 
早速のご回答ありがとうございます。

>ただすごく一瞬のことで、見えない状態が続くのはうまく確認できませんでした。
>こちらで確認できたのは、1秒間に何回も点滅していそうな素早い点滅状態はありま
>した。

カーソル移動の加速で、リピート間隔を画面のリフレッシュ周期前後(例えば14ms)に
すると発生しやすくなると思います。
# 当方、普段より外部のプログラム上でキーリピート間隔を約15msにして使用してい
るため、この影響をモロに受けている状態です…。


>検索ダイアログの入力は小さいためかわかりづらいですが、メモ帳でも同じような
>点滅は起きるようです。

すみません、こちらでもWin10環境下にてメモ帳のカーソル点滅が起きることを確認
できました。
(行移動やスクロールをすると急に酷くなるようです。)

少なくとも、秀丸固有の問題という訳では無さそうですね…。


>場当たり的な対策になってしまうかもしれませんが、[その他]→[ファイルタイプ別
>の設定]→[デザイン]のところで、「カーソル位置の縦線」をONにしておくと、見失
>うことは防げると思いますが、どうでしょうか。
>あと「カーソル行」は「下線モード」にしておくと十字になって見やすいと思います。

どうもありがとうございます。
早速試したところ、こちらの場合は長さがある為か、前述の周期で移動させてもどこ
かしら線が残ってくれるようでして、これであれば見失わずに済みそうです。
このままこちらを使わさせて頂こうと思います。

[ ]
RE:36230 キャレットのちらつきNo.36232
秀丸担当 さん 17/12/21 09:49
 

秀丸エディタの動作環境にもカーソル移動の加速があるのと、秀capsにもカーソル移
動の加速があり、10ms〜24msくらいの範囲で試してみたところでは、点滅具合にばら
つきがあるようでした。
右矢印キーで一秒に60桁進むとして、そのうち2〜4桁くらい見えない場合が、何回か
に一度はあるようでした。

カーソル位置の縦線の他に対策できそうなこととしては、事前に反転したものを描画
することなどが考えられますが、それは根本的な修正になりそうなので、他には独自
キャレットを使う場合に限っての反転の仕方の対策は考えられそうです。
現状で、いったん反転を消してから、移動先でまた反転とするので、隙があります。
先に移動先で反転してから、元の場所を反転して消すように修正すれば隙は無くなる
ので、そういう対策も検討してみます。ただ、その代わりに一瞬二重になって見える
ことがあるかもしれません。

[ ]
RE:36232 キャレットのちらつきNo.36236
聖人(きよと) さん 17/12/22 01:15
 
>秀丸エディタの動作環境にもカーソル移動の加速があるのと、秀capsにもカーソル
>移動の加速があり、10ms〜24msくらいの範囲で試してみたところでは、点滅具合に
>ばらつきがあるようでした。
>右矢印キーで一秒に60桁進むとして、そのうち2〜4桁くらい見えない場合が、何回
>かに一度はあるようでした。

この状態で暫く使っていると(10分周期程度?)、数桁飛びが常態化した上で0.2〜0.5
秒位カーソルが消える現象も出るようになると思います(つまり、10桁近く飛ぶ)。
秀capsの加速をこちらでも試してみましたが、どうも出力間隔が長い(まとめて投げ
てる?)ようですので、恐らくこちらでは出にくいと思います。
こちらでは、前述したような現象が秀丸側の加速を有効化(14ms。キーボード側のリ
ピートレート不問)で再現できます。

# もしかしたら、システムタイマと画面のリフレッシュ周期の精度にもよるのかもし
れませんが…。

尚、こちらでは普段カーネルモードで加速処理させているので、ディスパッチ間隔の
ジッタが少ないのか、
はまり出すともっと長期間消えることがあります(数秒間内で一瞬正しく表示される
のが数回ある程度…。つまり行内移動程度では移動中全く位置把握できなくなります)。


>カーソル位置の縦線の他に対策できそうなこととしては、事前に反転したものを描
>画することなどが考えられますが、それは根本的な修正になりそうなので、他には
>独自キャレットを使う場合に限っての反転の仕方の対策は考えられそうです。
>現状で、いったん反転を消してから、移動先でまた反転とするので、隙があります。
>先に移動先で反転してから、元の場所を反転して消すように修正すれば隙は無くな
>るので、そういう対策も検討してみます。ただ、その代わりに一瞬二重になって見
>えることがあるかもしれません。

こちらでは独自キャレットを使わない設定にはしていませんので、そういった対策を
していただけるのであれば大変有り難いです。
移動中に画面上から全く消えてしまうよりは良いと思います。

[ ]
RE:36236 キャレットのちらつきNo.36238
秀丸担当 さん 17/12/22 10:59
 

詳しい情報ありがとうございます。
反転することは、ルーラーの描画をするタイミングでも一瞬キャレットの反転があっ
て、それも影響しているようでした。
一応手元ではマシになったように見えるのですが、もう少し調整して次のβ版で修正
したいと思います。

[ ]
RE:36238 キャレットのちらつきNo.36244
聖人(きよと) さん 17/12/23 23:33
 
ご対応ありがとうございます。
β版が出ましたらこちらでも確認したいと思います。

[ ]
RE:36244 キャレットのちらつきNo.36247
秀丸担当 さん 17/12/25 09:18
 

V8.79β3で調整してみました。
以下のページの「先行開発バージョンはこちら」から試していただくことができます。
http://hide.maruo.co.jp/software/hidemaru.html
少なくとも自分のところではそれなりに軽減されましたが、ルーラーの描画時にも無
意味な点滅があったのでそれを無くして、独自キャレットでないときも軽減されまし
た。しかしルーラーの表示をOFFにするとWindows標準でも独自キャレットでも症状が
あり、因果関係は無いはずなのですが、やはりタイミング次第ではおきてしまうのか
もしれません。
V8.79β3においては、ルーラーの表示がOFFであっても、高さがゼロのルーラーがあ
るかのようにしてほぼ同等の処理にしてみています。
一応こちらで確認する限りにおいては、ON/OFFどちらでもいいようです。


[ ]
RE:36247 キャレットのちらつきNo.36251
聖人(きよと) さん 17/12/27 02:17
 
ご対応ありがとうございました。

暫く使ってみましたが、こちらで見る限り、独自キャレットON /OFF共に、点滅はほ
とんど無くなりました。
ごくまれにちらつくことはあるようですが、カーソルを見失うほど長期間の消失は無
くなりましたので(60カラム/秒として、稀に1〜2カラム程度)、全く問題ないと思い
ます。

# 念のため確認ですが、ルーラの表示と、文字入力に伴うカーソル移動については変
更無しでしょうか? (どちらも点滅するので)
# 個人的にはカーソルキーでの移動でキャレットの点滅がなければ良いので、β3の
対応内容でも困りません。


>少なくとも自分のところではそれなりに軽減されましたが、ルーラーの描画時にも
>無意味な点滅があったのでそれを無くして、独自キャレットでないときも軽減され
>ました。しかしルーラーの表示をOFFにするとWindows標準でも独自キャレットでも
>症状があり、因果関係は無いはずなのですが、やはりタイミング次第ではおきてし
>まうのかもしれません。

タイミング依存とすると嫌ですね…。
その辺りの法則性がわかれば再発の危険も無くなって安心なのですが…(描画命令の
発行数?? 等々)。

[ ]
RE:36251 キャレットのちらつきNo.36252
秀丸担当 さん 17/12/27 08:34
 

ご確認ありがとうございます。
β3でよさそうということで、よかったです。
文字入力については、今回の修正は直接的にはいじっていないです。
タイミング次第で起きる可能性はあるかもしれないですが、現状で様子を見ようと思
います。

[ ]