Linux Mintのソフトウェアキーボード(onboard)で”_”が入力できない不具合〜キーレイアウトをInkscapeでカスタマイズして対処した

Linux Mintのロゴ画像 Linux

ソフトウェアキーボードに不具合があるらしい

Linux Mint Japanフォーラムが数日間アクセスできない状態になっていて、気づいたら復活していました。あんまりフォーラムへの投稿数も多くないので活性度が低いなぁと感じています。Windows10のサポート切れも近づいている現状、Linux Mintを使ってみるユーザーも増えてくるんじゃないかと期待しているので、初心者の駆け込み寺的位置づけのこのフォーラムにはなんとか頑張ってほしいのですが。

そんなフォーラムのなかで、約二年間放置されているお悩み相談を見つけたので、興味を持って調べてみました。

Linux Mint(Ubuntu)で採用されている、Onboard(ソフトウェアキーボード)において、”_”が入力できないという不具合の様です。どうやらタッチ操作が出来るデバイスでLinux Mintを使っているみたいですね。私はそういうタッチデバイスのパソコンを持ってません。

この不具合症状について調べてみると日本語配列キーボードで起きている不具合の様で、日本語配列の場合はそもそもそのキーが存在しないことにされてしまっています。

一方、私が持っている英語配列キーボードのパソコンではこの症状は起きません。キーレイアウトが全然違いますからね。やはり日本語配列のキーボードレイアウトで「見落とされている」キーなんじゃないかなと思えてきました。これって今まで誰も気づかなかった不具合じゃないのかな?

Onboardの不具合状況を確認

根本的な問題として、Linuxの日本語配列キーボードのレイアウトで”_”を入力するキーが見落とされています。右側のSHIFTキーの隣にあるハズのキーがありません。気にしてみると右側SHIFTキーがやたら横長になっています。日本語配列では”/”の右隣にもう一個キーがあるんだけどな。

ちなみに英語配列のノートパソコンで使っているdebianにもOnboardをインストールしてありますが、こちらは問題ありません。英語配列キーボードはそもそも”_”のキーの位置が全然違いますからね。

推測するに、日本人のLinux関係プログラマーが少ないので日本語に特化した部分が見落とされているんじゃないかと思います。気づいた人がいても英文で指摘する手間と労力を考えると放置するでしょうから長年修正されないんでしょうね。

Onboardのソフトウェアキーボード

これがOnboardアプリによるソフトウェアキーボードです。やはり右側SHIFTキーの隣のキーが”/”になっていてキー1つが欠落しています。

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つのファイルがコピーされました。

onboardのFull-Keyboardを元にMyLayoutを新規作成すると必要なファイルがローカルDIRにコピーされる

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権限でテキストエディット出来るようにコマンド操作する必要があると思います。

上記は好ましくないカスタマイズ方法のため、消し線を入れました。以下のとおり加筆修正します。(2025/12/31)

「/usr/share/onboard/layouts/key_defs.xml」ファイルをユーザーフォルダーである「/home/aoipuchu/.local/share/onboard/layouts/」にコピーします。

/usr/share配下のファイルはroot権限が無いと編集が出来ないのは消し線の記述の通りです。しかしkey_defs.xmlファイルをユーザーフォルダーにコピーすることは容易です。そそしてユーザーフォルダーにコピーしたファイルはroot権限が無くても編集が可能です。

これで4つのファイルが集まったことになります。最後の仕上げを行います。

  • Custom-FullKey.onboard
  • Custom-FullKey-Alpha.svg
  • Custom-FullKey-Numpad.svg
  • key_defs.xml

4つ目の「key_defs.xml」ファイルをテキストエディタで開き、下記の1行を書き加える編集をします。追記出来たら上書き保存してテキストエディタを閉じます。

<key_template id='AB11' keycode='97'/>Code language: HTML, XML (xml)

ID:AB11にkeycode=97を割り当てる意味で上記の様に追記しました。

