nuttx-apps/graphics/microwindows/Kconfig
Acfboy 1080111f99 graphics/microwindows: add NONETWORK mode for linking Nano-X apps with the server
* Add CONFIG_MICROWINDOWS_NANOX_NONETWORK which builds the Nano-X
  client library and server in the linked-in (NONETWORK) mode, so
  client applications are linked directly with the server and run in
  the same task, requiring no network stack or socket at all
* Reorganize the source lists: the drawing sources (nxdraw, nxutil,
  nxtransform, nxpaintnc) are shared by both modes, while the server
  is built from srvnet.c in the network mode and srvnonet.c in the
  NONETWORK mode
* Use MULTITHREAD_SERVER in the network mode so that several client
  tasks can run at the same time in the flat build
* Let the examples/nanoxterm start the server task only in the
  network mode (NONETWORK applications run the server inside main)

Assisted-by: OpenCode:DeepSeek-V4-Flash
Signed-off-by: Acfboy <AcfboyU@outlook.com>
2026-08-21 10:59:06 -03:00

161 lines
5 KiB
Text

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menuconfig GRAPHICS_MICROWINDOWS
bool "Microwindows or the Nano-X Window System"
default n
depends on VIDEO_FB
---help---
Enable Microwindows or the Nano-X Window System
if GRAPHICS_MICROWINDOWS
config MICROWINDOWS_FB_PATH
string "Framebuffer device path"
default "/dev/fb0"
---help---
Path to the NuttX framebuffer device.
choice
prompt "Keyboard driver"
default MICROWINDOWS_KBD_EVENT
---help---
Select the keyboard input driver for Microwindows.
config MICROWINDOWS_KBD_EVENT
bool "Event-mode keyboard driver"
---help---
Reads keyboard_event_s events from a NuttX keyboard device
(e.g., /dev/kbd). Supports key press/release tracking and
modifier keys (Shift, Ctrl, Alt).
config MICROWINDOWS_KBD_RAW
bool "Raw-mode keyboard driver"
depends on INPUT_KEYBOARD_BYTESTREAM
---help---
Reads raw byte stream from a character device (e.g., /dev/kbda)
and decodes escape sequences via the kbd_codec library. Suitable
for USB HID keyboards on QEMU.
config MICROWINDOWS_KBD_NONE
bool "No keyboard driver"
---help---
No keyboard driver is compiled. Microwindows will use a null
keyboard driver that never produces input. Suitable for
display-only applications.
config MICROWINDOWS_KBD_CUSTOM
bool "Custom keyboard driver"
---help---
No built-in keyboard driver is compiled. The application or BSP
must provide its own kbddev symbol and KBDDEVICE implementation,
and add the source file to the build (e.g., via CSRCS in its
Makefile). See the Microwindows documentation for details.
endchoice
config MICROWINDOWS_KBD_EVENT_PATH
string "Event keyboard device path"
default "/dev/kbd"
depends on MICROWINDOWS_KBD_EVENT
---help---
Device path for the event-mode keyboard driver.
config MICROWINDOWS_KBD_RAW_PATH
string "Raw keyboard device path"
default "/dev/kbda"
depends on MICROWINDOWS_KBD_RAW
---help---
Device path for the raw-mode keyboard driver.
choice
prompt "Mouse/touchscreen driver"
default MICROWINDOWS_MOUSE_RELATIVE
---help---
Select the pointing device driver for Microwindows.
config MICROWINDOWS_MOUSE_RELATIVE
bool "Relative mouse driver"
---help---
Reads mouse_report_s events from a NuttX mouse device
(e.g., /dev/mouse0). Supports three buttons and scroll wheel.
config MICROWINDOWS_MOUSE_TS
bool "Touchscreen driver"
---help---
Reads touch_sample_s events from a NuttX touchscreen device
(e.g., /dev/input0). Supports absolute positioning.
config MICROWINDOWS_MOUSE_NONE
bool "No mouse/touchscreen driver"
---help---
No pointing device driver is compiled. Microwindows will use a
null mouse driver that never produces input and hides the cursor.
Suitable for display-only applications.
config MICROWINDOWS_MOUSE_CUSTOM
bool "Custom mouse/touchscreen driver"
---help---
No built-in pointing device driver is compiled. The application
or BSP must provide its own mousedev symbol and MOUSEDEVICE
implementation, and add the source file to the build (e.g., via
CSRCS in its Makefile). See the Microwindows documentation for
details.
endchoice
config MICROWINDOWS_MOUSE_PATH
string "Mouse device path"
default "/dev/mouse0"
depends on MICROWINDOWS_MOUSE_RELATIVE
---help---
Device path for the relative mouse driver.
config MICROWINDOWS_TS_PATH
string "Touchscreen device path"
default "/dev/input0"
depends on MICROWINDOWS_MOUSE_TS
---help---
Device path for the touchscreen driver.
config MICROWINDOWS_MWIN
bool "Win32 API (mwin) support"
default n
---help---
Build the Microwindows Win32 (mwin) API library. This provides
a high-level windowing API similar to the Microsoft Windows API
with window management, controls, and standard dialogs.
config MICROWINDOWS_NANOX
bool "Nano-X (X11 API) client/server support"
default n
depends on MICROWINDOWS_NANOX_NONETWORK || (NET_LOCAL && NET_LOCAL_STREAM)
---help---
Build the Nano-X server core and the Nano-X client library.
The Nano-X server runs as a separate task and provides the
X11-like API (GrXXX calls) to client applications which
connect to it through a local stream socket. Alternatively,
with MICROWINDOWS_NANOX_NONETWORK, the client applications
are linked directly with the server and run in the same task.
config MICROWINDOWS_NANOX_NONETWORK
bool "Link Nano-X applications directly with the server"
default n
---help---
Build the Nano-X client library and server in the linked-in
(NONETWORK) mode: client applications are linked directly
with the server, so no network stack or socket is required
and the memory footprint is minimal. Only a single client
application can be active at a time.
config MICROWINDOWS_NANOX_NANOWM
bool "Built-in Nano-X window manager"
default n
depends on MICROWINDOWS_NANOX
---help---
Link the built-in window manager (wm*.c, nxdraw.c) into the
Nano-X server, providing window decorations (title bar, 3D
frame), cascaded placement, move/resize and focus handling.
endif # GRAPHICS_MICROWINDOWS