Files
NASM/wayland/docs/uml/diagram-sequence-keyboard.puml
2025-11-18 01:22:01 +03:00

62 lines
1.9 KiB
Plaintext

@startuml
title Обработка клавиатурного ввода
actor User
participant "Wayland Server" as Server
participant "input" as Input
participant "input-handle" as Handler
participant "wayland-runtime" as Runtime
participant "window" as Window
User -> Server: Нажатие клавиши
Server -> Input: keyboard_key(key, state)
activate Input
Input -> Input: xkb_state_key_get_one_sym()
note right: Преобразование keycode в keysym
Input -> Handler: keyboard_key_handle(kc, ks, state, window)
activate Handler
alt Клавиша Enter
Handler -> Runtime: run_window()
note right: Создание нового окна
else Клавиша '1'
Handler -> Window: figure.type = CIRCLE
else Клавиша '2'
Handler -> Window: figure.type = TRIANGLE
else Клавиша '3'
Handler -> Window: figure.type = SQUARE
else Клавиша '-'
Handler -> Handler: pthread_mutex_lock()
Handler -> Window: figure.speed -= 0.5
Handler -> Handler: Ограничить [1, 30]
Handler -> Handler: pthread_mutex_unlock()
else Клавиша '+' или '='
Handler -> Handler: pthread_mutex_lock()
Handler -> Window: figure.speed += 0.5
Handler -> Handler: Ограничить [1, 30]
Handler -> Handler: pthread_mutex_unlock()
else Клавиша Up
Handler -> Handler: pthread_mutex_lock()
Handler -> Window: figure.radius += 2.0
Handler -> Handler: Ограничить [1, max]
Handler -> Handler: pthread_mutex_unlock()
else Клавиша Down
Handler -> Handler: pthread_mutex_lock()
Handler -> Window: figure.radius -= 2.0
Handler -> Handler: Ограничить [1, max]
Handler -> Handler: pthread_mutex_unlock()
end
deactivate Handler
deactivate Input
note over Window
Изменения параметров фигуры
влияют на следующий frame
анимации и отрисовки
end note
@enduml