これでOnboardを立ち上げ直して、My layoutsから自分でカスタムしたものを選びました。

これで無事にキートップに”¥”が表示される様になりました。もちろんSHIFTを押すと”_”に変わります。いい感じです。

実際にテキストエディタを起動してソフトウェアキーボードから入力すると、期待通りバックスラッシュ”\”とアンダースコア”_”が入力できることを確認しました。どうやら成功ですね上手く動作しました。

2025/12/31加筆修正:key_defs.xmlの編集について

当ページのコメント欄にtakuohm83さんからフィードバックをいただきました。当ページの情報を足がかりにソフトウェアキーボードのカスタマイズは行えた様ですが、「key_defs.xml」ファイルをユーザーフォルダにコピーしたら優先されるというフィードバックを頂いた次第です。

~/.local/share/onboard/layoutsに入れるとそちらを読み込む様なので/usr/share/onboard/layouts/の物をhome側にコピーして…

root権限が必要な領域のファイルを直接編集することはなるだけ避けた方が良いと私も感じているので、公式がどの様な仕組みにしているか確認をとることにしました。

onboardの公式情報よりユーザーフォルダのPATHを確認

Onboardの公式プロジェクトページやドキュメントを参照しなおしたところ、XDG標準に従ってユーザーデータを処理することが推奨されることが記されています。そしてXDGベースディレクトリ仕様には下記の様に記述されていました。

3 Environment variables
$XDG_DATA_HOME defines the base directory relative to which user-specific data files should be stored. If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used.

https://specifications.freedesktop.org/basedir/latest/#variables

また、onboardで使用される変数を定義しているConfig.pyを参照すると、

USER_DIR = "onboard"Code language: JavaScript (javascript)

となっており、明らかにユーザーディレクトリを意識した定義方法となっています。

このことから、onboardのユーザーディレクトリは連結した「~/.local/share/onboard」であることが分かりました。(/home/aoipuchu/.local/share/onboard)

ユーザーディレクトリが準備されているのであれば、root権限が必要な領域のファイルは極力触れるべきではなく、優先順位が高いユーザーフォルダーにkey_defs.xmlファイルをコピーしてそれをカスタマイズすれば良いということが分かります。

公式情報等を確認した結果、takuohm83さんからフィードバック頂いたとおりユーザーフォルダに保存してカスタマイズする方法が推奨されており、より正確な情報だと判断したので当ページの内容を修正しました。情報提供して下さりありがとうございました。

開発元に報告(修正依頼)するには英作文が必要だ

今回、ユーザーカスタマイズの領域を超えてroot権限が必要なファイルを修正する必要がありました。これは開発者達の想定外だと思います。

Onboardの利用者が広く恩恵を受けるためには、配布元(開発元)で「key_defs.xml」を修正してもらう必要があると思います。開発元はUbuntu系なのでUbuntuでも同じ状況か確認する必要もありますから手間ですね。

また、Linuxのシステム設定にある日本語キーボードレイアウトの配列図も正しくないので、正しい配列図に差し替えてもらうことが望ましいと思います。でなければずっとこの日本語キーボードの配列図は間違えたままになり続けることになります。「かな」キーで言うところの「ろ」のキーが存在しない事になっている訳ですから。

さてどうやって報告(申告)するか考えてます。英作文はあんまり得意じゃないんですよね。誰か英語に強い人が代わりに報告してくれないですかねぇ。若い頃はこういう所に注力する余力もあったのですが、歳食ってからはしんどいが先に立ちます。誰か開発元に英語で報告して修正して貰ってくれませんか?

