← CC

Tá na CC scríofa i mBéarla agus in Ollainnis; taispeántar i mBéarla iad.

CC

Input: keyboard, mouse, touchpad, touchscreen, on-screen keyboard

FAQ › EUZOS Desktop › Input · Nederlands

What is it?

EUZOS reads its input devices with its own drivers:

  • Keyboards: PS/2 (the i8042) and USB (boot protocol), including the numeric keypad, volume keys and shortcuts.
  • Mice and touchpads: PS/2 mouse, USB mouse, ELAN touchpads over PS/2 (absolute mode), Synaptics RMI4 over HID-over-I2C, and Precision Touchpads; two-finger scrolling with coasting, tap to click, two-finger right click.
  • Touchscreens: USB HID and HID over I2C (found through ACPI), with tablet gestures: swipe to scroll, coasting, tap, long press and pinch.
  • On-screen keyboard: on the desktop, the login screen and the text console, appearing by itself when there is no physical keyboard.

Everything ends up in two queues: the input buffer of characters and keys (kernel::input) and the pointer events (kernel::pointer).

How do I…?

How do I check which input devices EUZOS sees?

Type input in the console: ACPI devices, I2C controllers, PS/2, USB and counters. usb hid shows USB pointers (touchscreen, pen, mouse) in report protocol, input hid the HID devices on I2C.

How do I use the on-screen keyboard?

It slides in by itself when a text field gets the focus and there is no physical keyboard (password in the Wi-Fi panel, the browser's address field, a form field on a web page, the terminal, the login form). The keyboard button in the bar (on touch devices) opens and closes it by hand. In the text console it opens by itself without a keyboard, or with the button at the bottom right. The "hide" key closes it.

How do I change when the on-screen keyboard appears?

Settings › Keyboard › On-screen keyboard: Automatic (default: only without a physical keyboard), Always or Never (the button still works). The same card has the Layout (By language, or one of the nine layouts) and Key sound on/off. These are profile settings and follow you to other PCs.

How do I try the on-screen keyboard on a PC that has a keyboard?

input keyboard no forces "no physical keyboard"; input keyboard yes forces "keyboard present"; input keyboard auto lets EUZOS decide again. input keyboard alone shows the decision and its reasons (the PS/2 identify answer, whether a key was received, the number of USB keyboards, touchscreens).

Which on-screen keyboard layouts are there?

QWERTY, QWERTZ (with ü ö ä), AZERTY, Turkish Q, Greek, Ukrainian, Bulgarian phonetic, Serbian Cyrillic and Macedonian Cyrillic. The default follows the language. Shift once for one capital, twice within 350 ms for Caps; ?123 and =\< for digits and symbols; a long press (450 ms) on a letter shows its accented variants. Ctrl and Alt apply to the next key (Ctrl+Alt+T, Ctrl+C, Alt+Tab). In a password field no enlarged sample of the key is shown.

Does the physical keyboard use my layout?

Not yet. The conversion layer for physical layouts exists (euzos_input::layout: us, us-intl, de, fr, tr-q, with dead keys), but the drivers do not use it yet (planned, docs/LANGUAGES.md). What a physical keyboard types today is the driver's built-in table: the US layout (hid_to_ascii in kernel/src/usb/mod.rs for USB, the scancode tables in kernel/src/arch/x86_64/keyboard.rs for PS/2).

How does the numeric keypad work?

On USB keyboards NumLock is on at boot and toggles with the NumLock key. With NumLock the keypad types digits and .; without it, it gives the arrows, Home/End, Page Up/Down and Delete. / * - + and Enter always work. Ctrl+plus, Ctrl+minus and Ctrl+0 (browser zoom) also work on the keypad, on USB and PS/2.

Which keyboard shortcuts are there?

KeysWhat
Ctrl+Alt+T or Ctrl+Alt+F1 (serial console: Ctrl+T)show the console without logging out, and back
Super+arrows (without Super: Ctrl+Alt+arrows)maximise, restore, snap left/right
Alt+Tab, Alt+F4other window, close window
Super aloneopen/close the mega menu
Ctrl+T, Ctrl+W, Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+F, Ctrl+L, Ctrl+Dbrowser shortcuts
Ctrl+plus / minus / 0zoom (also on the keypad)
Ctrl+C, Ctrl+V, Ctrl+Xclipboard
Deletedelete (for example the selected mail)
Ctrl+Alt+Esc, held for 3 semergency reboot; a short press does nothing (see Console)

How do I change the touchpad and mouse behaviour?

Settings › Input devices: Touchpad (Pointer speed Slow/Normal/Fast, Natural scrolling, Tap to click, Secondary click with two fingers, Scrolling speed) and Mouse (Pointer speed, Swap buttons, Reverse the wheel). Changes apply right away.

How do I make the mouse pointer smaller or larger?

Settings › Input devices › Pointer › Pointer size: Small, Normal (the default), Large or Extra large. It changes right away on every screen, also on a second (HDMI) screen. Large is the size EUZOS used up to 28-10-2026; Normal is a bit smaller, about the size of a standard desktop pointer. Stored in your profile (pointer-size=).

Why does the mouse pointer disappear?

After 15 seconds without mouse or touchpad movement the pointer hides, so it does not cover what you read or type. Move the mouse or touchpad, click, scroll or use the wheel and it is back at once, at the same place; typing alone does not bring it back. Hover effects and menus under the pointer stay as they were. Change the delay (5, 10, 15 or 30 s) or turn it off (Never) in Settings › Input devices › Pointer › Hide the pointer when idle (pointer-hide=). A finger on the touchscreen also hides the pointer; the next mouse movement shows it again.

How do I change the touchscreen gestures?

Settings › Input devices › Touchscreen (only when there is a touchscreen): Swipe to scroll, Momentum scrolling, Long press = right-click. All on by default. Chromium does its own tablet behaviour.

Why does the touchpad pointer move the wrong way?

input touchpad flip x or input touchpad flip y flips an axis until the next restart. If multi-finger mode misbehaves on a PS/2 ELAN touchpad, input ps2 mouse puts it back into plain mouse mode, input ps2 absolute back into multi-finger mode.

How do I turn I2C input off at boot?

Put the word off in \EOS\FW\INPUT.TXT (legacy: uit, and the file name INVOER.TXT, are still read). EUZOS then skips the HID devices on I2C during boot; input start still starts them later.

Details

  • Keyboard detection (input_presence::keyboard_present, decision in euzos_input::presence): an i8042 controller alone does not count; the keyboard must answer "identify" (0xF2) with an MF2 ID, or a key must have come from the first PS/2 port. Every attached USB boot keyboard counts (until it is removed). A touchscreen counts as present once attached or once a finger was seen.
  • Characters travel as u32 in the input buffer: 0x00–0x7F ASCII, 0x80–0x9F special codes (arrows, volume, windows, browser shortcuts, clipboard), from 0xA0 Unicode. The on-screen keyboard uses the same buffer (input::from_on_screen_keyboard), so apps cannot tell the difference.
  • Touchpad layers: driver (ELAN PS/2 in arch/x86_64/mouse.rs with euzos_input::elan; RMI4 in hid_i2c.rs with euzos_input::rmi; Precision Touchpad with euzos_input::hid::Ptp) → gestures (euzos_gestures::Recognizer) → kernel::touchpad → pointer events (Scroll { dx, dy, phase }) → the window under the arrow. If a type is not really known or a step fails, the touchpad stays in mouse mode.
  • Gesture thresholds: two-finger scroll after 1.2 mm; tap < 220 ms and < 2.5 mm (one finger left, two right, three middle); palm wider than 22 mm; touchscreen drag beyond 10 screen points; long press 0.5 s.
  • Touchscreen: the first finger moves the pointer; all fingers go to pointer::push_touch (Event::Finger, FingersUp); in a Wayland window or Chromium they go to the compositor as wl_touch (kernel::screen::touch).
  • HID over I2C: controllers from ACPI (_HID INT33C2, INT33C3, INT3432, INT3433, 80860F41, 808622C1), devices with PNP0C50 / ACPI0C50, switched on with _PS0, the HID descriptor through _DSM. GPIO interrupt lines on Lynx Point (INT33C7, INT3437), and on the Intel and AMD layouts of euzos_input::lpss.
  • Key repeat is not built: a USB keyboard does not repeat, PS/2 uses the device's default (backlog).

Reference

Console commands

CommandArgumentsWhat it does
input—overview: ACPI variables and devices, I2C controllers, PS/2, USB, counters
input start—find and start the HID devices on I2C (again)
input hid[all]HID devices on I2C in detail; all: the whole report descriptor; legacy alias alles
input hid fields—every field of the report descriptors (report ID, usage, bits); legacy alias velden
input gpio—GPIO registers of the interrupt lines
input ps2[rescan]PS/2 mouse/touchpad diagnostics; rescan asks the device again; legacy alias opnieuw
input ps2 mouse—touchpad only as a mouse; legacy alias muis
input ps2 absolute—touchpad with multiple fingers (ELAN); legacy alias absoluut
input follow[s] (default 10)show pointer events live; legacy alias volg
input touchpad—active multi-finger touchpad, settings, last 8 frames
input touchpad follow[s] (default 20)raw packets, fingers and gestures live
input touchpad flipx | yflip an axis until restart; legacy alias omdraaien
input touch—touchscreen: reports, fingers, largest gap, settings, last gestures; legacy alias aanraak
input touch follow[s] (default 20)fingers and gestures live
input keyboard[yes|no|auto]physical keyboard and touchscreen presence; force or automatic; legacy aliases toetsenbord, ja, nee
i2c—the I2C controllers from ACPI (number, path, _HID, _STA, base, on/error)
i2c scan<n>try addresses 0x08–0x77 on controller n (number or name), read only
i2c read<n> <addr> <reg> [count]read a register (16-bit register address); legacy alias lees
usb hid[all|fields]USB pointers in report protocol and boot keyboards/mice; legacy aliases alles, velden

Legacy command name: invoer → input. Related: screen tap and screen wheel <n> simulate a tap and the scroll wheel (see Console).

Functions and modules

Function / moduleRole
kernel::input (push, push_char, pop, from_on_screen_keyboard, browser_shortcut)the input buffer and the special key codes (UP, CONSOLE, VOL_UP, WINDOW_*, CTRL_*, ZOOM_*, DEL, MENU)
kernel::input_presence::command / i2c_command / init / startthe input and i2c commands; I2C input at boot
kernel::input_presence::keyboard_present / touchscreen_presentis there a physical keyboard / a touchscreen
kernel::pointer (push, push_touch, push_hid, next, counters)the pointer event queue
kernel::touchpad (frame, tick, set_settings, set_mouse, set_touch, diagnose, follow, flip)touchpad gestures, coasting, profile settings
kernel::touch (diagnose, follow)touchscreen diagnostics
kernel::hid_i2c (start, read_descriptor)HID over I2C devices
kernel::i2c (Bus, Timings)the LPSS I2C controller
kernel::arch::x86_64::keyboard / mousePS/2 keyboard and mouse (ELAN absolute mode)
kernel::usb::hidUSB HID in report protocol (touchscreens, pens, mice)
kernel::screen::keyboard (follow, step)when the on-screen keyboard appears on the graphical screen
kernel::screen::touchfingers to gestures, wl_touch, long press, pinch
kernel::screen::pointer_style (set, refresh, idle)the pointer size and hiding it when idle, on every screen
euzos_ui::login::PointerSize, ArrowImage::sizedthe pointer sizes and the anti-aliased arrow
euzos_window::Pointers (shown, set_hide_after, wake, idle)the arrow apart from the finger; the hide timer
kernel::console_keyboard (work)the on-screen keyboard in the text console
euzos_ui::keyboard (Layout, Follower, slide)drawing, layouts and show/hide decision of the on-screen keyboard
euzos_input (ps2, usb_hid, hid, i2c_hid, elan, rmi, presence, layout)parsers for every input protocol; physical layouts
euzos_gestures (Recognizer, Frame, touch)touchpad and touchscreen gesture recognition (integers only)

Config files

FileKeyValuesMeaning
\EOS\FW\INPUT.TXT (legacy name INVOER.TXT)(whole file)off (legacy uit)do not start HID-over-I2C input at boot (input start still can)

Profile settings (on the wire to the profile server; keys and values stay Dutch):

KeyValues (default)Setting
schermtoetsenbordautomatisch | altijd | nooit (automatisch)On-screen keyboard
toetsenbordtaal | us | us-intl | de | fr | tr-q | el | uk | bg | sr-cyrl | mk (taal)Layout
toetsenbord-tikaan | uit (aan)Key sound
touchpad-aanwijzerlangzaam | normaal | snel (normaal)Touchpad pointer speed
touchpad-natuurlijkaan | uit (aan)Natural scrolling
touchpad-tikkenaan | uit (aan)Tap to click
touchpad-rechtsklikaan | uit (aan)Secondary click with two fingers
touchpad-snelheidlangzaam | normaal | snel (normaal)Scrolling speed
muis-snelheidlangzaam | normaal | snel (normaal)Mouse pointer speed
muis-omwisselenaan | uit (uit)Swap buttons
muis-wiel-omkerenaan | uit (uit)Reverse the wheel
pointer-sizesmall | normal | large | xlarge (normal)Pointer size
pointer-hidenever | 5 | 10 | 15 | 30 (15)Hide the pointer when idle (seconds)
aanraak-vegenaan | uit (aan)Swipe to scroll
aanraak-doorrollenaan | uit (aan)Momentum scrolling
aanraak-lang-drukkenaan | uit (aan)Long press = right-click

Since 27-10-2026 EUZOS writes English config file names, keys, values and confirmation words (for example WIPE-…, environment= in PROFILE.TXT); the old Dutch names (marked legacy here) are still read and accepted (docs/ENGLISH.md).

Protocol messages and formats

FormatDescription
PS/2 scancode set 1volume keys E0 30 / E0 2E / E0 20; Delete E0 53
USB HID boot protocolkeyboard page; NumLock usage 0x53, keypad 0x54–0x63, volume 0x80/0x81/0x7F, Delete 0x4C
HID over I2CHID descriptor (30 bytes) via the register from _DSM (GUID 3CDFF6F7-4267-4555-AD05-B30A3D8938DE)
input touchpad follow linetime raw bytes | n finger(s) #id(x,y z=pressure) -> pointer dx dy -> scroll dx dy px -> buttons
input touch follow linen finger(s) #id(x,y) then -> TAP, -> LONG PRESS, -> drag, -> SWIPE vx vy px/s, -> PINCH, and what the screen did

See also

  • docs/DESKTOP-DESIGN.md, chapters 11 (on-screen keyboard), 12 (touchpad) and 12b (touchscreen)
  • docs/LANGUAGES.md, "Keyboards"
  • docs/WINDOWS.md (window shortcuts), docs/WAYLAND.md ("Touchscreen")
  • docs/SOURCES.md, "USB and input"
  • Sound (volume keys, key click), Diagnostics (usb, aml, acpi)