Hook dan REPL konsol

useInput, useFocus, useViewport, useConsoleStats, dan window.text.

Hook menghubungkan komponen ke input, fokus, dan viewport.

useInput

useInput((e) => {  if (e.key === "up") setIndex((i) => i - 1);  if (e.ctrl && e.key === "p") setPaletteOpen(true);});
KolomDeskripsi
key"up" "return" "escape" "tab"…
inputTeks yang dihasilkan tombol
ctrl meta shift altPengubah
stopPropagation()Hentikan handler dengan prioritas lebih rendah

Pintasan browser seperti ⌘⌥J dan ⌘R selalu diteruskan.

usePaste dan useWheel menerima opsi yang sama. ambient tidak berpengaruh pada useWheel.

OpsiDeskripsi
isActivefalse menonaktifkan handler tanpa melepas komponen (default true)
priorityPrioritas lebih tinggi berjalan lebih dulu (default 0). Komponen yang memiliki fokus menggunakan FOCUSED_INPUT_PRIORITY (10)
globalTetap menerima input saat <Modal> di luar komponen ini terbuka (default false)
ambientJangan hitung handler ini untuk petunjuk fokus (default false)

Pintasan Dev Overlay (F2 atau Ctrl+`) bersifat ambient, sehingga halaman tanpa input keyboard lain tidak menampilkan petunjuk.

useInput((e) => {  if (e.key === "f2") toggleOverlay();}, { ambient: true });

usePaste dan useWheel

usePaste((e) => insert(e.text));useWheel((e) => scrollBy(e.rows));

useKeyState (eksperimental)

@textjs/react/experimental mengekspor useKeyState untuk melacak tombol fisik yang ditahan berdasarkan KeyboardEvent.code ("KeyW", "ArrowUp", "ControlLeft"). Memeriksa keys.isDown(code) secara berkala atau membaca keys.pressed tidak memicu rendering ulang React. Berikan callback untuk merespons penekanan dan pelepasan tombol saat terjadi.

import { useKeyState } from "@textjs/react/experimental";const keys = useKeyState((e) => {  if (e.code === "Space" && e.down) fire();});

Tombol yang ditahan dilepas secara otomatis saat halaman kehilangan fokus. Lihat Perubahan yang memutus kompatibilitas untuk mengetahui cara pemberian versi ekspor eksperimental.

useViewport

const { cols, rows, focused, paused } = useViewport();

usePageFocus

usePageFocus() mengembalikan apakah halaman memiliki fokus. Penekanan tombol hanya diterima aplikasi saat halaman memiliki fokus. Nilainya sama dengan useViewport().focused, tetapi rendering ulang hanya terjadi saat fokus berubah.

const focused = usePageFocus();

Saat halaman tidak memiliki fokus dan aplikasi memiliki handler useInput atau usePaste, hook useKeyState, atau target fokus yang dapat dijangkau dengan Tab, baris terakhir frame konsol menjadi bilah kuning ambar bertuliskan “Klik halaman untuk menggunakan keyboard”. Handler bertanda ambient tidak dihitung. Petunjuk ini tidak muncul di terminal, dalam pengujian, atau pada cerminan inline. Setiap kali muncul, petunjuk berkedip selama sekitar 6 detik, kecuali setelan pengurangan gerakan sistem aktif. Untuk menentukan sendiri kapan petunjuk muncul, tetapkan focusHint: false di text.config.ts atau createConsoleRoot dan render <FocusHint>:

<FocusHint active={editing} />

useConsoleStats

const { totalMs, spanCount } = useConsoleStats({ interval: 250 });

useApp

const { exit, pause, resume } = useApp();

REPL window.text

Setiap aplikasi menambahkan fungsi pembantu ke window.text. Ketik fungsi tersebut di prompt DevTools.

text.help()text.resize(120, 36)   // pin the grid sizetext.responsive(true)  // fit the docked console againtext.pause()text.stats()text.wireframe()text.copyText()
Edit halaman ini di GitHub