Linux Mint Japanフォーラムが数日間アクセスできない状態になっていて、気づいたら復活していました。あんまりフォーラムへの投稿数も多くないので活性度が低いなぁと感じています。Windows10のサポート切れも近づいている現状、Linux Mintを使ってみるユーザーも増えてくるんじゃないかと期待しているので、初心者の駆け込み寺的位置づけのこのフォーラムにはなんとか頑張ってほしいのですが。
そんなフォーラムのなかで、約二年間放置されているお悩み相談を見つけたので、興味を持って調べてみました。
Linux Mint(Ubuntu)で採用されている、Onboard(ソフトウェアキーボード)において、”_”が入力できないという不具合の様です。どうやらタッチ操作が出来るデバイスでLinux Mintを使っているみたいですね。私はそういうデバイスを持ってません。
この不具合症状について調べてみると日本語配列キーボードで起きている不具合の様で、日本語配列の場合はそもそもそのキーが存在しないことになってしまっています。
ところが私が持っている英語配列キーボードのパソコンではこの症状は起きません。キーレイアウトが全然違いますからね。やはり日本語配列のキーボードレイアウトで「見落とされている」キーなんじゃないかなと思えてきました。これって今まで誰も気づかなかった不具合じゃないのかな?
Onboardの不具合状況確認
根本的な問題として、Linuxの日本語配列キーボードのレイアウトで”_”を入力するキーが見落とされています。右側のSHIFTキーの隣にあるハズのキーがありません。気にしてみると右側SHIFTキーがやたら横長になっています。日本語配列では”/”の右隣にもう一個キーがあるんだけどな。

ちなみに英語配列のノートパソコンで使っているdebianにもOnboardをインストールしてありますが、こちらは問題ありません。英語配列キーボードはそもそも”_”のキーの位置が全然違いますからね。
推測するに、日本人のLinux関係プログラマーが少ないので日本語に特化した部分が見落とされているんじゃないかと思います。気づいた人がいても英文で指摘する手間と労力を考えると放置するでしょうから長年修正されないんでしょうね。
Onboardのソフトウェアキーボード
これがOnboardアプリによるソフトウェアキーボードです。やはり右側SHIFTキーの隣のキーが”/”になっていて一つキーが欠落しています。

Onboardの開発は英語でやりとりされていることから日本人開発者は少ないと思われますので、見落とされている状況だと考えます。また欠落しているキーはバックスラッシュなので日本ではあまり使いません。日本だと”¥”円マークなのでここに無くても困らないですし(大抵の日本語キーボードでは右上の方にも”¥”キーはありますからね)。
Onboardソフトウェアキーボードのカスタマイズ
結果をここで記しておきますが、Onboardはソフトウェアキーボードのレイアウトを任意にカスタマイズしたり自作することができます。テーマと言った方が良いかも知れませんがキーボードの見た目をカスタマイズして自作することが可能なのです。かなり面倒くさい作業ですけどね。
良く使用する文字入力を登録しておいてワンタッチで入力させたり、マクロを発動させたりという特殊キーパッドとして使用することもできます。こうして調べてみるとスクリーンキーボードって柔軟性が高いんですよね。
さて、本件については結果的に既存のキーレイアウトをカスタマイズして解決させることができました。

見た目についてはInkscapeで作成されたsvgファイルを編集しました。右側SHIFTキーの幅を縮めて欠落していたキーを追加しました。Inkscapeでちょっと修正するだけなのでそんなに難しい話じゃありません。

SHIFTキーを押した状態にすると、肝心の”_”が現れるようになりました。入力動作もOKです。ただし、結果を先に記しましたが、Inkscapeでsvgファイルを編集しただけではここまで到達できませんのでまだ先の作業があります。後述します。
Onboardのカスタマイズの手法を情報収集
Onboardのカスタマイズ手順は意外なところに記述されていました。英文なのでちょっと時間がかかりましたがチュートリアル的に一つずつ実践してみて書いてあることは理解できました。今回私が調べたことの記録がてら記しておきます。
まず最初にOnboadはこちらで開発されています。Lanchpadはキャノニカル(カノニカル)の開発計サイトなのでUbuntu管轄になります。開発コミュニティの言語はやっぱり英語です。ここが日本人にとっては高いハードルになります。
カスタマイズ手順は公式サイトではみつけられなくて、OnboadアプリのHelpから表示させられました。やっぱり英文です。ただ英文はパターンがあるので単語を調べればなんとか理解出来る文法になっていると思います。私は英会話は無理ですが英文は辞書と時間さえあればなんとか意味は読み取ることが出来る程度です。

青文字のところはハイパーリンクになっているので、クリックするとページ偏移して詳細を読むことができます。
Onboardのカスタマイズ手順

