คำถามติดแท็ก keyboard

5
การจัดการระบบป้อนข้อมูลด้วยแป้นพิมพ์
หมายเหตุ: ฉันต้องสำรวจแทนที่จะโทรกลับเนื่องจากข้อ จำกัด API (SFML) ฉันยังขอโทษที่ไม่มีชื่อ 'ที่เหมาะสม' ฉันคิดว่าฉันมีสองคำถามที่นี่; วิธีการลงทะเบียนข้อมูลที่ฉันได้รับและจะทำอย่างไรกับมัน การจัดการอินพุต ฉันกำลังพูดถึงหลังจากที่คุณได้ลงทะเบียนว่ามีการกดแป้น 'A' ตัวอย่างเช่นและวิธีการทำจากที่นั่น ฉันเคยเห็นชุดแป้นพิมพ์ทั้งหมดเช่น: bool keyboard[256]; //And each input loop check the state of every key on the keyboard แต่ดูเหมือนว่าจะไม่มีประสิทธิภาพ ไม่เพียง แต่คุณจะมีการเชื่อมต่อปุ่ม 'A' ถึง 'ผู้เล่นที่เลื่อนไปทางซ้าย' แต่มันจะตรวจสอบทุก ๆ 30-60 ครั้งต่อวินาที ฉันลองระบบอื่นซึ่งเพิ่งค้นหากุญแจที่ต้องการ std::map< unsigned char, Key> keyMap; //Key stores the keycode, and …

2
การลบความล่าช้าเมื่อเริ่มต้นการกดปุ่ม
ฉันกำลังสร้างเกมง่ายๆและหนึ่งในปัญหาที่ฉันพบคือความล่าช้าที่น่ารำคาญเมื่อกดปุ่มอย่างต่อเนื่อง ดังนั้นโดยทั่วไปเมื่อฉันกด (เป็นเวลานานมาก) ตัวอย่างเช่นUpวัตถุของฉันจะเคลื่อนที่ 1 หน่วยขึ้นไปไม่ขยับ (ประมาณ 1 วินาที) จากนั้นเลื่อนอย่างต่อเนื่อง 1 หน่วยขึ้นไป (โดยไม่ล่าช้า) ขณะนี้ฉันใช้สิ่งนี้เพื่อย้ายวัตถุ (SDL2): while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_UP: //Move object 1 unit up break; //Other unrelated things omitted } break; //Omitted other cases } } สิ่งที่ฉันต้องการคือการลบความล่าช้าเพื่อให้วัตถุสามารถเคลื่อนที่Upได้อย่างรวดเร็วในทันที มีวิธีการทำเช่นนี้?
11 c++  sdl2  keyboard 

2
อินพุตคีย์บอร์ดบัฟเฟอร์แบบพกพาสำหรับ XNA / MonoGame?
เป็นวิธีแก้ปัญหาเบื้องต้นฉันกำลังใช้เฟรมเวิร์ก Nuclexในโครงการเกม C # / XNA สำหรับอินพุตคีย์บอร์ดบัฟเฟอร์ น่าเศร้าที่ nuclex พึ่งพา SlimDX.Directinput.dll ดังนั้นความรู้ของฉันจึงสามารถใช้ได้เฉพาะในระบบปฏิบัติการ Windows เท่านั้น อย่างไรก็ตามฉันใช้MonoGameเพื่อกำหนดเป้าหมายแพลตฟอร์มอื่น ๆ (Linux, OSX และอื่น ๆ ) และดังนั้นฉันจึงกำลังมองหาวิธีการพกพาในการรวมแป้นพิมพ์บัฟเฟอร์ที่ทำให้เกิดข้อผิดพลาดในทุกแพลตฟอร์ม มีผู้ใด?

7
แป้นพิมพ์ลัดในเกม RTS
ลองนึกภาพคุณมีเกม RTS แบบผู้เล่นหลายคน (เช่น Dune, Age of Empires, Settlers, Warcraft) มีคำสั่งบางอย่างจากแป้นพิมพ์เพื่อควบคุมกองทหาร (หยุดโจมตีโจมตี) และคำสั่งทั่วไปอื่น ๆ เช่นหยุดชั่วคราวหรือออก เกมดังกล่าวได้รับการแปลเป็นหลายภาษา (18+) ฉันสามารถดูวิธีใช้แป้นพิมพ์ลัดได้สองวิธี: A. ใช้ตัวอักษรภาษาอังกฤษตัวแรกของคำสั่งดังกล่าว ("S", "A", "M", "P" ฯลฯ ) สำหรับทุกโลแคล B. ใช้อักษรตัวแรกของคำว่าสถานที่นั้น (เช่นทางลัดภาษารัสเซียจะเป็น "С", "А", "Д", "П". ภาษาเยอรมันจะเป็น "H", "A", "S" ฯลฯ .) วิธีใด (หรือแนะนำของคุณเอง) วิธีใดดีกว่าเมื่อเลือกทางลัดสำหรับหลาย ๆ ที่ PS แน่นอนว่าทางลัดอาจจะปรับแต่งโดยผู้เล่น แต่ค่าเริ่มต้นบางอย่างยังคงมีความจำเป็น

