Guest User

deviceinfo.py

a guest
Aug 8th, 2011
978
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.88 KB | None | 0 0
  1. import win32api
  2. import raw_input as ri
  3.  
  4. from ctypes import cast, c_char, byref, sizeof, POINTER
  5. from ctypes.wintypes import *
  6. from logging import getLogger
  7. #####################################################################################
  8.  
  9. _log = getLogger("")
  10. #####################################################################################
  11.  
  12. def main () :
  13.     nDevices = INT()
  14.     if 0 != ri.GetRawInputDeviceList(0, byref(nDevices), sizeof(ri.RAWINPUTDEVICELIST)) :
  15.         raise ri.RawInputError(win32api.FormatMessage(
  16.                 win32api.GetLastError())
  17.         )
  18.  
  19.     devlist = (ri.RAWINPUTDEVICELIST * nDevices.value)()
  20.     if -1 == ri.GetRawInputDeviceList(devlist, byref(nDevices), sizeof(ri.RAWINPUTDEVICELIST)) :
  21.         raise ri.RawInputError(win32api.FormatMessage(
  22.                 win32api.GetLastError())
  23.         )
  24.  
  25.     rdi = ri.RID_DEVICE_INFO()
  26.     rdi.cbSize = sizeof(ri.RID_DEVICE_INFO)
  27.  
  28.     for d in devlist :
  29.         uSize  = UINT()
  30.         ri.GetRawInputDeviceInfo(d.hDevice, ri.RIDI_DEVICENAME, 0, byref(uSize))
  31.         if 0 < uSize.value :
  32.             name = (c_char * uSize.value)()
  33.             ri.GetRawInputDeviceInfo(d.hDevice, ri.RIDI_DEVICENAME, name, byref(uSize))
  34.             _log.info(name.value)
  35.         else : _log.info("0x{0:08X}".format(d.hDevice))
  36.  
  37.  
  38.         uSize.value = rdi.cbSize
  39.         ri.GetRawInputDeviceInfo(d.hDevice, ri.RIDI_DEVICEINFO, byref(rdi), byref(uSize))
  40.  
  41.         if ri.RIM_TYPEMOUSE == rdi.dwType :
  42.             _log.info("ID for Mouse: %d", rdi.mouse.dwId)
  43.             _log.info("Number of Buttons: %d", rdi.mouse.dwNumberOfButtons)
  44.             _log.info("Sample rate(Number of data points): %d", rdi.mouse.dwSampleRate)
  45.             _log.info("**************************")
  46.  
  47.         if ri.RIM_TYPEKEYBOARD == rdi.dwType :
  48.             _log.info("Keyboard Mode: %d", rdi.keyboard.dwKeyboardMode)
  49.             _log.info("Number of function keys: %d", rdi.keyboard.dwNumberOfFunctionKeys)
  50.             _log.info("Number of indicators: %d", rdi.keyboard.dwNumberOfIndicators)
  51.             _log.info("Number of keys total: %d", rdi.keyboard.dwNumberOfKeysTotal)
  52.             _log.info("Type of the keyboard: %d", rdi.keyboard.dwType)
  53.             _log.info("Subtype of the keyboard: %d", rdi.keyboard.dwSubType)
  54.             _log.info("***********************")
  55.  
  56.         if ri.RIM_TYPEHID == rdi.dwType :
  57.             _log.info("Vendor Id: %d", rdi.hid.dwVendorId)
  58.             _log.info("Product Id: %d", rdi.hid.dwProductId)
  59.             _log.info("Version No: %d", rdi.hid.dwVersionNumber)
  60.             _log.info("Usage for the device: %d", rdi.hid.usUsage)
  61.             _log.info("Usage Page for the device: %d", rdi.hid.usUsagePage)
  62.             _log.info("***********************")
  63. #####################################################################################
  64.  
  65. if "__main__" == __name__ :
  66.     main()
  67. #################################### End Of File ####################################
Advertisement
Add Comment
Please, Sign In to add comment