シリアル入力デバイスからカーネル入力へ

提供: ArchWiki
2025年2月15日 (土) 04:48時点におけるKgx (トーク | 投稿記録)による版 (→‎インストール: 同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

USB はマウスなどの入力デバイスを接続する最も一般的な方法ですが、古いマウスなどのシリアル入力デバイスや、3Dconnexion Spaceball などのより特殊な入力デバイスは、コンピューターに内蔵されたシリアルポート、または USB - シリアル変換ドングルを介して、依然として非常に実用的に使用できます。

これらのシリアル接続された入力デバイスをサポートする従来の方法は、入力デバイスが接続されているシリアルポートやデバイスが使用するプロトコルなどの詳細を各アプリケーションで構成することでした。シリアル入力デバイスで使用する最も一般的なアプリケーションは X.org/XFree86 だったため、これは大きな問題ではありませんでした。ただし、シリアル入力デバイスと直接通信する必要があるさまざまなアプリケーションを使用する場合、各アプリケーションがサポートするシリアル入力デバイスまたはプロトコルの制限に遭遇する可能性があります。一部のアプリケーションは、使用したかったシリアル入力デバイスをサポートしていなかった可能性があります。

より良いアプローチは、Linux カーネル入力サブシステムにシリアル接続された入力デバイスを管理させ、USB および PS/2 入力デバイス信号が /dev/input/device ファイルを介してアプリケーションに提示されるのと同じ方法で、デバイスが生成する入力信号を提示させることです。

このガイドでは、シリアル入力デバイスを Linux カーネル入力サブシステムに "接続" するために必要な簡単な手順について説明します。

インストール

linuxconsole パッケージを インストール します。inputattach ユーティリティは、どのシリアルポートに入力デバイスが接続されているか、および指定されたシリアルポートにどの種類のデバイスが接続されているかをカーネル入力サブシステムに通知します。 設定

インストールしたら、inputattach --help を表示して、Linux カーネル入力サブシステムがサポートするシリアル入力デバイスの膨大なリストを確認します。

たとえば、Logitech TrackMan Marble シリアルマウスを使用している場合は、--mouseman/-mman を指定します。

デフォルトの設定ファイルは、Microsoft シリアルマウスを想定しており、マウスがコンピューターの最初のシリアルポートに接続されていることを想定しています。'IAPARAMS' 変数は、inputattach 引数の配列です。inputattach インスタンスは、各要素に対して開始されます。引数の詳細については、inputattach --help を参照してください。

Logitech TrackMan Marble シリアルマウスに合わせて変更された構成例を次に示します。

/etc/conf.d/inputattach
#
# Configuration for inputattach
#
# IAPARAMS is an array of inputattach arguments, see 'inputattach --help'.
# An inputattach instance will be started for each element.

IAPARAMS=(
  "--mouseman /dev/ttyS0"
)

使い方

inputattach.service起動 します。

もしこれを Xorg 内で実行し、InputDevice マウスセクションで入力デバイスファイルとして /dev/input/mice を指定している場合、新しい入力デバイスは、USB マウスなどの他の入力デバイスに加えて、Xorg のマウスポインターの動きを制御するもう一つの入力ソースとなる可能性があります。

処理が成功したことを確認するもう 1 つの方法は、dmesg ユーティリティを使用してシステムのカーネルログを確認することです。Logitech TrackMan Marble シリアルマウスの場合、カーネル出力は次のようになります:

serio: Serial port ttyS0
input: Logitech M+ Mouse as /class/input/input6

シリアル入力デバイスを起動するたびに機能させるには、inputattach.service有効化 します。