メインコンテンツまでスキップ

入力デバイス

COMPOSITOR.input はキーボード・ポインター(マウス)・タッチパッドを設定します。 出力と同様に、入力デバイスのセットが変化するたびに呼ばれるファクトリーを登録し、 渡されたドラフトを変更します。

COMPOSITOR.input.configure((input, context) => {
// すべての該当デバイスに適用されるグローバルなデフォルト
input.global = {
touchpad: {
tapToClick: true,
naturalScroll: true,
scrollMethod: 'twoFinger',
disableWhileTyping: true,
scrollFactor: 0.3,
},
pointer: {
pointerAccel: 0.0,
accelProfile: 'flat',
},
keyboard: {
options: 'caps:ctrl_modifier',
repeatRate: 60,
repeatDelay: 250,
},
};

// デバイス名をキーにしたデバイスごとの上書き
input.device['Razer Razer Blade Keyboard'] = {
keyboard: {layout: 'us'},
};
});

input.global はその種類の全デバイスに適用されます。input.device[name] は特定の 1デバイスの設定を上書きします(null を設定すると上書きを解除)。各値は keyboardpointertouchpad のサブオブジェクトを持つ InputDeviceConfig です。

キーボード設定

keyboardInputDeviceConfig.keyboard オブジェクト。rulesmodellayoutvariantoptions は標準的な XKB 設定です。

フィールド意味
layoutstringXKB レイアウト(例: "us""jp""de"
variantstringレイアウトのバリアント(例: "dvorak"
optionsstringXKB オプション(例: "caps:ctrl_modifier""ctrl:nocaps"
rulesstringXKB ルールセット
modelstringキーボードモデル
repeatRatenumber1秒あたりのキーリピート回数
repeatDelaynumberキーリピート開始までの遅延(ミリ秒)
input.global = {
keyboard: {layout: 'us', options: 'caps:ctrl_modifier', repeatRate: 60, repeatDelay: 250},
};

ポインター(マウス)設定

pointerInputDeviceConfig.pointer オブジェクト。

フィールド意味
pointerAccelnumber加速の速さ、-1.01.0
accelProfile"adaptive" | "flat"加速カーブ("flat" は等倍・加速なし)
naturalScrollbooleanスクロール方向を反転
leftHandedboolean左右ボタンを入れ替え
middleEmulationboolean左+右で中クリックをエミュレート
input.global = {pointer: {accelProfile: 'flat', pointerAccel: 0.0}};

タッチパッド設定

touchpadTouchpadInputConfig上記のポインター設定を継承するため、すべての pointer フィールドがここでも有効で、さらに以下が加わります。

フィールド意味
tapToClickbooleanパッドをタップしてクリック
tapButtonMap"leftRightMiddle" | "leftMiddleRight"複数指タップ → ボタンの割り当て
clickMethod"buttonAreas" | "clickfinger"物理クリックのボタン対応方式
scrollMethod"none" | "twoFinger" | "edge" | "onButtonDown"スクロールの発生方法
scrollFactornumberスクロール速度の倍率
disableWhileTypingbooleanタイプ中はパッドを無視

…に加えて、すべてのポインターフィールド(pointerAccelaccelProfilenaturalScrollleftHandedmiddleEmulation)も使えます。

input.global = {
touchpad: {
tapToClick: true,
naturalScroll: true,
scrollMethod: 'twoFinger',
scrollFactor: 0.3,
disableWhileTyping: true,
},
};

デバイスの読み取りと対象指定

ファクトリーの第2引数(およびコントローラ自身)は接続中のデバイスを公開するため、 種類に応じて条件付きで設定を適用できます。

メンバー返り値
devicesInputDeviceInfo[]
currentRecord<string, InputDeviceInfo>
get(key)InputDeviceInfo | undefined
find(predicate)最初に一致したデバイス
configure(factory)設定ファクトリーを登録
reconfigure()全ファクトリーを即時再実行

InputDeviceInfokeyname・任意の vendorproduct、そして kind フラグオブジェクト(keyboardpointertouchpadtouchtabletTooltabletPadgestureswitch)を持ちます。

COMPOSITOR.input.configure((input, ctx) => {
for (const device of ctx.devices) {
if (device.kind.touchpad) {
input.device[device.key] = {touchpad: {scrollMethod: 'twoFinger'}};
}
}
});