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?
| Keys | What |
|---|---|
| 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+F4 | other window, close window |
| Super alone | open/close the mega menu |
| Ctrl+T, Ctrl+W, Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+F, Ctrl+L, Ctrl+D | browser shortcuts |
| Ctrl+plus / minus / 0 | zoom (also on the keypad) |
| Ctrl+C, Ctrl+V, Ctrl+X | clipboard |
| Delete | delete (for example the selected mail) |
| Ctrl+Alt+Esc, held for 3 s | emergency 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 ineuzos_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
u32in 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.rswitheuzos_input::elan; RMI4 inhid_i2c.rswitheuzos_input::rmi; Precision Touchpad witheuzos_input::hid::Ptp) → gestures (euzos_gestures::Recognizer) →kernel::touchpad→pointerevents (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 aswl_touch(kernel::screen::touch). - HID over I2C: controllers from ACPI (
_HIDINT33C2,INT33C3,INT3432,INT3433,80860F41,808622C1), devices withPNP0C50/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 ofeuzos_input::lpss. - Key repeat is not built: a USB keyboard does not repeat, PS/2 uses the device's default (backlog).
Reference
Console commands
| Command | Arguments | What 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 flip | x | y | flip 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 / module | Role |
|---|---|
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 / start | the input and i2c commands; I2C input at boot |
kernel::input_presence::keyboard_present / touchscreen_present | is 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 / mouse | PS/2 keyboard and mouse (ELAN absolute mode) |
kernel::usb::hid | USB HID in report protocol (touchscreens, pens, mice) |
kernel::screen::keyboard (follow, step) | when the on-screen keyboard appears on the graphical screen |
kernel::screen::touch | fingers 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::sized | the 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
| File | Key | Values | Meaning |
|---|---|---|---|
\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):
| Key | Values (default) | Setting |
|---|---|---|
schermtoetsenbord | automatisch | altijd | nooit (automatisch) | On-screen keyboard |
toetsenbord | taal | us | us-intl | de | fr | tr-q | el | uk | bg | sr-cyrl | mk (taal) | Layout |
toetsenbord-tik | aan | uit (aan) | Key sound |
touchpad-aanwijzer | langzaam | normaal | snel (normaal) | Touchpad pointer speed |
touchpad-natuurlijk | aan | uit (aan) | Natural scrolling |
touchpad-tikken | aan | uit (aan) | Tap to click |
touchpad-rechtsklik | aan | uit (aan) | Secondary click with two fingers |
touchpad-snelheid | langzaam | normaal | snel (normaal) | Scrolling speed |
muis-snelheid | langzaam | normaal | snel (normaal) | Mouse pointer speed |
muis-omwisselen | aan | uit (uit) | Swap buttons |
muis-wiel-omkeren | aan | uit (uit) | Reverse the wheel |
pointer-size | small | normal | large | xlarge (normal) | Pointer size |
pointer-hide | never | 5 | 10 | 15 | 30 (15) | Hide the pointer when idle (seconds) |
aanraak-vegen | aan | uit (aan) | Swipe to scroll |
aanraak-doorrollen | aan | uit (aan) | Momentum scrolling |
aanraak-lang-drukken | aan | 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=inPROFILE.TXT); the old Dutch names (marked legacy here) are still read and accepted (docs/ENGLISH.md).
Protocol messages and formats
| Format | Description |
|---|---|
| PS/2 scancode set 1 | volume keys E0 30 / E0 2E / E0 20; Delete E0 53 |
| USB HID boot protocol | keyboard page; NumLock usage 0x53, keypad 0x54–0x63, volume 0x80/0x81/0x7F, Delete 0x4C |
| HID over I2C | HID descriptor (30 bytes) via the register from _DSM (GUID 3CDFF6F7-4267-4555-AD05-B30A3D8938DE) |
input touchpad follow line | time raw bytes | n finger(s) #id(x,y z=pressure) -> pointer dx dy -> scroll dx dy px -> buttons |
input touch follow line | n 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)
EUZOS