LoginSignup
0
0

More than 3 years have passed since last update.

Cygwin X サーバー (XWin) で英語キーボードにされてしまう現象を回避

Last updated at Posted at 2020-05-18

CygwinのXサーバーを -rootless で起動すると、勝手に英語キーボードにされてしまう(良く知られた?)現象に遭遇。以下の手順で解消した。

日本語配列キーボードの設定

ホームディレクトリに、設定ファイル .XWinrc を作成し、以下を記述。

XKBModel jp106
XKBLayout jp

これで、Xクライアントでキーボードを日本語配列で使用できるようになるが、タスクトレイの言語バーに不要な「ENG 英語(米国) / US キーボード」という項目が追加されキーボード設定からも削除できなくなる、という症状が残る。
キーボード設定で「いったん英語キーボードを追加してから改めて削除」することで一応項目を削除できるが、Xを起動するたびに「ENG...」の項目が復活するので、これは無意味。

解決策

「Cygwin/Xがキーボード配列を英語(ENG)に設定する現象」によると、日本語キーボードの場合のみ強制的に英語キーボードを読み込むという処理がされていることが原因のよう。
コードを眺めると、日本語キーボードかどうかは GetKeyboardType() で判別している。そこで、さらにコレをキーワードに検索したところ、別の問題への対処ではあるが、バイナリファイルのシンボルを強制的に書き換えてチェックを無効にするという荒技を発見。これに倣って、XWin.exe の該当シンボルを書き換える。
バイナリエディタは面倒なのでsedでちゃちゃっと。

# cd /usr/bin
# cp XWin.exe XWin.exe.bak
# sed 's/GetKeyboardType/IsWindowEnabled/' < XWin.exe.bak > XWin.exe

かなり強引な方法だが、これにて一見落着!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0