Cygwin X サーバー (XWin) で英語キーボードにされてしまう現象を回避
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
かなり強引な方法だが、これにて一見落着!
Author And Source
この問題について(Cygwin X サーバー (XWin) で英語キーボードにされてしまう現象を回避), 我々は、より多くの情報をここで見つけました https://qiita.com/dolphin6k/items/31855fd8aec8abd629d5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .