rxvt 上の テキストエディタ mp にて Home/End キー挙動不審

4.X系のバグ、トラブル

モデレータ: 暇人, YoN, nyu

返信する
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

rxvt 上の テキストエディタ mp にて Home/End キー挙動不審

投稿記事 by cygnus_odile »

 ※ キーコード間違えてましたので、記載修正 (22:36)、さらに誤記修正(2009-12-11 20:07)
Puppy Linux 4.3.1JP、Puppy Linux 4.3.1 (original)、Puppy Linux 4.20p1JP にて、
端末エミュレータ rxvt 上で動作する、テキストエディタ mp で、
 Home キー を押すと、Ctrl + a (Menu) と同様に、 mp の メニューが開き、
 End キー を押すと、Ctrl + e は定義されていない旨のメッセージが表示される。

この現象は、こちらの記事 viewtopic.php?f=25&t=1510&p=10854#p10843 にも記載したように、 rxvt にて Home / End キーの返すコードが、 各々 1 (Ctrl + a) / 5 (Ctrl + e) に割り当てられているのが原因だ。
 Puppy Linux 4.3.1JP では、 /root/.Xresources ; Puppy Linux 4.3.1 (original) や 4.20p1JP では、 /root/.Xdefaults に、
  Rxvt*keysym.0xFF50:\001
  Rxvt*keysym.0xFF57:\005
と設定されている。 確かにこれで、コマンドラインでは各々行頭行末へのカーソル移動キーとして働くが、 mp エディタでは不具合が生じている。 ちなみに X-Window を抜けた素のコンソール上では問題ない。

対処としては、 Puppy の 素のコンソール と同じように、
  Home キーの返すコード : 27 91 49 126 (:十進数表記)    Esc [ 1 ~
  End キーの返すコード : 27 91 52 126 (:十進数表記)    Esc [ 4 ~

となるように、 ファイル /root/.Xresources の 5行目と6行目 (あるいは、.Xdefaults の該当行) を、

  Rxvt*keysym.0xFF50:\033\133\061\176
  Rxvt*keysym.0xFF57:\033\133\064\176

のように書き換え(八進数でコード指定)て、ファイルを保存。 Xサーバをリスタートすると、Home / End キーが mp のカーソル移動キーとしてきちんと機能する。今のところこれで特に不具合はない。

※ 英語キーボード環境での確認です。 もしかしたら日本語キーボード(106キー)などでは、違うのかも。
※ この件は、本家版ともどもバグなのでは? と思います。
最後に編集したユーザー cygnus_odile [ 09/12/11(金) 20:08 ], 累計 5 回
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: rxvt 上の テキストエディタ mp にて Home/End キー挙動不審

投稿記事 by シノバー »

かなり調べておられるようなので、もし分かれば教えていただきたいのですが、
  1. この .Xdefaults(or .Xresources)でそれぞれのキーコードが 1 と5にあてがわれていたのは、もともとどのソフトのためのものなんでしょうか。キーコードが 1 と5が都合の良い場合があるのでしょうか?
  2. .Xdefaults(or .Xresources)で何も定義しないと、やはり不都合が起きますか?
The bar master, Shino's Bar
http://shinobar.net/
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

Re: rxvt 上の テキストエディタ mp にて Home/End キー挙動不審

投稿記事 by cygnus_odile »

Q1. Home / End に Ctrl + a / Ctrl + e を割り当てているのは、 おそらく rxvt の(bash の?)コマンドラインで 初心ユーザの利便を考えて、行頭/行末へのカーソル移動キーとして機能させることを意図していたのではないかと思われます。
 なお、上記のように設定を変更しても、rxvt のコマンドラインでの Home/End キーは 行頭//行末へのカーソル移動キーとして機能しています。

Q2. 当該行を # でコメントアウトしてみると、 Home キー / End キーは、各々
 Home キー の返すコード: 27 91 55 126   ( Esc [ 7 ~ )
 End キー の返すコード: 27 91 56 126   ( Esc [ 8 ~ )
となります。 rxvt の コマンドラインでは、ビープ音とともに、 "~" が入力されます。
mp でも不具合ありですね。 Home キー では、 "[ 7 ~" が、 Endキーでは、 "[ 8 ~" が入力されます。
 なお、テキストエディタ e3 や、 Gnu nano ではこのような問題はなく、行頭行末へのカーソル移動キーとして機能します。


※ コンソールアプリの動作のためには、 素のコンソール( bash ? )と同じキーコードを返すように合わせないと、つじつまが合わなくなるのではないでしょうか。
※ なお、キーコードは、 mfiler2 に付属の mkeycode コマンドを使って調べました。
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: rxvt 上の テキストエディタ mp にて Home/End キー挙動不審

投稿記事 by シノバー »

cygnus_odile さんが書きました:※ コンソールアプリの動作のためには、 素のコンソール( bash ? )と同じキーコードを返すように合わせないと、つじつまが合わなくなるのではないでしょうか。
なるほど、そのとおりだと思います。

あと、XorgとXvesaの場合で変わりはあるでしょうか?
The bar master, Shino's Bar
http://shinobar.net/
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

Re: rxvt 上の テキストエディタ mp にて Home/End キー挙動不審

投稿記事 by cygnus_odile »

シノバー さんが書きました: あと、XorgとXvesaの場合で変わりはあるでしょうか?
 Xサーバの種類(Xorg / Xvesa)には影響されないみたいです。(一応、切り替えて確認してみました。)

 それにしても、4.2系の頃にもあるこの問題がずっと見過ごされてきたということは、 CUI なテキストエディタ mp をわざわざ X-window 環境で本格的に使う人はいなかったということですね。

(以下、覚書: なお、国際化端末 mlterm では、 ~/.mlterm/key なるファイルを作成し、以下の2行を記述すれば Home/End キーの返すコードを素のコンソールと同じになるように変更できる。

コード: 全て選択

Home="\e[1~"
End="\e[4~" 
返信する