njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
Nhập liệu

Phím bàn phím và action. Tiếp...

Classes

struct  njin::input_source
 Một nguồn nhập liệu: một phím, một nút chuột, hoặc một nút tay cầm. Tiếp...
struct  njin::binding
 Một nguồn viết gọn cho action_define(): truyền thẳng một phím, một nút chuột hoặc một nút tay cầm, không cần dựng njin::input_source. Tiếp...
struct  njin::axis_keys
 Một cặp phím của axis: phím cho chiều âm và phím cho chiều dương. Tiếp...

Enumerations

enum  njin::key_code {
  njin::key_none = 0 , njin::key_a , njin::key_b , njin::key_c ,
  njin::key_d , njin::key_e , njin::key_f , njin::key_g ,
  njin::key_h , njin::key_i , njin::key_j , njin::key_k ,
  njin::key_l , njin::key_m , njin::key_n , njin::key_o ,
  njin::key_p , njin::key_q , njin::key_r , njin::key_s ,
  njin::key_t , njin::key_u , njin::key_v , njin::key_w ,
  njin::key_x , njin::key_y , njin::key_z , njin::key_0 ,
  njin::key_1 , njin::key_2 , njin::key_3 , njin::key_4 ,
  njin::key_5 , njin::key_6 , njin::key_7 , njin::key_8 ,
  njin::key_9 , njin::key_f1 , njin::key_f2 , njin::key_f3 ,
  njin::key_f4 , njin::key_f5 , njin::key_f6 , njin::key_f7 ,
  njin::key_f8 , njin::key_f9 , njin::key_f10 , njin::key_f11 ,
  njin::key_f12 , njin::key_up , njin::key_down , njin::key_left ,
  njin::key_right , njin::key_home , njin::key_end , njin::key_page_up ,
  njin::key_page_down , njin::key_insert , njin::key_delete , njin::key_space ,
  njin::key_enter , njin::key_tab , njin::key_escape , njin::key_backspace ,
  njin::key_caps_lock , njin::key_scroll_lock , njin::key_num_lock , njin::key_print_screen ,
  njin::key_pause , njin::key_apostrophe , njin::key_comma , njin::key_minus ,
  njin::key_period , njin::key_slash , njin::key_semicolon , njin::key_equal ,
  njin::key_left_bracket , njin::key_backslash , njin::key_right_bracket , njin::key_grave ,
  njin::key_left_shift , njin::key_left_control , njin::key_left_alt , njin::key_left_super ,
  njin::key_right_shift , njin::key_right_control , njin::key_right_alt , njin::key_right_super ,
  njin::key_kp_0 , njin::key_kp_1 , njin::key_kp_2 , njin::key_kp_3 ,
  njin::key_kp_4 , njin::key_kp_5 , njin::key_kp_6 , njin::key_kp_7 ,
  njin::key_kp_8 , njin::key_kp_9 , njin::key_kp_decimal , njin::key_kp_divide ,
  njin::key_kp_multiply , njin::key_kp_subtract , njin::key_kp_add , njin::key_kp_enter ,
  njin::key_kp_equal , njin::key_count
}
 Mã phím bàn phím, dùng với key_pressed(), action_bind_key() và các hàm liên quan. Tiếp...
enum  njin::mouse_button {
  njin::mouse_left , njin::mouse_right , njin::mouse_middle , njin::mouse_side ,
  njin::mouse_extra , njin::mouse_forward , njin::mouse_back , njin::mouse_button_count
}
 Nút chuột, dùng với mouse_pressed(), action_bind_mouse() và các hàm liên quan. Tiếp...
enum  njin::gamepad_button {
  njin::pad_none , njin::pad_dpad_up , njin::pad_dpad_right , njin::pad_dpad_down ,
  njin::pad_dpad_left , njin::pad_face_up , njin::pad_face_right , njin::pad_face_down ,
  njin::pad_face_left , njin::pad_l1 , njin::pad_l2 , njin::pad_r1 ,
  njin::pad_r2 , njin::pad_select , njin::pad_guide , njin::pad_start ,
  njin::pad_left_thumb , njin::pad_right_thumb , njin::gamepad_button_count
}
 Nút tay cầm, dùng với pad_pressed(), action_bind_pad() và các hàm liên quan. Tiếp...
enum  njin::gamepad_axis {
  njin::pad_axis_left_x , njin::pad_axis_left_y , njin::pad_axis_right_x , njin::pad_axis_right_y ,
  njin::pad_axis_left_trigger , njin::pad_axis_right_trigger , njin::gamepad_axis_count
}
 Trục analog của tay cầm, dùng với pad_axis() và axis_bind_pad(). Tiếp...

Các hàm

const char * njin::input_source_name (input_source source)
 Tên hiển thị của một nguồn, bằng tiếng Anh ngắn như trên bàn phím: "Space", "A", "Left Shift", "Mouse Left", "Pad A" (theo vị trí nút của Xbox).
