今天,我在我的應用程序中爲所有不同的鍵設置了輸入。除了虛擬鍵,例如插入符號或符號,這可以正常工作。通常需要轉換的鍵才能被使用。使用SDL這些虛擬鍵不起作用。就像他們沒有註冊一個事件一樣。SDL(和其他)虛擬鍵輸入
if (event.type == SDL_KEYDOWN) {
switch (event.key.keysym.sym) {
case SDLK_CARET:
Keys[KeyCodes::Caret] = KeyState::Down;
break;
case SDLK_UP:
Keys[KeyCodes::Up] = KeyState::Down;
break;
default:
break;
}
我絕對相信我的系統可以使用像Up這樣的物理按鍵。該程序像這樣查詢關鍵狀態:
if (Keys[KeyCode] == KeyState::Down) {
lua_pushboolean(L, true);
} else {
lua_pushboolean(L, false);
}
KeyCode作爲參數傳入。
那麼爲什麼虛擬鍵或需要轉換的鍵無法使用SDL的KeyDown事件類型工作?需要更多代碼才能找到它們?或者我是愚蠢的?
我可以問一下,是否註冊一個unicode事件,同時或不需要同時按shift鍵?還是我需要使用Key修飾符? – Constan7ine
要麼。在我的鍵盤上,6和^位於同一個鍵上。如果沒有移位,「unicode」是「6」。隨着轉變,「unicode」就是'^'。操作系統填寫它應該是什麼。所以不需要檢查關鍵修飾符。 – QuasarDonkey
這可能也會幫助你:http://ymackoverflow.com/questions/1403251/unicode-input-handling-in-games – QuasarDonkey