Olej писал(а): ↑09 фев 2024, 02:03
- ожидание нажатия клавиши на клавиатуре ... для того чтобы это был неблокирующий ввод - это отдельная горутина...
Вот это место интересное ... очень часто в Интернет вопрос (например у тех кто интересуется играми): как сделать
неблокирующий ввод с клавиатуры
Традиционно в UNIX/POSIX API есть 2 режима ввода с клавиатуры:
1).
канонический: построчный (заканчивая Enter), блокирующий, есть эхо-отобржение ввода на терминал, обрабатываются спецсимволы, например Backspase, стрелки перемещения и т.д.
2).
неканонический: посимвольный, неблокирующий, без эхо-отображения, никаких спецсимволов.
Но
Это: платформенно-зависимое решение - POSIX / UNIX / Linux
А в параллельном (конкурентном) исполнении
неблокирующий ввод может быть реализован в отдельной ветке, горутине циклически опрашивающей ввод
Подобно тому как это сделано в примере выше.
И если пройтись по репозиториям GoLang поиском с контекстом "keyboard" - вот:
https://pkg.go.dev/search?q=keyboard&m= - то вы получите
несколько десятков модулей для чтения клавиатуры ... от 2012 до 2024 года:
keyboard (github.com/eiannone/keyboard)
Imported by 216 | v0.0.0-...-0d22619 published on Jun 11, 2022 | MIT
keyboard (atomicgo.dev/keyboard)
keyboard (atomicgo.dev/keyboard)
Package keyboard can be used to read key presses from the keyboard, while in a terminal application.
Imported by 98 | v0.2.9 published on Jan 10, 2023 | MIT
inpututil (github.com/hajimehoshi/ebiten/v2/inpututil)
Package inpututil provides utility functions of input like keyboard or mouse.
Imported by 438 | v2.6.5 published on Jan 27, 2024 | Apache-2.0
key (golang.org/x/mobile/event/key)
Package key defines an event for physical keyboard keys.
Imported by 209 | v0.0.0-...-c713f31 published on Jan 12, 2024 | BSD-3-Clause
keyboard (github.com/mum4k/termdash/keyboard)
Package keyboard defines well known keyboard keys and shortcuts.
Imported by 37 | v0.19.0 published on Jan 29, 2024 | Apache-2.0
kb (github.com/chromedp/chromedp/kb)
Package kb provides keyboard mappings for Chrome DOM Keys for use with input events.
Imported by 51 | v0.9.5 published on 3 days ago | MIT
keyboard (gobot.io/x/gobot/v2/platforms/keyboard)
Package keyboard contains the Gobot drivers for keyboard support.
Imported by 0 | v2.3.0 published on Jan 7, 2024 | Apache-2.0
keylogger (github.com/MarinX/keylogger)
Package keylogger is a go library for linux to capture keyboard events.
Imported by 24 | v0.0.0-...-a54d783 published on May 28, 2021 | MIT
terminput (github.com/tj/go-terminput)
Package terminput provides terminal keyboard input for interactive command-line tools.
Imported by 25 | v1.0.0 published on Nov 10, 2019 | MIT
keyboard (azul3d.org/engine/keyboard)
Package keyboard implements various keyboard related data types.
Imported by 19 | v0.0.0-...-793ea6c published on Oct 24, 2021 | BSD-3-Clause
keyboard (github.com/omustardo/gome/input/keyboard)
keyboard handles keyboard interaction with a glfw window.
Imported by 10 | v0.0.0-...-1050381 published on May 7, 2017 | MIT
key (github.com/goki/gi/oswin/key)
Package key defines an event for physical keyboard keys, for the GoGi GUI system.
Imported by 11 | v1.3.25 published on Oct 24, 2023 | BSD-3-Clause
key (goki.dev/goosi/events/key)
Package key defines an event for physical keyboard keys, for the GoGi GUI system.
Imported by 10 | v0.0.25 published on Dec 26, 2023 | BSD-3-Clause
keyboard (github.com/Pauloo27/keyboard)
Imported by 3 | v0.0.0-...-2640675 published on May 15, 2021 | MIT
keyboard (github.com/moutend/go-hook/pkg/keyboard)
Package keyboard provides low level hook for keyboard input.
Imported by 3 | v0.1.0 published on May 5, 2020 | MIT
kindleland (github.com/jim/kindleland)
Imported by 6 | v0.0.0-...-79f10e7 published on Mar 5, 2019 | AGPL-3.0
xel (github.com/amortaza/go-xel)
Imported by 12 | v0.0.0-...-37a8052 published on Sep 5, 2020 | MIT
keyboard (github.com/pwaller/keyboard)
Keyboard offers a universal keyboard shortcut binding interface for various backends.
Imported by 3 | v0.0.0-...-f32bd76 published on Oct 11, 2012 | BSD-1-Clause
p5 (github.com/go-p5/p5)
Package p5 provides types and functions to draw geometrical shapes on a canvas, interact with the mouse and keyboard, with the aim to learn programming with a graphics aid.
Imported by 4 | v0.14.0 published on Jan 2, 2024 | BSD-3-Clause
input (git.tebibyte.media/tomo/tomo/input)
Package input defines keyboard and mouse code constants.
Imported by 4 | v0.29.0 published on Sep 9, 2023 | GPL-3.0
keyboard (github.com/vendelin8/keyboard)
Imported by 1 | v0.0.0-...-fd5dc20 published on Apr 18, 2023 | MIT
keypress (github.com/gcla/gowid/widgets/keypress)
Package keypress provides a widget which responds to keyboard input.
Imported by 3 | v1.4.0 published on Jul 9, 2022 | MIT
keyboard (github.com/sago35/tinygo-keyboard)
Imported by 1 | v0.0.0-...-732c234 published on 2 days ago | MIT
keyboard (github.com/gowebapi/webapi/device/keyboard)
Package keyboard contains keybaord layout and ability to capture keys that are normally reserved by the underlying host operating system.
Imported by 1 | v0.0.0-...-41cedfc published on Dec 21, 2022 | BSD-3-Clause
getch (github.com/zetamatta/go-getch)
Imported by 5 | v0.0.0-...-31a2298 published on Dec 23, 2018 | BSD-3-Clause