const char * njin::key_name (key_code key)
 Tên hiển thị của một phím.
bool njin::input_any_pressed (const context &ctx, input_source &out)
 Nguồn vừa được nhấn ở frame này, nếu có: dùng cho màn hình "bấm phím mới".
std::vector< input_source > njin::action_sources (const context &ctx, action_handle action)
 Các nguồn đang gắn vào một action, theo thứ tự: phím, chuột, tay cầm.
void njin::action_bind (context &ctx, action_handle action, input_source source)
 Gắn một nguồn vào action (như action_bind_key(), action_bind_mouse(), action_bind_pad() tùy loại).
void njin::action_unbind (context &ctx, action_handle action, input_source source)
 Gỡ một nguồn khỏi action.
void njin::action_rebind (context &ctx, action_handle action, input_source source)
 Gắn source vào action thay cho nguồn cùng loại đang có (phím thay phím, nút tay cầm thay nút tay cầm), và gỡ nó khỏi mọi action khác để một phím không làm hai việc.
action_handle njin::action_define (context &ctx, const char *name, std::initializer_list< binding > sources)
 Đăng ký một action và gắn mọi nguồn của nó trong một lời gọi.
axis_handle njin::axis_define (context &ctx, const char *name, std::initializer_list< axis_keys > keys, std::initializer_list< gamepad_axis > pads={})
 Đăng ký một axis và gắn mọi cặp phím và trục tay cầm của nó trong một lời gọi.
json_value njin::input_bindings_save (const context &ctx)
 Mọi phím đã gắn (action và axis) dạng JSON, để lưu vào file cài đặt: {"actions": {"jump": ["key:space", "pad:face_down"]}, "axes": {"move": {"keys": [["left", "right"]], "pad": ["left_x"]}}}.
bool njin::input_bindings_load (context &ctx, const json_value &json)
 Nạp phím từ JSON của input_bindings_save().
void njin::pad_rumble (context &ctx, i32 pad, f32 low, f32 high, f32 seconds)
 Rung tay cầm.
bool njin::key_pressed (const context &ctx, key_code key)
 Đúng ở frame mà phím vừa được nhấn xuống (chỉ một frame).
bool njin::key_held (const context &ctx, key_code key)
 Đúng khi phím đã được giữ từ frame trước và vẫn đang giữ.
bool njin::key_released (const context &ctx, key_code key)
 Đúng ở frame mà phím vừa được thả ra (chỉ một frame).
action_handle njin::action_register (context &ctx, const char *name)
 Đăng ký một action có tên.
action_handle njin::action_find (const context &ctx, const char *name)
 Tìm action theo tên.
void njin::action_bind_key (context &ctx, action_handle handle, key_code key)
 Gắn một phím vào action.
void njin::action_bind_mouse (context &ctx, action_handle handle, mouse_button button)
 Gắn một nút chuột vào action.
void njin::action_bind_pad (context &ctx, action_handle handle, gamepad_button button)
 Gắn một nút tay cầm vào action.
void njin::action_clear_binds (context &ctx, action_handle handle)
 Xóa mọi phím, nút chuột và nút tay cầm đã gắn vào action.
bool njin::action_pressed (const context &ctx, action_handle handle)
 Đúng ở frame mà một trong các nguồn của action (phím, nút chuột, nút tay cầm) vừa được nhấn.
bool njin::action_held (const context &ctx, action_handle handle)
 Đúng khi một trong các nguồn của action đã được giữ từ frame trước và vẫn đang giữ.
bool njin::action_released (const context &ctx, action_handle handle)
 Đúng ở frame mà một trong các nguồn của action vừa được thả.
vec2 njin::mouse_pos (const context &ctx)
 Vị trí con trỏ chuột, tính bằng pixel màn hình.
vec2 njin::mouse_delta (const context &ctx)
 Độ dời của chuột so với frame trước, tính bằng pixel.
f32 njin::mouse_wheel (const context &ctx)
 Số nấc cuộn bánh xe chuột trong frame này.
bool njin::mouse_pressed (const context &ctx, mouse_button button)
 Đúng ở frame mà nút chuột vừa được nhấn xuống (chỉ một frame).
bool njin::mouse_held (const context &ctx, mouse_button button)
 Đúng khi nút chuột đã được giữ từ frame trước và vẫn đang giữ.
bool njin::mouse_released (const context &ctx, mouse_button button)
 Đúng ở frame mà nút chuột vừa được thả (chỉ một frame).
bool njin::pad_available (const context &ctx, i32 pad)
 Tay cầm số pad có đang được cắm không.
bool njin::pad_pressed (const context &ctx, i32 pad, gamepad_button button)
 Đúng ở frame mà nút tay cầm vừa được nhấn xuống (chỉ một frame).
bool njin::pad_held (const context &ctx, i32 pad, gamepad_button button)
 Đúng khi nút tay cầm đã được giữ từ frame trước và vẫn đang giữ.
