- 感度調節設定(スクロールの感度)
- 個々にあったマウスセンサーの調節(SCROLL_TICK数を増減することにより可能:標準10)
scroll-tick = <10>;
この数字を適宜変更してください
Tick数/サイクル
で計算しているのでTick数を増やせば1サイクルあたりのトラックボールの移動量が増えるため感度が鈍くなる
- マウスセンサー位置
- ケースデザインによりマウスセンサーがトラックボールに対して回転している場合がある
マウスセンサー位置 |
回転角度 |
説明 |
ボール左、センサー右 |
0度 |
デフォルト |
ボール下、センサー上 |
90度 |
|
ボール右、センサー左 |
180度 |
|
ボール上、センサー下 |
270度 |
|
#include <dt-bindings/zmk/matrix_transform.h>
#include <input/processors.dtsi>
#include <dt-bindings/zmk/input_transform.h>
#include "layouts.dtsi"
/ {
chosen {
zmk,physical-layout = &physical_layout0;
};
...
... そのまま
...
trackball_listener: trackball_listener {
compatible = "zmk,input-listener";
device = <&trackball>;
// 通常カーソル移動
input-processors =
<&zip_xy_scaler 1 1>;
// 高精細カーソル移動
snipe {
layers = <5>;
input-processors =
<&zip_xy_scaler 1 4>;
};
// 垂直スクロール
scroll {
layers = <6>;
input-processors =
<&zip_xy_to_scroll_mapper>;
};
// 水平スクロール
scroll_horizontal {
layers = <7>;
input-processors =
<&zip_xy_to_scroll_mapper>;
};
// 高精細垂直スクロール
scroll_snipe {
layers = <8>;
input-processors =
<&zip_xy_scaler 1 4>,
<&zip_scroll_scaler 1 4>,
<&zip_xy_to_scroll_mapper>;
};
// 高精細水平スクロール
scroll_snipe_horizontal {
layers = <9>;
input-processors =
<&zip_xy_scaler 1 4>,
<&zip_scroll_scaler 1 4>,
<&zip_xy_to_scroll_mapper>;
};
};
};
&physical_layout0 {
kscan = <&kscan0>;
transform = <&default_transform>;
...
... そのまま
...
};
&spi0 {
status = "okay";
compatible = "nordic,nrf-spim";
pinctrl-0 = <&spi0_default>;
pinctrl-1 = <&spi0_sleep>;
pinctrl-names = "default", "sleep";
cs-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
trackball: trackball@0 {
status = "okay";
compatible = "pixart,paw3222";
reg = <0>;
spi-max-frequency = <2000000>;
irq-gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
rotation = <90>;
scroll-tick = <10>;
snipe-layers = <5>;
scroll-layers = <6 7 8 9>;
scroll-horizontal-layers = <7 9>;
};
};
&trackball_listener {
status = "okay";
device = <&trackball>;
};
-
snipe-layers
高精細カーソル移動(trackball_listener)とレイヤー番号は合わせてください
-
scroll-layers
スクロールに関連するレイヤーは全て記入する
- 垂直・水平・高精細(通常垂直、通常水平、高精細垂直、高精細水平)
-
scroll-horizontal-layers
スクロールの中の水平スクロールに関するレイヤーを記入する
-
これまで、マウスセンサー位置が回転していた場合はその設定を記述していたが必要なくなった
- 各レイヤーの感度調節を行うだけで良い(1/4, 1/6, 1/8, 1/10, 1/12, 1/16 ... この設定は感度を鈍くする設定です)
- 必要に応じて反転などしてください
-
高精細モードの時の設定
<&zip_xy_scaler 1 4>
こちらのようにxy_scaler
xy軸を同じ値によってスケールするやり方です。
<&zip_x_scaler 1 4>
x軸のスケールを行うやり方もあります。軸別に設定した方はどうぞ。
階層 |
レイヤー名 |
説 明 |
9 |
Scroll_snipe_h |
高精細・スクロール(水平) |
8 |
Scroll_snipe |
高精細・スクロール(垂直)Shift押下でレイヤー9に移動 |
7 |
Scroll_h |
通常・画面スクロール(水平) |
6 |
Scroll |
通常・画面スクロール(垂直)Shift押下でレイヤー7に移動 |
5 |
Snipe |
高精細カーソル移動 |
... |
|
|
... |
|
|
1 |
layer_1 |
レイヤー1 |
0 |
layer_0 |
デフォルトレイヤー&trans にしてあると出力されるキー配列 |
- Shiftキー押下でのレイヤー移動は
&mo
(押下中のみそのレイヤーに移動するというもの)
※ 左右にトラボを設置する場合は、それぞれのgpioなどの値を変更する必要がある。または、生成された時の値を利用するのでその場合は、左右で同じにならないように注意が必要です。
overlay
の設定例