2019-07-10

KeePassXCの文字化け(「@」→「"」)が復旧

dynabook SS SX/15AにNetBSDを入れ、MATEデスクトップ環境を採用し、利用環境を整えています。ただ残念ながら所々に怪しい動作が残っています。Firefox(pkgsrcから入れるとNightlyになりますが)を入れ、パスワード管理ソフトとしてKeePassXCを入れました。

パスワード管理ソフトとして、Microsoft WindowsではIDMを使っています。NetBSDでは、過去にはKeePassを使おうとしていましたが、よく落ちて不安定なので、あまり利用していませんでした。そこでKeePassを止めてKeePassXCを使ってみることにしました。

KeePassXCを使うのが初めてなので、IDMで利用しているエントリを試しに入れてみて使い勝手を確認してみようとしました。ユーザーIDはメールアドレスなので「@」が含まれています。ところが入力時に「@」が「"」に化けてしまいます。このままでは利用できないので、調査しました。

全ての文字が化けている訳ではないようです(確かめた訳ではありませんが)。「@」が「"」に化けるというのは、ASCII配列キーボードとJIS配列キーボードの相違を思い起こさせます。

問題の在所を絞り込むために、幾つか条件を変えて挙動を確認しました。
  1. rootアカウントで動作を確認しました。rootアカウントではMATEデスクトップ環境を使用しておらず、昔懐かしtwmのシンプルな(質素な?)画面構成です。ここでは問題となっている文字化けが起きませんでした。と言う事は、MATEデスクトップ環境の何かに原因がありそうです。
  2. KeePassXCを起動する前に、環境変数LANGCにして起動してみました。しかし問題となる現象は変わりませんでした。
  3. xevを使ってKeePassXCがブラウザに送っているイベントを調べてみました。やはり「"」を送っているようです。
    KeyPress event, serial 39, synthetic NO, window 0x3200001,
        root 0x7e, subw 0x0, time 1699682, (657,286), root:(811,465),
        state 0x2001, keycode 11 (keysym 0x22, quotedbl), same_screen YES,
        XKeysymToKeycode returns keycode: 48
        XLookupString gives 1 bytes: (22) """
        XmbLookupString gives 1 bytes: (22) """
        XFilterEvent returns: False

MATEデスクトップ環境の設定の中に「キーボード」があるので、調べてみました。すると何故か以下のようなエントリが入っており、しかも「US English」が最上位になっています。
  1. US English
  2. Japanese
  3. Japanese (kana)
  4. Japanese

不思議なのは、キーボードの指定の最上位に「US English」があっても、通常のキー入力には何の問題もないのです。dynabook SS SX/15Aのキーボードは(ノートPCとしての)JIS配列です。これまで使っていて、JIS配列通りにキー入力が出来ています。しかし設定が怪しいので、「デフォルト」ボタンを押したら、「Japanese」のエントリを残して、他の3つのエントリが消えました。

この状態でKeePassXCの動作を確認したところ、問題となっていた文字化けは解消しました。キーボードの指定が変だったのが原因だったようです。

これでKeePassXCは正常に使える状態になったので、利用環境を整える調査を続行しようと思います。

0 件のコメント:

コメントを投稿