bool njin::pad_released (const context &ctx, i32 pad, gamepad_button button)
 Đúng ở frame mà nút tay cầm vừa được thả (chỉ một frame).
f32 njin::pad_axis (const context &ctx, i32 pad, gamepad_axis axis)
 Giá trị một trục analog của tay cầm.
void njin::pad_set_deadzone (context &ctx, f32 deadzone)
 Đặt vùng chết cho mọi cần trên mọi tay cầm.
i32 njin::text_count (const context &ctx)
 Số ký tự đã gõ trong frame này.
i32 njin::text_char (const context &ctx, i32 index)
 Mã Unicode của ký tự thứ index đã gõ trong frame này, theo thứ tự gõ.
void njin::key_consume (context &ctx, key_code key)
 Xóa trạng thái của một phím trong phần còn lại của frame.
void njin::mouse_consume (context &ctx, mouse_button button)
 Xóa trạng thái của một nút chuột trong phần còn lại của frame.
void njin::mouse_wheel_consume (context &ctx)
 Xóa cuộn bánh xe trong phần còn lại của frame.
axis_handle njin::axis_register (context &ctx, const char *name)
 Đăng ký một axis có tên.
axis_handle njin::axis_find (const context &ctx, const char *name)
 Tìm axis theo tên.
void njin::axis_bind_keys (context &ctx, axis_handle handle, key_code negative, key_code positive)
 Gắn một cặp phím vào axis, đóng vai một cần analog.
void njin::axis_bind_pad (context &ctx, axis_handle handle, gamepad_axis axis)
 Gắn một trục tay cầm vào axis.
void njin::axis_clear_binds (context &ctx, axis_handle handle)
 Xóa mọi cặp phím và trục tay cầm đã gắn vào axis.
f32 njin::axis_value (const context &ctx, axis_handle handle)
 Giá trị hiện tại của axis.

Các biến

constexpr i32 njin::gamepad_max = 4
 Số tay cầm tối đa được theo dõi. Chỉ số tay cầm hợp lệ là 0..gamepad_max-1.

Mô tả chi tiết

Phím bàn phím và action.

Thông tin về Enumeration Type

◆ key_code

Mã phím bàn phím, dùng với key_pressed(), action_bind_key() và các hàm liên quan.

Enumerator
key_none 

Không có phím. Không hợp lệ khi bind hay truy vấn.

key_a 

Phím A.

key_b 

Phím B.

key_c 

Phím C.

key_d 

Phím D.

key_e 

Phím E.

key_f 

Phím F.

key_g 

Phím G.

key_h 

Phím H.

key_i 

Phím I.

key_j 

Phím J.

key_k 

Phím K.

key_l 

Phím L.

key_m 

Phím M.

key_n 

Phím N.

key_o 

Phím O.

key_p 

Phím P.

key_q 

Phím Q.

key_r 

Phím R.

key_s 

Phím S.

key_t 

Phím T.

key_u 

Phím U.

key_v 

Phím V.

key_w 

Phím W.

key_x 

Phím X.

key_y 

Phím Y.

key_z 

Phím Z.

key_0 

Phím 0 (hàng số).

key_1 

Phím 1 (hàng số).

key_2 

Phím 2 (hàng số).

key_3 

Phím 3 (hàng số).

key_4 

Phím 4 (hàng số).

key_5 

Phím 5 (hàng số).

key_6 

Phím 6 (hàng số).

key_7 

Phím 7 (hàng số).

key_8 

Phím 8 (hàng số).

key_9 

Phím 9 (hàng số).

key_f1 

Phím F1.

key_f2 

Phím F2.

key_f3 

Phím F3.

key_f4 

Phím F4.

key_f5 

Phím F5.

key_f6 

Phím F6.

key_f7 

Phím F7.

key_f8 

Phím F8.

key_f9 

Phím F9.

key_f10 

Phím F10.

key_f11 

Phím F11.

key_f12 

Phím F12.

key_up 

Mũi tên lên.

key_down 

Mũi tên xuống.

key_left 

Mũi tên trái.

key_right 

Mũi tên phải.

key_home 

Home.

key_end 

End.

key_page_up 

Page Up.

key_page_down 

Page Down.

key_insert 

Insert.

key_delete 

Delete.

key_space 

Phím cách.

key_enter 

Enter.

key_tab 

Tab.

key_escape 

Esc.

key_backspace 

Backspace.

key_caps_lock 

Caps Lock.

key_scroll_lock 

Scroll Lock.

key_num_lock 

Num Lock.

key_print_screen 

Print Screen.

key_pause 

Pause/Break.

key_apostrophe 

Dấu nháy đơn.

key_comma 

Dấu phẩy.

key_minus 

Dấu trừ

key_period 

Dấu chấm.

key_slash 

Dấu gạch chéo.

key_semicolon 