ソフトウェアキーボードのレイアウト作成は、フルスクラッチも可能ですが、いきなりは絶対に無理なので、元としたいレイアウトを選択した状態で「新規」をクリックします。するとカスタムベースとするレイアウトをコピーして新規に作成できる様に、ホームディレクトリのonboardフォルダに必要なファイルをコピーしてくれます。これらのファイルをカスタマイズしていく訳です。
Linux Mintの場合は、「/home/aoipuchu/.local/share/onboard/layouts」というフォルダ内に、3つのファイルがコピーされました。aoipuchuのホームディレクトリ内にコピーされたファイルなので、これらは自由にカスタマイズして構いません。訳がわからなくなったら削除しちゃえば元通りになります。
- Custom FullKey.onboard
- Custom FullKey-Alpha.svg
- Custom FullKey-Numpad.svg
とは言うものの、何をどうしたら良いのかは分からないと思います。やはりマニュアルは重要で先述のHelpドキュメント(英文)を読みながら進めます。
.svgファイルをInkscapeで修正
まずは、「Custom FullKey-Alpha.svg」をInkscapeで開いて様子を見てみます。ヘルプドキュメントでは各キーに該当する矩形図形のプロパティにIDが振られているのをInkscapeで開いて確認しろと書いています。実際にやってみると確かに各図形パーツにIDが割り振られています。キー一つ一つにIDが振られている訳です。概ね理解できました。

先述のとおり失敗を恐れる必要は無いので、欠落しているキーを1つInkscapeで作成しました。とは言っても右SHIFTの幅を縮めて、横のキーをコピーして位置合わせした後、IDを存在しないものにしただけです。今回は増やしたキーとなる図形には「AB11」というIDを割り当てました。
.onboardファイルをテキストエディタで修正
そして、.onboardファイルをテキストエディタで開いて下記を追記しました。
<key id="AB11" group="alphanumeric"/>
Code language: HTML, XML (xml)
試しにこれで動作を確認すると、キートップに何もキーが割り当てられてないのっぺらぼうなキーが一つ追加されました。ここで手詰まりとなりかけたのですが、

You might have a look at the key_defs.xml file shipping with Onboard for more information.
という行を見つけました。どうやら「key_defs.xml」ファイルがキーマッピングの鍵になっていそうです。このファイルは「/usr/share/onboard/layouts/」にあります。
ここはroot権限が必要なのでカスタマイズの範疇を超えている様です。思うにバグというか漏れなので、根本的な対処としては開発元に報告して「key_defs.xml」ファイルを更新してもらう必要がありそうです。
とりあえずroot権限があれば編集は出来るので実験を続けることにします。
ソフトキーに足りないキーのキーコードを調べる
Linuxのキーコードを調べるには、xevコマンドを使用します。LMDE6には標準で入っていました。マウスを動かしたりするとズラズラ表示されますが気にせず、追加したいキーを一回タイプするとイベントが表示されますので操作の手を止めます。今回は”_”を追加したいので”\”キーのキーコードを調べました。

「keycode 97」が「backslash」キーだと特定できましたのでどうやら成功しました。終わったらCTRL+Cでxevを終了させます。
key_defs.xmlファイルの修正
root権限で「/usr/share/onboard/layouts/key_defs.xml」ファイルを編集します。Linux Mintはnemoが便利なのでフォルダーを開く際にマウス右クリックからroot権限で開けるのでコマンドレスでできます。Linux Mintでなければroot権限でテキストエディット出来るようにコマンド操作する必要があると思います。
ID:AB11にkeycode=97を割り当てる意味で下記の様に追記しました。
<key_template id='AB11' keycode='97'/>
Code language: HTML, XML (xml)
これでOnboardを立ち上げ直して、My layoutsから自分でカスタムしたものを選びました。

これで無事にキートップに”¥”が表示される様になりました。もちろんSHIFTを押すと”_”に変わります。いい感じです。
実際にテキストエディタを起動してソフトウェアキーボードから入力すると、期待通りバックスラッシュ”\”とアンダースコア”_”が入力できることを確認しました。どうやら成功ですね上手く動作しました。
開発元に報告(修正依頼)するには英作文が必要だ
今回、ユーザーカスタマイズの領域を超えてroot権限が必要なファイルを修正する必要がありました。これは開発者達の想定外だと思います。つまりOnboardの利用者が広く恩恵を受けるためには、配布元(開発元)で「key_defs.xml」を修正してもらう必要があると思うのです。開発元はUbuntu系なのでUbuntuでも同じ状況か確認する必要もありますから手間ですね。
また、Linuxのシステム設定にあるキーボードレイアウトの配列図も間違えているので、差し替えてもらうことが望ましいと思います。でなければずっとこの日本語キーボードの配列図は間違えたままになり続けることになります。「かな」キーで言うところの「ろ」のキーが存在しない事になっている訳ですから。
さてどうやって報告(申告)するか考えてます。英作文はあんまり得意じゃないんですよね。誰か英語に強い人が代わりに報告してくれないですかねぇ。若い頃はこういう所に注力する余力もあったのですが、歳食ってからはしんどいが先に立ちます。誰か開発元に英語で報告して修正して貰ってくれませんか?
コメント