Peristiwa keyboard terjadi ketika Anda menekan atau melepaskan kunci pada keyboard. Setiap acara mencakup informasi tentang modifier, karakter teks, dan kode kunci terkait untuk acara.
Banyak kontrol standar menggunakan KeyDownEvent
untuk mengkodekan perilaku shortcut atau aksesibilitas. Contoh berikut semua menggunakan peristiwa keyboard:
Toggle
dan Button
mendengarkan untuk menekan kunci Enter
dan Spacebar
sebagai tindakan penggantian untuk klik mouse.keyCode
dan properti karakter untuk mengeksekusi tindakan khusus atau menerima teks.Kelas dasar untuk semua peristiwa keyboard adalah Login Login.
Event | Description | Trickles down | Bubbles up | Cancellable |
---|---|---|---|---|
KeyDownEvent | Sent ketika pengguna menekan kunci pada keyboard. | Yes | Yes | Yes |
KeyUpEvent | Sent ketika pengguna melepaskan kunci pada keyboard. | Yes | Yes | Yes |
keyCode
: Properti keyCode
mengembalikan kunci karakter yang sesuai dengan kunci fisik pada perangkat input, seperti keyboard atau joystick. Perbedaan antara properti character
dan properti keyCode
adalah bahwa keyCode
mewakili kunci fisik, sementara character
mewakili entri karakter tertentu. Sebagai contoh, kedua a
dan A
kembali keyCode=KeyCode.A
selama keyDownEvent
.
character
: Properti character
mengembalikan kode karakter selama keyDownEvent
.
modifiers
: Properti modifiers
mengembalikan kunci pengubah yang diadakan. Beberapa contoh kunci pengubah adalah tombol Shift
, Ctrl
, atau Alt
.
Untuk informasi lebih lanjut, lihat dokumentasi MDN.Bagian kunci pengubah of the MDN documentation.
Daftar berikut menyediakan nama, deskripsi, dan target setiap acara dalam keluarga acara. Untuk informasi lebih lanjut tentang acara, lihat UI Toolkit API.
Sebuah KeyDownEvent dikirim setiap kali Anda menekan kunci pada keyboard. Kunci yang ditekan mengandung properti keyCode
untuk acara itu. Jika pers utama memiliki input teks yang terkait dengan itu, acara tambahan dikirim untuk setiap karakter input teks. Properti character
mengandung karakter untuk acara tersebut.
Ketika Anda menekan dan melepaskan a
, UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary Toolkit mengirim peristiwa berikut:
KeyDownEvent { keyCode=KeyCode.A }
KeyDownEvent { character=’a’ }
KeyUpEvent { keyCode=KeyCode.A }
Ketika Anda menekan dan melepaskan Ctrl+a
, UI Toolkit mengirim acara berikut:
KeyDownEvent { keyCode=KeyCode.LeftControl, modifiers=EventModifiers.Control }
KeyDownEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control }
KeyUpEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control }
KeyUpEvent { keyCode=KeyCode.LeftControl }
target
: Elemen visual yang memiliki fokus. Jika tidak ada elemen yang fokus, elemen visual akar panel.
A KeyUpEvent dikirim ketika Anda melepaskan kunci pada keyboard. Properti keyCode untuk acara tersebut berisi kunci yang dirilis. KeyDownEvent
memiliki acara tambahan yang dikirim ketika keystroke memiliki input teks yang terkait.
Ketika Anda menekan dan melepaskan a
, UI Toolkit mengirim acara berikut:
KeyDownEvent { keyCode=KeyCode.A }
KeyDownEvent { character=’a’ }
KeyUpEvent { keyCode=KeyCode.A }
Ketika Anda menekan dan melepaskan Ctrl+a
, UI Toolkit mengirim acara berikut:
KeyDownEvent { keyCode=KeyCode.LeftControl, modifiers=EventModifiers.Control }
KeyDownEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control }
KeyUpEvent { keyCode=KeyCode.A, modifiers=EventModifiers.Control }
KeyUpEvent { keyCode=KeyCode.LeftControl }
target
: Elemen visual yang memiliki fokus. Jika tidak ada elemen yang fokus, elemen visual akar panel.
Contoh kode berikut mencetak pesan ke konsol ketika pengguna menekan kunci dalam TextField. Sampel kode ini menyoroti pertarungan acara kedua KeyUpEvent
dan KeyDownEvent
.
Untuk melihat contoh dalam tindakan, lakukan berikut:
using UnityEngine;
using UnityEngine.UIElements;
// Add KeyboardEventTest to a GameObject with a valid UIDocument.
// When the user presses a key, it will print the keyboard event properties to the console.
[RequireComponent(typeof(UIDocument))]
public class KeyboardEventTest : MonoBehaviour
{
void OnEnable()
{
var root = GetComponent<UIDocument>().rootVisualElement;
root.Add(new Label("Press any key to see the keyDown properties"));
root.Add(new TextField());
root.Q<TextField>().Focus();
root.RegisterCallback<KeyDownEvent>(OnKeyDown, TrickleDown.TrickleDown);
root.RegisterCallback<KeyUpEvent>(OnKeyUp, TrickleDown.TrickleDown);
}
void OnKeyDown(KeyDownEvent ev)
{
Debug.Log("KeyDown:" + ev.keyCode);
Debug.Log("KeyDown:" + ev.character);
Debug.Log("KeyDown:" + ev.modifiers);
}
void OnKeyUp(KeyUpEvent ev)
{
Debug.Log("KeyUp:" + ev.keyCode);
Debug.Log("KeyUp:" + ev.character);
Debug.Log("KeyUp:" + ev.modifiers);
}
}