Dấu chấm phẩy.

key_equal 

Dấu bằng.

key_left_bracket 

Ngoặc vuông trái.

key_backslash 

Dấu gạch chéo ngược.

key_right_bracket 

Ngoặc vuông phải.

key_grave 

Dấu huyền.

key_left_shift 

Shift trái.

key_left_control 

Ctrl trái.

key_left_alt 

Alt trái.

key_left_super 

Windows/Super trái.

key_right_shift 

Shift phải.

key_right_control 

Ctrl phải.

key_right_alt 

Alt phải.

key_right_super 

Windows/Super phải.

key_kp_0 

Bàn phím số: 0.

key_kp_1 

Bàn phím số: 1.

key_kp_2 

Bàn phím số: 2.

key_kp_3 

Bàn phím số: 3.

key_kp_4 

Bàn phím số: 4.

key_kp_5 

Bàn phím số: 5.

key_kp_6 

Bàn phím số: 6.

key_kp_7 

Bàn phím số: 7.

key_kp_8 

Bàn phím số: 8.

key_kp_9 

Bàn phím số: 9.

key_kp_decimal 

Bàn phím số: dấu thập phân.

key_kp_divide 

Bàn phím số: chia.

key_kp_multiply 

Bàn phím số: nhân.

key_kp_subtract 

Bàn phím số: trừ

key_kp_add 

Bàn phím số: cộng.

key_kp_enter 

Bàn phím số: Enter.

key_kp_equal 

Bàn phím số: bằng.

key_count 

Số lượng mã phím. Không phải một phím thật.

◆ mouse_button

Nút chuột, dùng với mouse_pressed(), action_bind_mouse() và các hàm liên quan.

Enumerator
mouse_left 

Chuột trái.

mouse_right 

Chuột phải.

mouse_middle 

Chuột giữa (nhấn bánh xe).

mouse_side 

Nút bên.

mouse_extra 

Nút phụ.

mouse_forward 

Nút tiến.

mouse_back 

Nút lùi.

mouse_button_count 

Số lượng nút chuột. Không phải một nút thật.

◆ gamepad_button

Nút tay cầm, dùng với pad_pressed(), action_bind_pad() và các hàm liên quan.

Tên nút mặt theo vị trí, không theo nhãn: pad_face_down là A trên Xbox và Cross (X) trên PlayStation.

Enumerator
pad_none 

Không có nút. Không hợp lệ khi bind hay truy vấn.

pad_dpad_up 

D-pad lên.

pad_dpad_right 

D-pad phải.

pad_dpad_down 

D-pad xuống.

pad_dpad_left 

D-pad trái.

pad_face_up 

Nút mặt trên (Y trên Xbox, Tam giác trên PlayStation).

pad_face_right 

Nút mặt phải (B trên Xbox, Tròn trên PlayStation).

pad_face_down 

Nút mặt dưới (A trên Xbox, Chéo trên PlayStation).

pad_face_left 

Nút mặt trái (X trên Xbox, Vuông trên PlayStation).

pad_l1 

Nút vai trái.

pad_l2 

Cò trái, đọc như nút.

pad_r1 

Nút vai phải.

pad_r2 

Cò phải, đọc như nút.

pad_select 

Nút Select / Back / Share.

pad_guide 

Nút Guide / Home.

pad_start 

Nút Start / Menu.

pad_left_thumb 

Nhấn cần trái.

pad_right_thumb 

Nhấn cần phải.

gamepad_button_count 

Số lượng nút tay cầm. Không phải một nút thật.

◆ gamepad_axis

Trục analog của tay cầm, dùng với pad_axis() và axis_bind_pad().

Enumerator
pad_axis_left_x 

Cần trái, trục ngang (-1 là trái, 1 là phải).

pad_axis_left_y 

Cần trái, trục dọc (-1 là lên, 1 là xuống).

pad_axis_right_x 

Cần phải, trục ngang.

pad_axis_right_y 

Cần phải, trục dọc.

pad_axis_left_trigger 

Cò trái. Nghỉ ở -1, nhấn hết đọc 1.

pad_axis_right_trigger 

Cò phải. Nghỉ ở -1, nhấn hết đọc 1.

gamepad_axis_count 

Số lượng trục. Không phải một trục thật.

Thông tin về hàm

◆ input_source_name()

const char * njin::input_source_name ( input_source source)

Tên hiển thị của một nguồn, bằng tiếng Anh ngắn như trên bàn phím: "Space", "A", "Left Shift", "Mouse Left", "Pad A" (theo vị trí nút của Xbox).

Các tham số
sourceNguồn.
Giá trị trả về
Chuỗi tĩnh, không bao giờ null ("?" nếu không hợp lệ).

◆ key_name()

const char * njin::key_name ( key_code key)

Tên hiển thị của một phím.

Xem input_source_name().

Các tham số
keyPhím.
Giá trị trả về
Chuỗi tĩnh.