コメント

  1. 探さないで より:

    onboard (launchpad)のquestionとかaskとかneed attentionとかにsome characters missing in japanese jis layout(including underscore and bar) と単語だけ書き込んで見ては?私はubuntu アカウント作らないので書き込めなかった。とりあえず問題の周知はできます。ちなみに私はbarが入力できず、シェルスクリプトではxvkbdに切り替えます。キーボード二台でスクリーン専有とか超無駄の極み。

    • ささぷりん より:

      コメントありがとうございます。
      サンプルの英文例もありがとうございます。

      翻訳ツールもありますし、ちょっとした英作文なら自分でも出来るのですが、ディスカッションが必要になると思うので、こちらからも状況を説明する材料を提示する必要があると思うんですね。そうなるとちょっと負担だなと感じているのでlaunchpadへの報告は二の足を踏んでいます。

      誰かが問題点として指摘しないと改善されないとは思うのですが、私がそれをする必要は無いのかな?とも思ったりします。この問題に遭遇した人がこのブログ記事を読んで状況を把握して、より積極的にlaunchpadへフィードバックしてくれたらそれで良いかな?と今は思ってます。私自身はUbuntuユーザーではないのでアカウントを持ってませんし、このためだけに作るのもどうかなぁと思ったり。

  2. takuohm83 より:

    Surface GoにUbuntu24.04を入れてオンスクリーンキーボードが無いと不便。という訳で、同じく困っておりました。
    まだ試していませんが、ありがとうございます。

    • ささぷりん より:

      takuohm83さん
      コメントありがとうごさいます。
      私はタッチデバイスのPCを所有していないのでonboard (launchpad)の必要性は感じていないのですが、タッチパネル対応のデバイスだとソフトウェアキーボードは重要ですね。まずは「Full Keyboard」をベースに新規でカスタマイズ版を作ってみて下さい(キーを1個追加する)。その手順は記したつもりです。

      うまく出来たならカスタマイズの内容は理解できていると思いますので、その後は発展的にオリジナルのキーだけ抽出したカスタマイズキーパッドを作成するなどして、操作性を上げることも可能だと思います。この辺りはやる気次第で自由自在にカスタマイズできます(OSSの良いところです)。

      このカスタマイズはまだ覚えているので、もしうまく出来ない様でしたら、またコメントいただければ分かる範囲でお答えします。お時間を見つけて取り組んでみて下さい。

      そしてできればUbuntuユーザーとして、Onboardの開発(Launchpad:https://launchpad.net/onboard)に問題指摘するなどして修正を実現していただければ、より多くのユーザーが助かるでしょうし、Linuxディストリビューションの多くが恩恵を受けられると思いますので、是非取り組んでみて下さい。

    • takuohm83 より:

      上手くいきました、key_defs.xmlは
      ~/.local/share/onboard/layoutsに入れるとそちらを読み込む様なので/usr/share/onboard/layouts/の物をhome側にコピーして…
      “AB11″を同様に97、
      “AE13″を132、
      “NFER”を102、
      “HIRA”を101、
      “XFER”を100、
      として追加しました。

      • ささぷりん より:

        takuohm83さん
        私の記録が役立ったみたいで良かったです。
        結構カスタマイズが必要だったみたいですね。お疲れ様でした。

        >> ~/.local/share/onboard/layoutsに入れるとそちらを読み込む様なので/usr/share/onboard/layouts/の物をhome側にコピーして…

        フィードバックありがとうございます。
        この情報は見つけられませんでしたので貴重な情報です。
        ローカルユーザー権限でカスタマイズ出来るのは良いですね。Root権限でkey_defs.xmlを開いて編集するより安全なので最善の方法だと思います。

        頂いた情報を元にもう一度ヘルプを読んで調べ直して検証し、次に読んで取り組むかも知れない人のために記事を修正しておくことにしますね。ありがとうございます。

Comment spam is annoying.

There has been an increase in comment spam, but we decline it. It’s pointless because we use Akismet to block spam comments. Spam comments will not be posted.

コメントスパムが増えていますがお断りします。akismetでスパムコメントを弾いているので無意味です。スパムコメントは掲載されません。

ブロックしたスパム

DMM広告

タイトルとURLをコピーしました