likana
rikana(http://suwa.6.ql.bz/rikana.html)forlinux
likana.c

rikana(http://suwa.6.ql.bz/rikana.html) for Linux. [詳細]

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>

データ構造

struct  THREAD_ARG
 スレッドパラメータ定義 [詳細]

マクロ定義

#define VERSION   "1.3"
 バージョン情報
#define PUSH   1
 キーボード押下判定の定義
#define RELEASE   0
 キーボード開放判定の定義
#define DETECT_KEY_CODE   0
 キーボード操作判定のための定義
#define DETECT_KEY_VALUE   0
 マウス操作判定のための定義
#define INPUT_NUM   60
 キーロギングの上限数
#define HANKAKU_NUM   2
 "半角/全角"キー押下回数のしきい値
#define INPUT_EVENTS   64
 キーイベント操作の上限数
#define SLEEP_TIME   0
 0 sec
#define SLEEP_TIME_NANO   20000000
 20 msec

関数

void mysleep ()
 20 msec スリープする.
void write_key_event (int code, int value, int fd)
 キーボード入力をエミュレートする.
void * thread_mouse (void *arg)
 マウスイベントを待ち受ける.
void usage ()
 使い方の説明.
void version ()
 バージョン情報の出力.
int check_stat (struct stat *st)
 指定されたファイルがキャラクタデバイスか判定する.
int main (int argc, char *argv[])
 main関数.

変数

int input [INPUT_NUM] = {0}
 ロギングしたキーの値を格納する配列
short count = 0
 ロギングカウント
short count_h = 0
 "半角/全角"キーカウント

説明

rikana(http://suwa.6.ql.bz/rikana.html) for Linux.

MIZUSHIKI 様が作成された IMEオン忘れ時打ち直しツール「りかなー」とほぼ同仕様の Linux 版りかなー. IME(インプットメソッドエンジン)オンを忘れてタイプしてしまったらすかさず「半角/全角」キーを2連打. 直前の文字を打ち直しします.

作者:
maijou2501
日付:
2016/01/01
バージョン:
1.3

関数

int check_stat ( struct stat *  st)

指定されたファイルがキャラクタデバイスか判定する.

<sys/types.h> , <sys/stat.h> の include が必要.

引数:
[in]*ststat構造体のアドレス
戻り値:
0チェックしたファイルがキャラクタデバイスだった
1チェックしたファイルがキャラクタデバイスではなかった
int main ( int  argc,
char *  argv[] 
)

main関数.

引数無しでは usage(). getopt_long() で使われなかった引数があった場合も usage().

引数:
[in]argcコマンドラインパラメータ数
[in]argvコマンドラインパラメータ
戻り値:
0正常終了
0以外異常終了
注意:
likana 起動中にキーボードが切り離された際のハンドリングができていない.
void mysleep ( )

20 msec スリープする.

sleep関数では1秒からの指定なので、nanosleep関数を用いて 20 msec スリープさせる.

引数:
なし
戻り値:
なし
void* thread_mouse ( void *  arg)

マウスイベントを待ち受ける.

スレッドを用いてキーボードイベントとは別に,マウスイベントを待ち受ける. pthread スレッドに値を渡すために,構造体を使っている.

引数:
[in]*argpthread_createの第4引数のポインタ
戻り値:
なし
注意:
likana 起動中にマウスが切り離された際のハンドリングができていない.
void usage ( )

使い方の説明.

詳細説明は割愛します.

引数:
なし
戻り値:
なし
void version ( )

バージョン情報の出力.

詳細説明は割愛します.

引数:
なし
戻り値:
なし
void write_key_event ( int  code,
int  value,
int  fd 
)

キーボード入力をエミュレートする.

Linux Input Subsystem を用いている.

引数:
[in]codeロギングしたキーコード
[in]value押下・開放の指定
[out]fd出力先の指定
戻り値:
なし
 全て データ構造 ファイル 関数 変数 マクロ定義