◆ input_any_pressed()

bool njin::input_any_pressed ( const context & ctx,
input_source & out )

Nguồn vừa được nhấn ở frame này, nếu có: dùng cho màn hình "bấm phím mới".

Xét bàn phím trước, rồi chuột, rồi mọi tay cầm.

Các tham số
ctxContext của engine.
outNhận nguồn vừa nhấn.
Giá trị trả về
true nếu có một nguồn vừa được nhấn.

◆ action_sources()

std::vector< input_source > njin::action_sources ( const context & ctx,
action_handle action )

Các nguồn đang gắn vào một action, theo thứ tự: phím, chuột, tay cầm.

Các tham số
ctxContext của engine.
actionAction.
Giá trị trả về
Danh sách nguồn (rỗng nếu handle không hợp lệ).

◆ action_bind()

void njin::action_bind ( context & ctx,
action_handle action,
input_source source )

Gắn một nguồn vào action (như action_bind_key(), action_bind_mouse(), action_bind_pad() tùy loại).

Các tham số
ctxContext của engine.
actionAction.
sourceNguồn.

◆ action_unbind()

void njin::action_unbind ( context & ctx,
action_handle action,
input_source source )

Gỡ một nguồn khỏi action.

Các tham số
ctxContext của engine.
actionAction.
sourceNguồn.

◆ action_rebind()

void njin::action_rebind ( context & ctx,
action_handle action,
input_source source )

Gắn source vào action thay cho nguồn cùng loại đang có (phím thay phím, nút tay cầm thay nút tay cầm), và gỡ nó khỏi mọi action khác để một phím không làm hai việc.

Đây là việc một màn hình đổi phím cần.

Các tham số
ctxContext của engine.
actionAction.
sourceNguồn mới.

◆ action_define()

action_handle njin::action_define ( context & ctx,
const char * name,
std::initializer_list< binding > sources )
inline

Đăng ký một action và gắn mọi nguồn của nó trong một lời gọi.

Thay cho action_register() rồi action_bind_key(), action_bind_mouse(), action_bind_pad() lần lượt:

action_handle action_define(context &ctx, const char *name, std::initializer_list< binding > sources)
Đăng ký một action và gắn mọi nguồn của nó trong một lời gọi.
Definition njin_bindings.h:102
@ pad_face_down
Nút mặt dưới (A trên Xbox, Chéo trên PlayStation).
Definition _types.h:497
@ key_space
Phím cách.
Definition _types.h:411
@ key_w
Phím W.
Definition _types.h:366

Nếu tên đã có thì các nguồn được thêm vào action đó, như action_bind(). Gọi trước settings_load() hay input_bindings_load(): phím người chơi đã đổi sẽ thay các phím mặc định này.

Các tham số
ctxContext của engine.
nameTên action.
sourcesCác phím, nút chuột và nút tay cầm, theo bất kỳ thứ tự nào.
Giá trị trả về
Handle của action, hoặc handle không hợp lệ (id 0) nếu name là null.

◆ axis_define()

axis_handle njin::axis_define ( context & ctx,
const char * name,
std::initializer_list< axis_keys > keys,
std::initializer_list< gamepad_axis > pads = {} )
inline

Đăng ký một axis và gắn mọi cặp phím và trục tay cầm của nó trong một lời gọi.

Thay cho axis_register() rồi axis_bind_keys(), axis_bind_pad() lần lượt:

