GNOME OSK extension IdeaList

この記事を作った動機 単に日本語入力環境の改善を考えていたら他にも欲しい機能が出てきたので記録するだけ。 前回の記事 GNOME OSK 日本語入力 一時的な解決策 Idea List コマンドキー Gnome OSK では、ミニマリスティック過ぎて、Ctrl+S でセーブとかキーボードショートカットが困難である。そこで基本的なキー操作はコマンドとして定義し、汎用性のために、Alt と Ctrl キーも追加するみたいな方向性にしたい。 以下は追加したい理想のキーについて列挙したものである。 Ctrl+S -> セーブ キー Ctrl+C -> コピー キー Ctrl+V -> 貼り付け キー Ctrl+Z -> 元に戻す キー Ctrl+Y -> やり直す キー Ctrl Alt キーサイズ調整 Gnome OSK のキーサイズは Windows の OSK に比べて小さいように思う。正直かなり押しづらいので、もうちょいキーサイズを好みに合わせて、大きくしたり小さくしたりできるようにしたいと思った。 サイズ設定のインターフェイスについては、OSK 側には設定用のボタンを追加するか、ブラウザから設定画面にアクセスしてもらうようにするか、OSK に埋め込まれている設定画面があるならそこに項目を追加してみてもいいかなと思ったりしている。 アプリケーションのサイズ、位置の最適化 Windows では、スクリーンキーボードを使うと、自動的にウィンドウが変形されたり、テキストの位置に合わせて移動したりする。しかし GNOME ではそういう機能は基本現状ないっぽくて、なんかターミナル使ったら OSK の下に出力と入力部分が隠れてしまったりする。なのでこれを多少マシにしたい。 カーソルの画面上の位置を認識して、ウィンドウの表示位置を調整する Wayland をネイティブにサポートしているアプリでは、ウィンドウサイズやコンテンツの全体についての可視性についても考慮したい。 フローティングモード キーボードが画面を全体的に覆う感じじゃなくて、Windows みたいに、ウィンドウモードみたいなことができるようにしたい。アプリケーション側の最適化が困難な、XWayland 上で動いているアプリとかでも、OSK をまともに動かせるようにしたい。 OSK 自動隠し機能の無効化 OSK を固定するキーみたいなものを実装し、スクリーンキーボードが自動で隠れると鬱陶しいときに明示的に操作できるようにする。 ...

August 22, 2025

GNOME OSK 日本語入力 一時的な解決策

この記事を作った動機 なんか ChatGPT に色々要望を投げたら、とりあえず動くものが自分で理解してなにか作れる前にできたので、まずはそっちに集中しようかなと思いまとめを作ろうとしてみた。 結局まともに動かせるようにするために、 ChatGPT とのやり取りで出てきた着想を元に、色々調べて自分で組み合わせたり、コードを書いたりすることになった。 前回の記事 GNOME OSK 周りの調査 機能の概要 Gnome 拡張機能として、トップバーに全角半角切り替えキーを表示し、押したら、入力モードがアルファベットを直接入力するモードと、日本語をローマ字で入力するモードに切り替えられるようにする。 主にタッチパネル環境を使って日本語入力するときに、Gnome OSK が US配列しか日本語レイアウトを指定しても表示しないために、補助として作った。 想定された利用する状況としては、以下のようなものがある。 GNOME 47 以降 タッチパネル運用 GNOME OSK を利用する Wayland 環境 ちなみに X11 環境である場合は、onboardなどすでにある OSK とかを使ったほうがいいかもしれない。 リポジトリ 基本的な動作 pyhton のキーイベントを送る常駐サーバがある。 (セキュリティの都合により汎用性はなく “`” の日本語キーボードで言う全角半角キー相当のキーイベントしか送らない) ボタンが押されたら、localhost 経由で Gnome 拡張機能からリクエストを送る python サーバ 必要なパッケージ python python-uinput python-websockets yay -S python python-uinput python-websockets 最新版 最初は、ChatGPT に書いてもらったコードを動かしていたが、次第に HTTP 通信だと限界があることがわかり、 WebSocket へ移行した過程で、結局自分でネットで python のsockets の公式ライブラリなり、色んなサイトを漁ってコードを書くことになった。ChatGPT が書いたコードについては、uinput 以外は、結局いろんなサイトからの試しながら切り貼りといった感じである。 ...

August 21, 2025

GNOME OSK 周りの調査

このページは、まだ未完成です。。。 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の実装をするだけでなく、リソースとして以下のように登録してレイアウトを認識させる必要がありそう。 ...

August 10, 2025