STRUCT F11_2D_SENSOR_QUERIES(9)
π¦π struct f11_2d_sensor_queries(9) π π¦
okay so bestie, welcome to the Kernel API Manual, section 9 β this is the whole entire page for struct f11_2d_sensor_queries and it is long, so buckle up. this struct is literally the vibe check for a 2-D sensor: it tells you what the thing can do before you go poking at it. it's giving "resume of a touchpad." let's get into it β¨
πΈ NAME πΈ
struct f11_2d_sensor_queries β describes sensor capabilities. that's it, that's the whole job, and honestly? iconic π
π SYNOPSIS π
struct f11_2d_sensor_queries {
u8 nr_fingers;
bool has_rel;
bool has_abs;
bool has_gestures;
bool has_sensitivity_adjust;
bool configurable;
u8 nr_x_electrodes;
u8 nr_y_electrodes;
u8 max_electrodes;
u8 abs_data_size;
bool has_anchored_finger;
bool has_adj_hyst;
bool has_dribble;
bool has_bending_correction;
bool has_large_object_suppression;
bool has_jitter_filter;
u8 f11_2d_query6;
bool has_single_tap;
bool has_tap_n_hold;
bool has_double_tap;
bool has_early_tap;
bool has_flick;
bool has_press;
bool has_pinch;
bool has_chiral;
bool query7_nonzero;
bool has_palm_det;
bool has_rotate;
bool has_touch_shapes;
bool has_scroll_zones;
bool has_individual_scroll_zones;
bool has_mf_scroll;
bool has_mf_edge_motion;
bool has_mf_scroll_inertia;
bool query8_nonzero;
bool has_pen;
bool has_proximity;
bool has_palm_det_sensitivity;
bool has_suppress_on_palm_detect;
bool has_two_pen_thresholds;
bool has_contact_geometry;
bool has_pen_hover_discrimination;
bool has_pen_filters;
u8 nr_touch_shapes;
bool has_z_tuning;
bool has_algorithm_selection;
bool has_w_tuning;
bool has_pitch_info;
bool has_finger_size;
bool has_segmentation_aggressiveness;
bool has_XY_clip;
bool has_drumming_filter;
bool has_gapless_finger;
bool has_gapless_finger_tuning;
bool has_8bit_w;
bool has_adjustable_mapping;
bool has_info2;
bool has_physical_props;
bool has_finger_limit;
bool has_linear_coeff_2;
u8 jitter_window_size;
u8 jitter_filter_type;
u8 light_control;
bool is_clear;
u8 clickpad_props;
u8 mouse_buttons;
bool has_advanced_gestures;
u16 x_sensor_size_mm;
u16 y_sensor_size_mm;
};
that's a LOT of bools and honestly? she's thorough. we respect her π«Ά
π Members π
so Members is technically its own heading up in here, but it's really just the main character section β every field, one by one, no skips, no cap:
nr_fingersβ the max number of fingers the 2-D sensor can handle. multitouch queen πhas_relβ sensor reports relative motion. yes babe, deltas, we love her.has_absβ sensor reports absolute position. pointing-at-a-spot energy β¨has_gesturesβ it does gesture reporting. taps, swipes, the whole choreo.has_sensitivity_adjustβ you get a global sensitivity adjustment. one dial for everything, periodt.configurableβ the sensor supports a bunch of various configuration options. she's flexible πnr_x_electrodesβ max number of electrodes the sensor supports along the X axis.nr_y_electrodesβ same deal, but the Y axis. π¦max_electrodesβ the total number of X and Y electrodes that you're actually allowed to configure.abs_data_sizeβ describes the format of the data coming out of the absolute data source. heads up: only one format (the kind used here) is supported at this time β so don't go inventing new ones, bestie πhas_anchored_fingerβ sensor supports the high-precision second-finger tracking that comes from the manual tracking and motion sensitivity options. fancy fr fr.has_adj_hystβ the difference between the finger release threshold and the touch threshold.has_dribbleβ sensor can generate dribble interrupts, which you can turn on or off with the dribble control bit. dribble π the naming committee was in a MOOD.has_bending_correctionβ the bending-related data registers28and36, plus control register52..57, are present.has_large_object_suppressionβ control register58and data register28exist.has_jitter_filterβ query13and control73..76exist.f11_2d_query6β this register is reserved. nothing to see here, move along πhas_single_tapβ basic single-tap gesture: supported βhas_tap_n_holdβ tap-and-hold gesture: supported βhas_double_tapβ double-tap gesture: supported βhas_early_tapβ early tap is supported, and it gets reported as soon as the finger lifts for any tap event that could be read as either a single tap or as the first tap of a double-tap or tap-and-hold gesture. she's eager, she's proactive, she's reporting early πhas_flickβ flick detection is supported. swish π¦has_pressβ press gesture reporting is supported.has_pinchβ pinch gesture detection is supported. two fingers, one destiny β¨has_chiralβ chiral (circular) scrolling gesture detection is supported. going in circles bestie πquery7_nonzeroβ true if none of the query 7 bits are set. yes, that's genuinely what it says. no, we're not going to argue with the manpage πhas_palm_detβ the 2-D sensor pings the host whenever a large conductive object β like a palm, or a cheek β touches it. so it knows when you're being a menace πhas_rotateβ rotation gesture detection is supported. spin it π₯has_touch_shapesβ TouchShapes are supported. and what's a TouchShape, you ask? it's a fixed rectangular area on the sensor that behaves like a capacitive button. lil rectangle, big main character energy πhas_scroll_zonesβ scrolling areas near the sensor edges are supported. edge-scrolling supremacy.has_individual_scroll_zonesβ if1, then 4 scroll zones are supported; if0, then only two are supported. choose your fighter.has_mf_scrollβ themultifinger_scrollingbit will be set when more than one finger is involved in a scrolling action.has_mf_edge_motionβ tells you whether the multi-finger edge motion gesture is supported.has_mf_scroll_inertiaβ tells you whether the multi-finger scroll inertia feature is supported. momentum, bestie πquery8_nonzeroβ true if none of the query 8 bits are set. same energy as her sibling above, we stan consistency πhas_penβ stylus detection is supported, and registersF11_2D_Ctrl20andF11_2D_Ctrl21exist. pen girlies rise ποΈhas_proximityβ detection of fingers near the sensor is supported (not even touching yet, she just knows), and registersF11_2D_Ctrl22throughF11_2D_Ctrl26exist.has_palm_det_sensitivityβ sensor supports the palm detect sensitivity feature, and registerF11_2D_Ctrl27exists.has_suppress_on_palm_detectβ device supports the large object detect suppression feature, and registerF11_2D_Ctrl27exists.has_two_pen_thresholdsβ ifhas_penis also set, thenF11_2D_Ctrl35exists.has_contact_geometryβ sensor supports using contact geometry to map absolute X and Y target positions, and registersF11_2D_Data18throughF11_2D_Data27exist. geometry class was worth it πhas_pen_hover_discriminationβ ifhas_penis also set, then registersF11_2D_Data29throughF11_2D_Data31,F11_2D_Ctrl68.*,F11_2D_Ctrl69andF11_2D_Ctrl72exist.has_pen_filtersβ ifhas_penis also set, then registersF11_2D_Ctrl70andF11_2D_Ctrl71exist.nr_touch_shapesβ the total number of touch shapes supported.has_z_tuningβ if set, the sensor supports Z tuning, and registersF11_2D_Ctrl29throughF11_2D_Ctrl33exist.has_algorithm_selectionβ controls the choice of noise suppression algorithm. pick your fighter, algorithm edition.has_w_tuningβ sensor supports Wx and Wy scaling, and registersF11_2D_Ctrl36throughF11_2D_Ctrl39exist.has_pitch_infoβ the X and Y pitches of the sensor electrodes can be configured, and registersF11_2D_Ctrl40andF11_2D_Ctrl41exist.has_finger_sizeβ the default finger width settings for the sensor can be configured, and registersF11_2D_Ctrl42throughF11_2D_Ctrl44exist.has_segmentation_aggressivenessβ the sensor's ability to tell multiple objects that are close together apart can be configured, and registerF11_2D_Ctrl45exists. personal space, respected π«Άhas_XY_clipβ the inactive outside borders of the sensor can be configured, and registersF11_2D_Ctrl46throughF11_2D_Ctrl49exist.has_drumming_filterβ the sensor can be configured to tell the difference between a fast flick and a quick drumming movement, and registersF11_2D_Ctrl50andF11_2D_Ctrl51exist. π₯ no drumming on the touchpad pleasehas_gapless_fingerβ control registers relating to gapless finger are present.has_gapless_finger_tuningβ additional control and data registers relating to gapless finger are present.has_8bit_wβ larger W value reporting is supported.has_adjustable_mappingβTBD. literally that's all it says bestie, we're left on read πhas_info2β the general info query14 is present.has_physical_propsβ additional queries describing the physical properties of the sensor are present.has_finger_limitβ indicates that F11 Ctrl 80 exists.has_linear_coeff_2β indicates that F11 Ctrl 81 exists.jitter_window_sizeβ used by Design Studio 4.jitter_filter_typeβ used by Design Studio 4. (yes, both of them. twins π―)light_controlβ indicates what light/led control features are present, if any. glow-up potential β¨is_clearβ if set, this is a clear sensor (which indicates a direct pointing application); otherwise it's opaque (which indicates indirect pointing).clickpad_propsβ specifies if this is a clickpad, and if so, what sort of mechanism it uses.mouse_buttonsβ specifies the number of mouse buttons present (if any). could be zero. could be a party. πhas_advanced_gesturesβ advanced driver gestures are supported.x_sensor_size_mmβ size of the sensor in millimeters along the X axis.y_sensor_size_mmβ size of the sensor in millimeters along the Y axis. that's the whole sensor, measured and everything π
π Description π
okay so now the rules of when each query register even shows up β this is the lore, bestie, pay attention π§
Query registers 1 through 4 are always present. like, no conditions, no nothing, they're just there π
Query 5 is present if the has_abs bit is set.
Query 6 is present if the has_rel it is set. (her grammar, not mine π)
Gesture information queries 7 and 8 are present if the has_gestures bit is set.
Convenience for checking bytes in the gesture info registers. This is done often enough that we put it here to declutter the conditionals. β yes, that really is what the manpage says in this section. she's just being helpful π
Query 9 is present if the has_query9 is set.
Touch shape info (query 10) is present if has_touch_shapes is set.
Query 11 is present if the has_query11 bit is set in query 0.
Query 12 is present if hasQuery12 bit is set.
Query 13 is present if Query 5's has_jitter_filter bit is set.
Query 14 is present if query 12's has_general_info2 flag is set.
π SEE ALSO π
- Kernel file
./drivers/input/rmi4/rmi_f11.cβ yep, thatβs where the real source-level lore lives, bestie. Go peek if youβre curious πβ¨
And thatβs the whole page, no cap! π
This one comes from ./drivers/input/rmi4, dated October 2026, and itβs the manual page for struct f11_2...nsor_queries(9). ππ«Ά
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms