このページは、まだ未完成です。。。

nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日)

この記事を作った動機

 GNOME には、スクリーンキーボードがデフォルトで実装されているが、日本語レイアウトが存在しないようで、全角半角切り替えキーさえ出てこないという非常に不便な挙動をしているということがあった。そこで、自分で何かしらしてどうにか全角半角キーを追加したいと思った次第。

考えていること

  • 拡張機能として実装する
  • Gnome-shell 自体を変更してしまう
  • OSK自体にボタンを埋め込まずに、Fcitx5のIME の横にパネルメニューボタンとして、切り替えボタンを表示する

わかったこと

data/osk-layouts/配下に日本語レイアウトが存在しない

 us.json としてアメリカ配列などについては存在するが、jp.json や ja.json みたいなのは存在していない。

ja.json を us.json などからコピーして作るとき

 全角半角切り替えキーは、action として記述できる模様。ただ、GJS側でどうやってアクションを処理すればいいのか不明。

  • us.json の action 例
...
          {
            "action": "emoji",
            "iconName": "osk-emoji-picker-symbolic"
          },
          {
            "action": "languageMenu",
            "iconName": "osk-layout-symbolic"
          },
          {
            "action": "hide",
            "iconName": "osk-hide-symbolic"
          }
...
  • jp.json のイメージ
...
          {
            "action": "zenkakuHankaku",
            "iconName": "osk-zenkakuHankaku-symbolic"
          },
...

GJS のアクションの実装方法が不明

 調査が必要なことがわかる。fcitx5 を私は使っているがそれについても GJS からどうできるのか調べる必要がありそうである。DBusあたりが重要なのかな?とはなんとなく思っているところである。

data/gnome-shell-osk-layouts.gresource.xml のイメージ

 ただキーボードレイアウトとactionの実装をするだけでなく、リソースとして以下のように登録してレイアウトを認識させる必要がありそう。

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/org/gnome/shell/osk-layouts">
    <file>am.json</file>
    ...
    <file>jp.json</file>
    ...
    <file>emoji.json</file>
  </gresource>
</gresources>

拡張機能からどうやってリソースファイルとかを弄れるのか不明

 もしかしたら拡張機能側からは、data/gnome-shell-osk-layouts.gresource.xml とか、data/osk-layouts/ 配下をいじって動作を変更したりは厳しいのかもしれない。その時は、OSKに言語関係なく強引に、全角半角キーを表示する実装を割り込ませるようなことになるのかなと想像したりはしている。

OSK のイベントの取扱が不明

 単にこれは私が、結局のところGJSとかで拡張機能を作ったことがないことに由来しており、調査が必要である。たとえば、以下のような場合に何かしら処理をするコードが必要であると思われる。

  • キーが押されている
  • キーが離された
  • OSKが出現した
  • OSKが消失した

調査

action の実装方法

  • gnome-shell/js/ui/keyborad.js 内を調べる

関連事項

拡張機能からキーを OSK に追加できるか

  • gnome-shell/js/ui/keyborad.js を インポートして何ができるか調査

関連事項

GJS におけるイベントの扱いについて

  • マウスボタンの右が押されたなど、細かいイベントの見方についてまとめる。
  • Gio、St、Clutter、GObject などについてまとめる

GJS における HTTP や WebSocket などのネットワーク通信について

  • Libsoup について、Gnome-Shell の example コードなどを元に使い方についてまとめる。
  • SSL/TLS 化による暗号化された通信の実装と、証明書の関係について調べる。

DBus と fcitx5、Gnome OSK

  • DBus のイベントを調べる
  • DBus のイベントの扱い方をGJSについて注目して調べる -> D-Spy を使った調査結果をまとめる。

続き

参考にしたサイトとか