Cần cắm và cần điều khiển nóng trên OSX


7

Tôi đã thử nghiệm các tính năng hỗ trợ cần điều khiển đa nền tảng trên GLFW, SDL2 và SFML. SDL2 dường như là hoàn chỉnh nhất, nhưng nó không thể phát hiện khi các phím điều khiển đã được rút ra trên OSX. Đối với tôi, đây là một tính năng cơ bản.

Hỗ trợ phát hiện cần điều khiển dường như yếu hơn nhiều trên Mac so với Windows. Tôi có thể làm gì để khắc phục điều này?


1
Các trung tâm trợ giúp giải thích rất rõ ràng những gì câu hỏi được coi là off topic (cũng như trò chơi phát triển Meta ). Các câu hỏi "Lists of of" và "what-library-I-I-use" ("Có bất kỳ thư viện C ++ đa nền tảng nào không ..."), cũng như các câu hỏi rộng và định hướng ý kiến ​​("điều gì làm cho việc cắm nóng này trở nên khó khăn. ..? ") Không đúng chủ đề. Có vẻ như bạn đã hiểu nhầm mục tiêu của trang StackExchange, đó là lưu trữ các câu hỏi và câu trả lời khách quan cụ thể và không nhất thiết phải "thu hút các nhà phát triển ở vị trí tương tự". May mắn thay, trung tâm trợ giúp cũng bao gồm một danh sách các địa điểm bạn có thể đặt câu hỏi ngoài chủ đề.

1
Bạn gợi ý gì? Đó không phải là câu hỏi kỹ thuật để trả lời? Đó chắc chắn không phải là một câu hỏi chủ quan.
Charlie

3
Đây không phải là 'sử dụng công nghệ nào?' câu hỏi Tôi đang cố gắng hiểu tại sao OSX có vấn đề lớn như vậy với các thiết bị USB và cụ thể là cách người ta có thể tiếp cận vấn đề cắm nóng. Nếu bạn biết câu trả lời, hoặc có bất cứ điều gì để thêm, thì bạn chỉ nên chia sẻ hoặc tiếp tục và cho phép người khác trả lời, vì đó là điều mà Stackexchange chủ yếu ... Cách để mọi người giúp đỡ người khác. Tôi sẽ không đăng lên bảng này một lần nữa. Tôi đoán một mất mát nhỏ, nhưng bạn sẽ hiểu tại sao. Tôi đã có 4 câu trả lời cho câu hỏi của mình và không có câu trả lời nào phù hợp cả. Hoặc thậm chí hữu ích.
Charlie

1
@Charlie, tôi đã bình chọn để mở lại. Tôi hầu như luôn cố gắng giải thích những phiếu bầu này, và của bạn là một trong những phiếu đầu tiên mà tôi nhận được giải thích tại sao nó lại được khẳng định. Lý do mà các câu hỏi "công nghệ nào" không có chủ đề là chúng chỉ có thể được trả lời dựa trên các yêu cầu dự án cụ thể, điều này thường có nghĩa là chúng không thể được trả lời chính xác. Trong trường hợp của bạn, nơi bạn có một yêu cầu tính năng rất cụ thể, tôi cảm thấy rằng câu hỏi có thể trả lời và hữu ích. Chúc may mắn trong việc nhận phần còn lại của phiếu bầu của bạn. Tôi cũng chỉnh sửa câu hỏi của bạn một lần nữa; cảm thấy tự do để hoàn nguyên hoặc reedit khi bạn thấy phù hợp.
Seth Battin

1
Tôi cho rằng "Có một lý do cụ thể nào đó mà hỗ trợ phát hiện cần điều khiển yếu hơn đối với OSX" hoàn toàn không có chủ đề ở đây. Câu hỏi "Những gì có thể được thực hiện" là tốt hơn. Có thể một cái gì đó như: "Làm cách nào tôi có thể phát hiện một gamepad USB bị ngắt kết nối trong khi chơi trò chơi trên OSX, sử dụng SDL2?", Xóa hoàn toàn đoạn đầu tiên. Phrasing đó dường như vượt quá sự trách móc.
Trevor Powell

Câu trả lời:


4

Sử dụng SFML mới nhất từ ​​github (2.1 cũng sẽ hoạt động nhưng tôi không thử nghiệm với nó), bạn có thể lắng nghe sf::Event::JoystickConnectedsf::Event::JoystickDisconnectedcác sự kiện như được mô tả trong Hướng dẫn Sự kiện SFML . Tôi đã thử nghiệm các sự kiện và cả hai đều được kích hoạt trên Mac và Windows.

Một chương trình mẫu để kiểm tra điều này sẽ giống như:

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML Joystick Events!");


    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event:: JoystickConnected)
            {
                std::cout << "joystick connected: " << event.joystickConnect.joystickId << std::endl;
            }
            else if (event.type == sf::Event::JoystickDisconnected)
            {
                std::cout << "joystick disconnected: " << event.joystickConnect.joystickId << std::endl;
            }
            else if (event.type == sf::Event::Closed)
            {
                window.close();
            }
        }
    }

    return 0;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.