mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-03-14 05:34:21 -04:00
151 lines
5 KiB
Markdown
151 lines
5 KiB
Markdown
---
|
||
title: Input Devices
|
||
description: Configure keyboard layouts, mouse sensitivity, and touchpad gestures.
|
||
---
|
||
|
||
## Device Configuration
|
||
|
||
mangowm provides granular control over different input devices.
|
||
|
||
### Keyboard Settings
|
||
|
||
Control key repeat rates and layout rules.
|
||
|
||
| Setting | Type | Default | Description |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `repeat_rate` | `int` | `25` | How many times a key repeats per second. |
|
||
| `repeat_delay` | `int` | `600` | Delay (ms) before a held key starts repeating. |
|
||
| `numlockon` | `0` or `1` | `0` | Enable NumLock on startup. |
|
||
| `xkb_rules_rules` | `string` | - | XKB rules file (e.g., `evdev`, `base`). Usually auto-detected. |
|
||
| `xkb_rules_model` | `string` | - | Keyboard model (e.g., `pc104`, `macbook`). |
|
||
| `xkb_rules_layout` | `string` | - | Keyboard layout code (e.g., `us`, `de`, `us,de`). |
|
||
| `xkb_rules_variant` | `string` | - | Layout variant (e.g., `dvorak`, `colemak`, `intl`). |
|
||
| `xkb_rules_options` | `string` | - | XKB options (e.g., `caps:escape`, `ctrl:nocaps`). |
|
||
|
||
**Example:**
|
||
|
||
```ini
|
||
repeat_rate=40
|
||
repeat_delay=300
|
||
numlockon=1
|
||
xkb_rules_layout=us,de
|
||
xkb_rules_variant=dvorak
|
||
xkb_rules_options=caps:escape,ctrl:nocaps
|
||
```
|
||
|
||
---
|
||
|
||
### Trackpad Settings
|
||
|
||
Specific settings for laptop touchpads. Some settings may require a relogin to take effect.
|
||
|
||
| Setting | Default | Description |
|
||
| :--- | :--- | :--- |
|
||
| `disable_trackpad` | `0` | Set to `1` to disable the trackpad entirely. |
|
||
| `tap_to_click` | `1` | Tap to trigger a left click. |
|
||
| `tap_and_drag` | `1` | Tap and hold to drag items. |
|
||
| `trackpad_natural_scrolling` | `0` | Invert scrolling direction (natural scrolling). |
|
||
| `scroll_method` | `1` | `1` (Two-finger), `2` (Edge), `4` (Button). |
|
||
| `click_method` | `1` | `1` (Button areas), `2` (Clickfinger). |
|
||
| `drag_lock` | `1` | Lock dragging after tapping. |
|
||
| `disable_while_typing` | `1` | Disable trackpad while typing. |
|
||
| `left_handed` | `0` | Swap left/right buttons. |
|
||
| `middle_button_emulation` | `0` | Emulate middle button. |
|
||
| `swipe_min_threshold` | `1` | Minimum swipe threshold. |
|
||
|
||
---
|
||
|
||
**Detailed descriptions:**
|
||
|
||
- `scroll_method` values:
|
||
- `0` — Never send scroll events (no scrolling).
|
||
- `1` — Two-finger scrolling: send scroll events when two fingers are logically down on the device.
|
||
- `2` — Edge scrolling: send scroll events when a finger moves along the bottom or right edge.
|
||
- `4` — Button scrolling: send scroll events when a button is held and the device moves along a scroll axis.
|
||
|
||
- `click_method` values:
|
||
- `0` — No software click emulation.
|
||
- `1` — Button areas: use software-defined areas on the touchpad to generate button events.
|
||
- `2` — Clickfinger: the number of fingers determines which button is pressed.
|
||
|
||
- `accel_profile` values:
|
||
- `0` — No acceleration.
|
||
- `1` — Flat: no dynamic acceleration. Pointer speed = original input speed × (1 + `accel_speed`).
|
||
- `2` — Adaptive: slow movement results in less acceleration, fast movement results in more.
|
||
|
||
- `button_map` values:
|
||
- `0` — 1/2/3 finger tap maps to left / right / middle.
|
||
- `1` — 1/2/3 finger tap maps to left / middle / right.
|
||
|
||
- `send_events_mode` values:
|
||
- `0` — Send events from this device normally.
|
||
- `1` — Do not send events from this device.
|
||
- `2` — Disable this device when an external pointer device is plugged in.
|
||
|
||
---
|
||
|
||
### Mouse Settings
|
||
|
||
Configuration for external mice.
|
||
|
||
| Setting | Default | Description |
|
||
| :--- | :--- | :--- |
|
||
| `mouse_natural_scrolling` | `0` | Invert scrolling direction. |
|
||
| `accel_profile` | `2` | `0` (None), `1` (Flat), `2` (Adaptive). |
|
||
| `accel_speed` | `0.0` | Speed adjustment (-1.0 to 1.0). |
|
||
| `left_handed` | `0` | Swap left and right buttons. |
|
||
| `middle_button_emulation` | `0` | Emulate middle button. |
|
||
| `swipe_min_threshold` | `1` | Minimum swipe threshold. |
|
||
| `send_events_mode` | `0` | `0` (Enabled), `1` (Disabled), `2` (Disabled on external mouse). |
|
||
| `button_map` | `0` | `0` (Left/right/middle), `1` (Left/middle/right). |
|
||
|
||
---
|
||
|
||
---
|
||
|
||
## Keyboard Layout Switching
|
||
|
||
To bind multiple layouts and toggle between them, define the layouts in `xkb_rules_layout` and use `xkb_rules_options` to set a toggle key combination. Then bind `switch_keyboard_layout` to trigger a switch.
|
||
|
||
```ini
|
||
# Define two layouts: US QWERTY and US Dvorak
|
||
xkb_rules_layout=us,us
|
||
xkb_rules_variant=,dvorak
|
||
xkb_rules_options=grp:lalt_lshift_toggle
|
||
```
|
||
|
||
Or bind it manually to a key:
|
||
|
||
```ini
|
||
# Bind Alt+Shift_L to cycle keyboard layout
|
||
bind=alt,shift_l,switch_keyboard_layout
|
||
```
|
||
|
||
Use `mmsg -g -k` to query the current keyboard layout at any time.
|
||
|
||
---
|
||
|
||
## Input Method Editor (IME)
|
||
|
||
To use Fcitx5 or IBus, set these environment variables in your config file.
|
||
|
||
> **Info:** These settings require a restart of the window manager to take effect.
|
||
|
||
**For Fcitx5:**
|
||
|
||
```ini
|
||
env=GTK_IM_MODULE,fcitx
|
||
env=QT_IM_MODULE,fcitx
|
||
env=QT_IM_MODULES,wayland;fcitx
|
||
env=SDL_IM_MODULE,fcitx
|
||
env=XMODIFIERS,@im=fcitx
|
||
env=GLFW_IM_MODULE,ibus
|
||
```
|
||
|
||
**For IBus:**
|
||
|
||
```ini
|
||
env=GTK_IM_MODULE,ibus
|
||
env=QT_IM_MODULE,ibus
|
||
env=XMODIFIERS,@im=ibus
|
||
```
|