g.move = njin::axis_define(ctx, "move",
axis_handle axis_define(context &ctx, const char *name, std::initializer_list< axis_keys > keys, std::initializer_list< gamepad_axis > pads={})
Đăng ký một axis và gắn mọi cặp phím và trục tay cầm của nó trong một lời gọi.
Definition njin_bindings.h:129
@ pad_axis_left_x
Cần trái, trục ngang (-1 là trái, 1 là phải).
Definition _types.h:513
@ key_right
Mũi tên phải.
Definition _types.h:401
@ key_d
Phím D.
Definition _types.h:347
@ key_a
Phím A.
Definition _types.h:344
@ key_left
Mũi tên trái.
Definition _types.h:400

Nếu tên đã có thì các nguồn được thêm vào axis đó. Gọi trước settings_load().

Các tham số
ctxContext của engine.
nameTên axis.
keysCác cặp phím (âm, dương).
padsCác trục tay cầm. Có thể bỏ trống.
Giá trị trả về
Handle của axis, hoặc handle không hợp lệ (id 0) nếu name là null.

◆ input_bindings_save()

json_value njin::input_bindings_save ( const context & ctx)

Mọi phím đã gắn (action và axis) dạng JSON, để lưu vào file cài đặt: {"actions": {"jump": ["key:space", "pad:face_down"]}, "axes": {"move": {"keys": [["left", "right"]], "pad": ["left_x"]}}}.

Các tham số
ctxContext của engine.
Giá trị trả về
Object JSON.

◆ input_bindings_load()

bool njin::input_bindings_load ( context & ctx,
const json_value & json )

Nạp phím từ JSON của input_bindings_save().

Action và axis có trong JSON được thay toàn bộ phím; cái không có giữ nguyên, nên thêm action mới trong bản cập nhật game vẫn có phím mặc định. Tên lạ bị bỏ qua (có log).

Các tham số
ctxContext của engine.
jsonDữ liệu.
Giá trị trả về
false nếu json không phải object.

◆ pad_rumble()

void njin::pad_rumble ( context & ctx,
i32 pad,
f32 low,
f32 high,
f32 seconds )

Rung tay cầm.

Các tham số
ctxContext của engine.
padChỉ số tay cầm.
lowĐộ mạnh mô-tơ trái (rung trầm), 0..1.
highĐộ mạnh mô-tơ phải (rung nhanh), 0..1.
secondsThời gian rung.

◆ key_pressed()

bool njin::key_pressed ( const context & ctx,
key_code key )

Đúng ở frame mà phím vừa được nhấn xuống (chỉ một frame).

Các tham số
ctxContext của engine.
keyPhím cần kiểm tra.
Giá trị trả về
true ở frame phím vừa được nhấn.

◆ key_held()

bool njin::key_held ( const context & ctx,
key_code key )

Đúng khi phím đã được giữ từ frame trước và vẫn đang giữ.

Lưu ý: ở frame nhấn đầu tiên hàm này trả về false (lúc đó key_pressed() trả về true). Muốn biết phím có đang được ấn hay không thì dùng key_pressed(...) || key_held(...).

Các tham số
ctxContext của engine.
keyPhím cần kiểm tra.
Giá trị trả về
true nếu phím đã được giữ từ frame trước và vẫn đang giữ.

◆ key_released()

bool njin::key_released ( const context & ctx,
key_code key )

Đúng ở frame mà phím vừa được thả ra (chỉ một frame).

Các tham số
ctxContext của engine.
keyPhím cần kiểm tra.
Giá trị trả về
true ở frame phím vừa được thả.

◆ action_register()

action_handle njin::action_register ( context & ctx,
const char * name )

Đăng ký một action có tên.

Nếu tên đã tồn tại thì trả về handle cũ.

Action là một tên logic (ví dụ "jump") có thể gắn với một hoặc nhiều phím.

Các tham số
ctxContext của engine.
nameTên action.
Giá trị trả về
Handle của action, hoặc handle không hợp lệ (id 0) nếu name là null.

◆ action_find()

action_handle njin::action_find ( const context & ctx,
const char * name )

Tìm action theo tên.

Các tham số
ctxContext của engine.
nameTên action.
Giá trị trả về
Handle của action, hoặc handle không hợp lệ (id 0) nếu không có.

◆ action_bind_key()

void njin::action_bind_key ( context & ctx,
action_handle handle,
key_code key )

Gắn một phím vào action.

Có thể gắn nhiều phím vào cùng một action.

Các tham số
ctxContext của engine.
handleAction cần gắn.
keyPhím cần gắn. Phím không hợp lệ bị bỏ qua.

◆ action_bind_mouse()

void njin::action_bind_mouse ( context & ctx,
action_handle handle,
mouse_button button )

Gắn một nút chuột vào action.

Có thể gắn lẫn phím, nút chuột và nút tay cầm vào cùng một action: nguồn nào thỏa cũng làm action thỏa.

Các tham số
ctxContext của engine.
handleAction cần gắn.
buttonNút chuột cần gắn. Nút không hợp lệ bị bỏ qua.

◆ action_bind_pad()

void njin::action_bind_pad ( context & ctx,
action_handle handle,
gamepad_button button )

Gắn một nút tay cầm vào action.

Bất kỳ tay cầm nào đang cắm đều thỏa.

Các tham số
ctxContext của engine.
handleAction cần gắn.
buttonNút tay cầm cần gắn. Nút không hợp lệ bị bỏ qua.

◆ action_clear_binds()

void njin::action_clear_binds ( context & ctx,
action_handle handle )

Xóa mọi phím, nút chuột và nút tay cầm đã gắn vào action.

Đổi phím trong lúc chạy là gọi hàm này rồi bind lại. Dùng được ở mọi lúc, không chỉ trong setup.

Các tham số
ctxContext của engine.
handleAction cần xóa.

◆ action_pressed()

bool njin::action_pressed ( const context & ctx,
action_handle handle )

Đúng ở frame mà một trong các nguồn của action (phím, nút chuột, nút tay cầm) vừa được nhấn.

Các tham số
ctxContext của engine.
handleAction cần kiểm tra.
Giá trị trả về
true ở frame một nguồn của action vừa được nhấn. false nếu handle không hợp lệ.

◆ action_held()

bool njin::action_held ( const context & ctx,
action_handle handle )

Đúng khi một trong các nguồn của action đã được giữ từ frame trước và vẫn đang giữ.

Cùng quy tắc với key_held().

Các tham số
ctxContext của engine.
handleAction cần kiểm tra.
Giá trị trả về
true nếu một nguồn của action đang được giữ. false nếu handle không hợp lệ.

◆ action_released()

bool njin::action_released ( const context & ctx,
action_handle handle )

Đúng ở frame mà một trong các nguồn của action vừa được thả.

Các tham số
ctxContext của engine.
handleAction cần kiểm tra.
Giá trị trả về
true ở frame một nguồn của action vừa được thả. false nếu handle không hợp lệ.

◆ mouse_pos()

vec2 njin::mouse_pos ( const context & ctx)

Vị trí con trỏ chuột, tính bằng pixel màn hình.

Không qua camera. Dùng scr2w() để đổi sang vị trí trong thế giới.

Các tham số
ctxContext của engine.
Giá trị trả về
Vị trí con trỏ chuột.

◆ mouse_delta()

vec2 njin::mouse_delta ( const context & ctx)

Độ dời của chuột so với frame trước, tính bằng pixel.

Các tham số
ctxContext của engine.
Giá trị trả về
Độ dời của chuột.

◆ mouse_wheel()

f32 njin::mouse_wheel ( const context & ctx)

Số nấc cuộn bánh xe chuột trong frame này.

Dương là cuộn ra xa người dùng. Đa số frame trả về 0.

Các tham số
ctxContext của engine.
Giá trị trả về
Số nấc cuộn.

◆ mouse_pressed()

bool njin::mouse_pressed ( const context & ctx,
mouse_button button )

Đúng ở frame mà nút chuột vừa được nhấn xuống (chỉ một frame).

Các tham số
ctxContext của engine.
buttonNút cần kiểm tra.
Giá trị trả về
true ở frame nút vừa được nhấn.

◆ mouse_held()

bool njin::mouse_held ( const context & ctx,
mouse_button button )

Đúng khi nút chuột đã được giữ từ frame trước và vẫn đang giữ.

Cùng quy tắc với key_held(): ở frame nhấn đầu tiên trả về false.

Các tham số
ctxContext của engine.
buttonNút cần kiểm tra.
Giá trị trả về
true nếu nút đã được giữ từ frame trước và vẫn đang giữ.

◆ mouse_released()

bool njin::mouse_released ( const context & ctx,
mouse_button button )

Đúng ở frame mà nút chuột vừa được thả (chỉ một frame).

Các tham số
ctxContext của engine.
buttonNút cần kiểm tra.
Giá trị trả về
true ở frame nút vừa được thả.

◆ pad_available()

bool njin::pad_available ( const context & ctx,
i32 pad )

Tay cầm số pad có đang được cắm không.

Chưa cắm thì mọi hàm pad_* đọc như không nhấn, không báo lỗi.

Các tham số
ctxContext của engine.
padChỉ số tay cầm, từ 0 đến gamepad_max - 1.
Giá trị trả về
true nếu tay cầm đang cắm.

◆ pad_pressed()

bool njin::pad_pressed ( const context & ctx,
i32 pad,
gamepad_button button )

Đúng ở frame mà nút tay cầm vừa được nhấn xuống (chỉ một frame).

Các tham số
ctxContext của engine.
padChỉ số tay cầm, từ 0 đến gamepad_max - 1.
buttonNút cần kiểm tra.
Giá trị trả về
true ở frame nút vừa được nhấn. false nếu tay cầm chưa cắm.

◆ pad_held()

bool njin::pad_held ( const context & ctx,
i32 pad,
gamepad_button button )

Đúng khi nút tay cầm đã được giữ từ frame trước và vẫn đang giữ.

Cùng quy tắc với key_held().

Các tham số
ctxContext của engine.
padChỉ số tay cầm, từ 0 đến gamepad_max - 1.
buttonNút cần kiểm tra.
Giá trị trả về
true nếu nút đã được giữ từ frame trước và vẫn đang giữ.

◆ pad_released()

bool njin::pad_released ( const context & ctx,
i32 pad,
gamepad_button button )

Đúng ở frame mà nút tay cầm vừa được thả (chỉ một frame).

Các tham số
ctxContext của engine.
padChỉ số tay cầm, từ 0 đến gamepad_max - 1.
buttonNút cần kiểm tra.
Giá trị trả về
true ở frame nút vừa được thả.

◆ pad_axis()

f32 njin::pad_axis ( const context & ctx,
i32 pad,
gamepad_axis axis )

Giá trị một trục analog của tay cầm.

Đã qua vùng chết và được co giãn lại, nên rời khỏi 0 một cách mượt thay vì nhảy bậc. Cò nghỉ ở -1 và đọc 1 khi nhấn hết (theo quy ước của raylib, không đổi lại).

Các tham số
ctxContext của engine.
padChỉ số tay cầm, từ 0 đến gamepad_max - 1.
axisTrục cần đọc.
Giá trị trả về
Giá trị từ -1 đến 1, hoặc 0 nếu tay cầm chưa cắm.

◆ pad_set_deadzone()

void njin::pad_set_deadzone ( context & ctx,
f32 deadzone )

Đặt vùng chết cho mọi cần trên mọi tay cầm.

Mặc định 0.15.

Các tham số
ctxContext của engine.
deadzoneVùng chết, được giới hạn trong khoảng 0 đến 0.95.

◆ text_count()

i32 njin::text_count ( const context & ctx)

Số ký tự đã gõ trong frame này.

Ký tự đã qua bố cục bàn phím của hệ điều hành và phím chết. Đây là thứ một ô nhập văn bản cần; còn key_pressed() là thứ một phím tắt cần, hai câu hỏi khác nhau.

Các tham số
ctxContext của engine.
Giá trị trả về
Số ký tự, tối đa 32 mỗi frame.

◆ text_char()

i32 njin::text_char ( const context & ctx,
i32 index )

Mã Unicode của ký tự thứ index đã gõ trong frame này, theo thứ tự gõ.

Các tham số
ctxContext của engine.
indexChỉ số, từ 0 đến text_count() - 1.
Giá trị trả về
Mã Unicode, hoặc 0 nếu index ngoài phạm vi.

◆ key_consume()

void njin::key_consume ( context & ctx,
key_code key )

Xóa trạng thái của một phím trong phần còn lại của frame.

System chạy sau đó không thấy phím này được nhấn hay giữ. Đây là cách một menu nuốt phím trước khi thế giới bên dưới xử lý cùng phím đó. Trạng thái được đọc lại ở frame sau, nên hiệu lực không kéo dài quá frame gọi nó.

Các tham số
ctxContext của engine.
keyPhím cần xóa.

◆ mouse_consume()

void njin::mouse_consume ( context & ctx,
mouse_button button )

Xóa trạng thái của một nút chuột trong phần còn lại của frame.

Xem key_consume().

Các tham số
ctxContext của engine.
buttonNút cần xóa.

◆ mouse_wheel_consume()

void njin::mouse_wheel_consume ( context & ctx)

Xóa cuộn bánh xe trong phần còn lại của frame.

Xem key_consume().

Các tham số
ctxContext của engine.

◆ axis_register()

axis_handle njin::axis_register ( context & ctx,
const char * name )

Đăng ký một axis có tên.

Nếu tên đã tồn tại thì trả về handle cũ.

Axis đọc giá trị từ -1 đến 1, khác action là đúng hoặc sai. Muốn một vector hai chiều thì đọc hai axis rồi ghép lại: chỉ người gọi biết có cần chuẩn hóa vector đó hay không.

Các tham số
ctxContext của engine.
nameTên axis.
Giá trị trả về
Handle của axis, hoặc handle không hợp lệ (id 0) nếu name là null.

◆ axis_find()

axis_handle njin::axis_find ( const context & ctx,
const char * name )

Tìm axis theo tên.

Các tham số
ctxContext của engine.
nameTên axis.
Giá trị trả về
Handle của axis, hoặc handle không hợp lệ (id 0) nếu không có.

◆ axis_bind_keys()

void njin::axis_bind_keys ( context & ctx,
axis_handle handle,
key_code negative,
key_code positive )

Gắn một cặp phím vào axis, đóng vai một cần analog.

Chỉ phím âm thì đọc -1, chỉ phím dương thì đọc 1, cả hai hoặc không phím nào thì đọc 0.

Các tham số
ctxContext của engine.
handleAxis cần gắn.
negativePhím cho chiều âm.
positivePhím cho chiều dương.

◆ axis_bind_pad()

void njin::axis_bind_pad ( context & ctx,
axis_handle handle,
gamepad_axis axis )

Gắn một trục tay cầm vào axis.

Bất kỳ tay cầm nào đang cắm đều được đọc.

Các tham số
ctxContext của engine.
handleAxis cần gắn.
axisTrục tay cầm cần gắn. Trục không hợp lệ bị bỏ qua.

◆ axis_clear_binds()

void njin::axis_clear_binds ( context & ctx,
axis_handle handle )

Xóa mọi cặp phím và trục tay cầm đã gắn vào axis.

Các tham số
ctxContext của engine.
handleAxis cần xóa.

◆ axis_value()

f32 njin::axis_value ( const context & ctx,
axis_handle handle )

Giá trị hiện tại của axis.

Nguồn nào lệch xa vị trí nghỉ nhất thì thắng, nên cần đẩy nửa chừng không bị cặp phím đang đứng yên ở 0 làm phẳng, và ngược lại.

Các tham số
ctxContext của engine.
handleAxis cần đọc.
Giá trị trả về
Giá trị từ -1 đến 1, hoặc 0 nếu handle không hợp lệ.