; Module/File: Devices_Get.pb ; Function: Get Devices for default display & some device informations - Linux gtk3 ; Author: Omi ; Date: Dec. 12, 2016 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.4 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" g_slist_length(*list.GSList) g_slist_free(*list.GSList) gdk_display_get_default() gdk_display_get_device_manager(*display.GdkDisplay) gdk_device_get_device_type(*display.GdkDisplay) gdk_device_get_name(*device.GdkDevice) gdk_device_get_source(*device.GdkDevice) gdk_device_get_mode(*device.GdkDevice) gdk_device_get_has_cursor(*device.GdkDevice) gdk_device_get_n_axes(*device.GdkDevice) gdk_device_get_n_keys(*device.GdkDevice) gdk_device_manager_list_devices(*device_manager, type) EndImport ; Object constants #Win_Main = 0 Global.i gEvent, gQuit Global *gDeviceManager Global *gDisplay.GdkDisplay Global.s gGdkDeviceTypes = "GDK_DEVICE_TYPE_MASTER" + #TAB$ + "GDK_DEVICE_TYPE_SLAVE" + #TAB$ + "GDK_DEVICE_TYPE_FLOATING" Global.s gGdkInputSources= "GDK_SOURCE_MOUSE" + #TAB$ + "GDK_SOURCE_PEN" + #TAB$ + "GDK_SOURCE_ERASER" + #TAB$ + "GDK_SOURCE_CURSOR" + #TAB$ + "GDK_SOURCE_KEYBOARD" + #TAB$ + "GDK_SOURCE_TOUCHSCREEN" + #TAB$ + "GDK_SOURCE_TOUCHPAD" Global.s gGdkInputModes = "GDK_MODE_DISABLED" + #TAB$ + "GDK_MODE_SCREEN" + #TAB$ + "GDK_MODE_WINDOW" Enumeration GdkDeviceType #GDK_DEVICE_TYPE_MASTER #GDK_DEVICE_TYPE_SLAVE #GDK_DEVICE_TYPE_FLOATING EndEnumeration Enumeration GdkInputSource ; #GDK_SOURCE_MOUSE ; #GDK_SOURCE_PEN ; #GDK_SOURCE_ERASER ; #GDK_SOURCE_CURSOR #GDK_SOURCE_KEYBOARD = 4 #GDK_SOURCE_TOUCHSCREEN= 5 #GDK_SOURCE_TOUCHPAD = 6 EndEnumeration Procedure Devices_GetForType(*DeviceManager, Type) Protected *Device.GdkDevice Protected *GList.GList = gdk_device_manager_list_devices(*DeviceManager, Type) Protected *GList0.GList= *GList If *GList0 Repeat *Device= *GList\data If *Device Debug "Device adress : " + *Device If gdk_device_get_name(*Device) Debug "Device name : " + PeekS(gdk_device_get_name(*Device), -1, #PB_UTF8) EndIf Debug "Device source : " + StringField(gGdkInputSources, gdk_device_get_source(*Device)+ 1, #TAB$) Debug "Device type : " + StringField(gGdkDeviceTypes, gdk_device_get_device_type(*Device)+ 1, #TAB$) Debug "Device mode : " + StringField(gGdkInputModes, gdk_device_get_mode(*Device)+ 1, #TAB$) If gdk_device_get_source(*Device) <> #GDK_SOURCE_KEYBOARD Debug "Device has cursor : " + gdk_device_get_has_cursor(*Device) Debug "Device has axis : " + gdk_device_get_n_axes(*Device) EndIf Debug "Device has n keys : " + gdk_device_get_n_keys(*Device) Debug " ---" EndIf *GList= *GList\next Until *GList = 0 EndIf g_list_free_(*GList0) EndProcedure Procedure Create_WinMain() If OpenWindow(#Win_Main, 300, 200, 500, 100, "Get GdkDevices for display (Gtk3) ...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(0, 5, 5, 490, 26, "Debug GdkDevices for default display ...") EndIf EndProcedure Create_WinMain() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget If EventGadget()= 0 *gDisplay = gdk_display_get_default() *gDeviceManager = gdk_display_get_device_manager(*gDisplay) Debug "Master devices ..." Debug "==================" Devices_GetForType(*gDeviceManager, #GDK_DEVICE_TYPE_MASTER) Debug "Slave devices ..." Debug "=================" Devices_GetForType(*gDeviceManager, #GDK_DEVICE_TYPE_SLAVE) Debug "Floating devices ..." Debug "====================" Devices_GetForType(*gDeviceManager, #GDK_DEVICE_TYPE_FLOATING) EndIf EndSelect Until gQuit ; IDE Options = PureBasic 5.46 LTS Beta 1 (Linux - x86) ; CursorPosition = 33 ; FirstLine = 25 ; Folding = - ; EnableUnicode ; EnableXP