読者です 読者をやめる 読者になる 読者になる

heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

IMEオン忘れ時打ち直しツール「likana」のリリース

C言語

目的

IMEオンを忘れてタイプしてしまった場合の、「入力した文字を消して "半角/全角"キーを押し同じ文字列を入力する」という手間を省きたい。
Windowsではその際に"半角/全角"キーを2連打(デフォルト3連打)するだけで上記を行なう「りかなー」*1 という
フリーソフトが存在する。
そのため「りかなー」とほぼ同仕様の Linux 版のソフトを作成した。

※「りかなー」の作者でありますMIZUSHIKI様とはBBSでやりとりを行い、本件について命名・仕様・公開についてご助言をいただきました。本当にありがとうございます。

動作例

  1. IMEオフ時に、キーボード入力「utinaositesuto」
  2. "半角/全角キー" を2連打
  3. IMEオンになり、「うちなおしてすと」で変換候補が出る

likana の動作例

プログラム

github

ソースコード、使い方などは、github にアップしました。

GitHub - maijou2501/likana: rikana(http://suwa.6.ql.bz/rikana.html) for Linux.

Lanchpad

パッケージ管理で扱える形として、lanchpad にもアップしました。( ubuntu 12.04 の amd64, i386 ビルド版があります。)
likana : kyohei ito

コマンドラインからのインストールの場合は下記を実行してください。

sudo add-apt-repository ppa:maijou2501/likana
sudo apt-get update
sudo apt-get install likana

ツールの各種設定は、GitHub - maijou2501/likana: rikana(http://suwa.6.ql.bz/rikana.html) for Linux.を参照して行なってください。

プログラムの仕様

  • 設定された1つのキーボードの入力をキャプチャします。(マウスも、接続された1つのマウスのみイベントをキャプチャできます)
  • "アルファベット" or "-" が入力された場合にキーロギングを行います。
  • "アルファベット" or "-" 入力以外と、左クリックが行われた場合は、ロギングしたキー内容をクリアします。
  • "半角/全角"キーが2回押された場合には、 "半角/全角"キー入力をソフトウェアで行いIMEオンにし、ロギングしたキー内容を再生します。
  • キーロギングできる文字数は60文字で、それを超えるとロギングしたキー内容をクリアします。

現状の課題

今回利用している Linux の input subsystem の仕様上、複数キーボードの入力をまとめて取得できませんでした。
次期バージョンでは現在のマウスイベントのキャプチャと同じように別スレッドを作り、オプションで2台目以上のキーボードの入力をキャプチャできるようにする予定です。

また、下記一部入力欄ではキー再生がうまく行われないことを確認しています。

  • chrome のアドレス入力欄
  • chrome のテキスト入力フォーム

今後調査を行なってみますが、入力測度の問題かとも考えております。
※ (2015/03/03追記) version 1.2 で修正しました。
libreoffice, gedit, コンソール入力などではうまく再生されることを確認済みです。)

所感

仕様を決めてから、プログラム自体はC言語300行程ですぐに形になったのですが、それを deb パッケージで公開するまでが
初めてだったので時間がかかりました。
プログラムの書き方であったり、ドキュメント・debパッケージについて勘違いした記載になっていたりした場合は
ご一報いただけましたら幸いです。(github, lanchpad 上でも結構です。)

以上。