
    \
jL                     r   d Z ddlZddlmZmZmZmZmZ ddlmZm	Z	m
Z
 ddlmZmZmZ  eed          oej        ZddZerdd	Zdd
ZddZdS ddZddlmZ  ej        d          rddlmZ ddlmZ ddlmZ ddlmZ ddZdS edv rddlmZmZ 	 ddlmZ dS #  Y dS xY wedk    rddlmZmZmZ dS dS )a*	  Joystick, tablet and USB HID device support.

This module provides a unified interface to almost any input device, besides
the regular mouse and keyboard support provided by
:py:class:`~pyglet.window.Window`.  At the lowest
level, :py:func:`get_devices` can be used to retrieve a list of all supported
devices, including joysticks, tablets, space controllers, wheels, pedals, remote
controls, keyboards and mice.  The set of returned devices varies greatly
depending on the operating system (and, of course, what's plugged in).  

At this level pyglet does not try to interpret *what* a particular device is,
merely what controls it provides.  A :py:class:`Control` can be either a button,
whose value is either ``True`` or ``False``, or a relative or absolute-valued
axis, whose value is a float.  Sometimes the name of a control can be provided
(for example, ``x``, representing the horizontal axis of a joystick), but often
not.  In these cases the device API may still be useful -- the user will have
to be asked to press each button in turn or move each axis separately to
identify them.

Higher-level interfaces are provided for joysticks, tablets and the Apple
remote control.  These devices can usually be identified by pyglet positively,
and a base level of functionality for each one provided through a common
interface.

To use an input device:

1. Call :py:func:`get_devices`, :py:func:`get_apple_remote` or
   :py:func:`get_joysticks`
   to retrieve and identify the device.
2. For low-level devices (retrieved by :py:func:`get_devices`), query the
   devices list of controls and determine which ones you are interested in. For
   high-level interfaces the set of controls is provided by the interface.
3. Optionally attach event handlers to controls on the device.
4. Call :py:meth:`Device.open` to begin receiving events on the device.  You can
   begin querying the control values after this time; they will be updated
   asynchronously.
5. Call :py:meth:`Device.close` when you are finished with the device (not
   needed if your application quits at this time).

To use a tablet, follow the procedure above using :py:func:`get_tablets`, but
note that no control list is available; instead, calling :py:meth:`Tablet.open`
returns a :py:class:`TabletCanvas` onto which you should set your event
handlers.

.. versionadded:: 1.2

    N   )DeviceControlRelativeAxisAbsoluteAxisButton)JoystickAppleRemoteTablet)DeviceExceptionDeviceOpenExceptionDeviceExclusiveExceptionis_pyglet_doc_runc                     dS )a  Get the Apple remote control device.
    
    The Apple remote is the small white 6-button remote control that
    accompanies most recent Apple desktops and laptops.  The remote can only
    be used with Mac OS X.

    :Parameters:
        display : `~pyglet.canvas.Display`
            Currently ignored.

    :rtype: AppleRemote
    :return: The remote device, or `None` if the computer does not support it.
    N displays    O/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/input/__init__.pyget_apple_remoter   ]   s	     4    c                     dS )aW  Get a list of all attached input devices.

        :Parameters:
            display : `~pyglet.canvas.Display`
                The display device to query for input devices.  Ignored on Mac
                OS X and Windows.  On Linux, defaults to the default display
                device.

        :rtype: list of :py:class:`Device`
        Nr   r   s    r   get_devicesr   n         r   c                     dS )aQ  Get a list of attached joysticks.

        :Parameters:
            display : `~pyglet.canvas.Display`
                The display device to query for input devices.  Ignored on Mac
                OS X and Windows.  On Linux, defaults to the default display
                device.

        :rtype: list of :py:class:`Joystick`
        Nr   r   s    r   get_joysticksr   z   r   r   c                     dS )a  Get a list of tablets.

        This function may return a valid tablet device even if one is not
        attached (for example, it is not possible on Mac OS X to determine if
        a tablet device is connected).  Despite returning a list of tablets,
        pyglet does not currently support multiple tablets, and the behaviour
        is undefined if more than one is attached.

        :Parameters:
            display : `~pyglet.canvas.Display`
                The display device to query for input devices.  Ignored on Mac
                OS X and Windows.  On Linux, defaults to the default display
                device.

        :rtype: list of :py:class:`Tablet`
        Nr   r   s    r   get_tabletsr      r   r   c                     g S Nr   r   s    r   r   r      s    	r   )compat_platformlinux)r   )r   )r   c                 @    t          |           t          |           z   S r   )evdev_get_devicesxinput_get_devicesr   s    r   r   r      s"    %g..&w//0 1r   )cygwinwin32)r   r   darwin)r   r   r   r   ) __doc__sysbaser   r   r   r   r   r	   r
   r   r   r   r   hasattrr   _is_pyglet_doc_runr   r   r   r   pygletr    
startswith
x11_xinputr$   x11_xinput_tabletevdevr#   directinputwintab
darwin_hidr   r   r   <module>r5      s1  H. .` 


 E E E E E E E E E E E E E E / / / / / / / / / / P P P P P P P P P PWS"566P3;P       @M
 
 
 

 
 
 
     &    '&&&&&!!'** MAAAAAA222222;;;;;;((((((	1 	1 	1 	1 	1 	1 
/	/	/;;;;;;;;	++++++++	DD	H	$	$LLLLLLLLLLLL 
%	$s   B B"