LoginSignup
3
2

More than 3 years have passed since last update.

CでRubyの拡張ライブラリを作った

Last updated at Posted at 2019-03-01

はじめに

この記事を書いた人間はプログラミング歴1年以下の超がつくレベルの初心者です。
ところどころ分かりにくいところや間違いがあると思いますのでお気づきになった際にはコメントを残してくださると幸いです。

作ったもの

Rubyからマウスを操作するための拡張ライブラリ

使った言語

  • C(ライブラリ本体を記述)
  • Ruby(モジュール)

    概要

    ソースコードはこちら

  • マウスカーソルの座標を取得したり、カーソルを動かしたりできます。

  • 左クリックと右クリックを出力することも可能です。

  • Cのwindows.hをインクルードしているのでWindows専用です。(Windows以外の環境が手元にないため未検証ですが恐らくそうです)

  • 32bitの環境でコンパイルしているので64bitのマシンでは動作しません。(検証済み)

  • 環境が整ったら64bit版も上げようと思います。

  • Rubyが動作する環境でご利用下さい

使い方

require 'mouse'
または
(このライブラリを利用するスクリプトが同じディレクトリにある場合)
require_relative 'mouse'

定義されているメソッドと定数

  • getCursorPosX()
    • カーソルのX座標を取得します。
  • getCursorPosY()
    • カーソルのY座標を取得します。
  • setCursorPos(x,y)
    • カーソルの位置を移動します。第一引数が移動先のX座標、第二引数はY座標を指定してください。
  • sendMouseEvent(key)
    • マウスの左右ボタンの仮想キーコードを出力するメソッドです。
    • 引数には整数または以下の定数を渡してください。
      • M_L_DOWN (= 2) #マウス左ボタンが押された状態
      • M_L_RELEASE (= 4) #マウス左ボタンが離された状態
      • M_R_DOWN (= 8) #マウス右ボタンが押された状態
      • M_R_RELEASE (= 16) #マウス右ボタンが離された状態
  • getKeyState(key)
    • マウスまたはキーボードの特定のキーが押されているかを調べます。
      • このメソッドは現在開発中のキーボードを操作するためのライブラリでも実装する予定です。
    • 指定されたキーが押されていないときは0,押されているときはそれ以外の整数を返します。
    • 引数には整数または前項の定数を渡してください。
  • is_cursor_moving?(arg = 0.001)
    • 引数に指定された間隔でカーソルの位置を比較します。単位は秒です。
    • 戻り値は、移動していればtrue,していなければfalseです。
    • そのため、argの値が大きいとカーソルが移動しているか正しく判定できない場合があります。
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2