5
การจัดการคีย์บอร์ดและเมาส์อินพุต (Win API)
มีหลายวิธีในการจับเมาส์หรือแป้นพิมพ์ใน Windows ดังนั้นฉันจึงลองบางอย่าง แต่ทุกคนมีข้อดีและข้อเสีย ฉันอยากถามคุณว่า: วิธีไหนที่ใช้? ฉันได้ลองแล้ว: WM_KEYDOWN / WM_KEYUP - ข้อเสียเปรียบหลักคือฉันไม่สามารถแยกความแตกต่างระหว่างปุ่มซ้ายและมือขวาเช่น ALT, CONTROL หรือ SHIFT GetKeyboardState - วิธีนี้แก้ปัญหาของวิธีแรก แต่มีวิธีใหม่ เมื่อฉันกดปุ่ม Right-ALT ฉันก็จะเห็นว่าปุ่มควบคุมซ้ายไม่ทำงาน ลักษณะการทำงานนี้จะเกิดขึ้นเฉพาะเมื่อใช้รูปแบบแป้นพิมพ์ที่แปลเป็นภาษาท้องถิ่น (เช็ก - CS) WM_INPUT (การป้อนข้อมูลแบบดิบ) - วิธีนี้ยังไม่แยกความแตกต่างของปุ่มซ้ายและมือขวา (ถ้าฉันจำได้) และบางครั้งการเคลื่อนไหวของเมาส์จะสร้างข้อความที่มีค่าเดลต้าเป็นศูนย์ของตำแหน่งเมาส์

4
ฉันจะจัดการรูปแบบแป้นพิมพ์ที่แตกต่างได้อย่างไร
สมมติว่าฉันมีเกมที่ใช้ตัวควบคุม WASD ในเค้าโครง QWERTY พยายามที่จะใช้การควบคุมเหล่านี้ในพูดเค้าโครง Dvorak ไม่เหมาะ (เทียบเท่า<A:Hกับ QWERTY) เห็นได้ชัดว่าฉันต้องการใช้ปุ่มทางกายภาพเหมือนกับที่ QWERTY ใช้ ( ,aoeบน DVORAK) ฉันคิดวิธีแก้ปัญหาที่เป็นไปได้สองสามข้อ: บังคับให้ผู้ใช้ใช้ QWERTY เห็นได้ชัดว่าไม่เหมาะโดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ต่างประเทศ เปลี่ยนทางลัดตามเค้าโครงแป้นพิมพ์ (WASD ->, aoe) บังคับให้ฉันทำแผนผังเลย์เอาต์สำหรับแต่ละเลย์เอาต์ที่รองรับ (อัตโนมัติ) ง่ายที่สุดสำหรับผู้ใช้หากมีทางลัดมากกว่า WASD บังคับให้ผู้ใช้กำหนดทางลัดด้วยตนเอง ยืดหยุ่นมากขึ้น น่ารำคาญหากมีทางลัดมากมาย สามารถใช้ร่วมกับตัวเลือกที่สอง ใช้รหัสฮาร์ดแวร์ สอดคล้องกันทั่วคีย์บอร์ด? จัดการกับสิ่งนี้ได้อย่างไร
10 keyboard 

2
ฉันจะส่งต่อคีย์บอร์ดอินพุตของ GLFW ไปยังวัตถุอื่นได้อย่างไร
ฉันมีปัญหาในการพยายามเรียกใช้เหตุการณ์แป้นพิมพ์ในคลาสอื่นด้วย GLFW3 ปัญหาที่ฉันมีคือ GLFW3 ใช้ฟังก์ชั่นคงที่สำหรับการป้อนข้อมูลตามที่แสดง: static UI u; ... ... static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { u.controls(window, key, action); } uเป็นแบบสแตติกและส่วนควบคุมจะเก็บอินพุตสำหรับคีย์ WSAD (วิธีเดียวที่ฉันจะได้รับเหตุการณ์สำคัญ) จากที่นี่การกดแป้นจะทำงานเพื่อแสดงว่ามีการกดแป้นใดในหน้าต่างคอนโซล ปัญหาที่ฉันมีคือพยายามใช้แป้นกดเพื่อจัดการกับตัวแปรในคลาสอื่น ฉันมีคลาสอื่นที่เรียกว่า MainMenu ที่มีฟังก์ชั่นupdate().มีวิธีที่ฉันสามารถใช้คลาส UI ของฉันภายในฟังก์ชั่นนี้หรือไม่?
9 opengl  c++  keyboard  glfw 

3
คีย์ผสมบนอินพุตจากโพล
ดังนั้นสมมติว่าคุณมีระบบอินพุตที่อิงกับการสำรวจ void update() { if( Keyboard[ 'A' ] ) // A is down } สมมติว่าคุณต้องการจดจำการผสมคีย์ความยาว 3 ถึง 8 ชุด (เช่นลง, ไปข้างหน้า, ไปข้างหน้า, A สำหรับ Hado-ken) ที่คุณจะวิธีที่ดีที่สุดสร้างทั่วไป (สามารถปรับเปลี่ยนได้อย่างง่ายดายโปรแกรมได้ /) ระบบการป้อนข้อมูลที่สำคัญในการรวมกันถึงขนาดป้อนข้อมูล?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.