1 /+ 2 + Copyright 2022 – 2023 Aya Partridge 3 + Copyright 2018 - 2022 Michael D. Parker 4 + Distributed under the Boost Software License, Version 1.0. 5 + (See accompanying file LICENSE_1_0.txt or copy at 6 + http://www.boost.org/LICENSE_1_0.txt) 7 +/ 8 module sdl.hidapi; 9 10 import bindbc.sdl.config; 11 import bindbc.sdl.codegen; 12 13 import sdl.stdinc: SDL_bool; 14 15 static if(sdlSupport >= SDLSupport.v2_0_18){ 16 struct SDL_hid_device; 17 18 struct SDL_hid_device_info{ 19 char* path; 20 ushort vendor_id; 21 ushort product_id; 22 wchar_t* serial_number; 23 ushort release_number; 24 wchar_t* manufacturer_string; 25 wchar_t* product_string; 26 ushort usage_page; 27 ushort usage; 28 int interface_number; 29 int interface_class; 30 int interface_subclass; 31 int interface_protocol; 32 SDL_hid_device_info* next; 33 } 34 } 35 36 mixin(joinFnBinds((){ 37 string[][] ret; 38 static if(sdlSupport >= SDLSupport.v2_0_18){ 39 ret ~= makeFnBinds([ 40 [q{int}, q{SDL_hid_init}, q{}], 41 [q{int}, q{SDL_hid_exit}, q{}], 42 [q{uint}, q{SDL_hid_device_change_count}, q{}], 43 [q{SDL_hid_device_info*}, q{SDL_hid_enumerate}, q{ushort vendor_id, ushort product_id}], 44 [q{void}, q{SDL_hid_free_enumeration}, q{SDL_hid_device_info* devs}], 45 [q{SDL_hid_device*}, q{SDL_hid_open}, q{ushort vendor_id, ushort product_id, const(wchar_t)* serial_number}], 46 [q{SDL_hid_device*}, q{SDL_hid_open_path}, q{const(char)* path, int bExclusive=false}], 47 [q{int}, q{SDL_hid_write}, q{SDL_hid_device* dev, const(ubyte*) data, size_t length}], 48 [q{int}, q{SDL_hid_read_timeout}, q{SDL_hid_device* dev, ubyte* data, size_t length, int milliseconds}], 49 [q{int}, q{SDL_hid_read}, q{SDL_hid_device* dev, ubyte* data, size_t length}], 50 [q{int}, q{SDL_hid_set_nonblocking}, q{SDL_hid_device* dev, int nonblock}], 51 [q{int}, q{SDL_hid_send_feature_report}, q{SDL_hid_device* dev, const(ubyte)* data, size_t length}], 52 [q{int}, q{SDL_hid_get_feature_report}, q{SDL_hid_device* dev, ubyte* data, size_t length}], 53 [q{int}, q{SDL_hid_get_manufacturer_string}, q{SDL_hid_device* dev, wchar_t* string_, size_t maxlen}], 54 [q{int}, q{SDL_hid_get_product_string}, q{SDL_hid_device* dev, wchar_t* string_, size_t maxlen}], 55 [q{int}, q{SDL_hid_get_serial_number_string}, q{SDL_hid_device* dev, wchar_t* string_, size_t maxlen}], 56 [q{int}, q{SDL_hid_get_indexed_string}, q{SDL_hid_device* dev, int string_index, wchar_t* string_, size_t maxlen}], 57 [q{void}, q{SDL_hid_ble_scan}, q{SDL_bool active}], 58 ]); 59 } 60 return ret; 61 }()));