Metadata-Version: 2.1
Name: cec
Version: 0.2.8
Summary: Python bindings for libcec
Home-page: https://github.com/trainman419/python-cec
Author: Austin Hendrix
Author-email: namniart@gmail.com
License: GPLv2
Project-URL: Bug Tracker, https://github.com/trainman419/python-cec/issues
Description: # python-cec - libcec bindings for Python
        
        `python-cec` allows you to control your TV, reciever and other CEC-compliant HDMI devices from a python script on a computer. Most computer graphics cards don't support CEC; you'll need a [Pulse-Eight USB-CEC adapter](http://www.pulse-eight.com/store/products/104-usb-hdmi-cec-adapter.aspx) or a Raspberry Pi (tested on Raspberry Pi 3 Model B Rev 1.2).
        
        ## Installing:
        
        ### Install dependencies
        To build python-cec, you need version 1.6.1 or later of the libcec development libraries:
        
        On Gentoo:
        ```
        sudo emerge libcec
        ```
        
        On OS X:
        ```
        brew install libcec
        ```
        
        Ubuntu, Debian and Raspbian:
        ```
        sudo apt-get install libcec-dev build-essential python-dev
        ```
        
        ### Install from PIP
        
        ```
        pip install cec
        ```
        
        ### Installing on Windows
        
        You need to [build libcec](https://github.com/Pulse-Eight/libcec/blob/master/docs/README.windows.md) from source, because libcec installer doesn't provide *cec.lib* that is necessary for linking.
        
        Then you just need to set up your paths, e.g.:
        ```
        set INCLUDE=path_to_libcec\build\amd64\include
        set LIB=path_to_libcec\build\amd64
        ```
        
        ## Getting Started
        
        A simple example to turn your TV on:
        
        ```python
        import cec
        
        cec.init()
        
        tv = cec.Device(cec.CECDEVICE_TV)
        tv.power_on()
        ```
        
        ## API
        
        
        ```python
        import cec
        
        adapters = cec.list_adapters() # may be called before init()
        
        cec.init() # use default adapter
        cec.init(adapter) # use a specific adapter
        
        cec.close()  # not implemented yet
        
        cec.add_callback(handler, events)
        # the list of events is specified as a bitmask of the possible events:
        cec.EVENT_LOG
        cec.EVENT_KEYPRESS
        cec.EVENT_COMMAND
        cec.EVENT_CONFIG_CHANGE # not implemented yet
        cec.EVENT_ALERT
        cec.EVENT_MENU_CHANGED
        cec.EVENT_ACTIVATED
        cec.EVENT_ALL
        # the callback will receive a varying number and type of arguments that are
        # specific to the event. Contact me if you're interested in using specific
        # callbacks
        
        cec.remove_callback(handler, events)
        
        devices = cec.list_devices()
        
        class Device:
           __init__(id)
           is_on()
           power_on()
           standby()
           address
           physical_address
           vendor
           osd_string
           cec_version
           language
           is_active()
           set_av_input(input)
           set_audio_input(input)
           transmit(opcode, parameters)
        
        cec.is_active_source(addr)
        cec.set_active_source() # use default device type
        cec.set_active_source(device_type) # use a specific device type
        cec.set_inactive_source()  # not implemented yet
        
        cec.volume_up()
        cec.volume_down()
        cec.toggle_mute()
        # TODO: audio status
        
        cec.set_physical_address(addr)
        cec.can_persist_config()
        cec.persist_config()
        cec.set_port(device, port)
        
        # set arbitrary active source (in this case 2.0.0.0)
        destination = cec.CECDEVICE_BROADCAST
        opcode = cec.CEC_OPCODE_ACTIVE_SOURCE
        parameters = b'\x20\x00'
        cec.transmit(destination, opcode, parameters)
        ```
        
        ## Changelog
        
        ### 0.2.8 ( 2022-01-05 )
        * Add support for libCEC >= 5
        * Windows support
        * Support for setting CEC initiator
        * Python 3.10 compatibility
        
        ### 0.2.7 ( 2018-11-09 )
        * Implement cec.EVENT_COMMAND callback
        * Fix several crashes/memory leaks related to callbacks
        * Add possibility to use a method as a callback
        * Limit maximum number of parameters passed to transmit()
        * Fix compilation error with GCC >= 8
        
        ### 0.2.6 ( 2017-11-03 )
        * Python 3 support ( @nforro )
        * Implement is_active_source, set_active_source, transmit ( @nforro )
        * libcec4 compatibility ( @nforro )
        
        ### 0.2.5 ( 2016-03-31 )
        * re-release of version 0.2.4. Original release failed and version number is now lost
        
        ### 0.2.4 ( 2016-03-31 )
        * libcec3 compatibility
        
        ### 0.2.3 ( 2014-12-28 )
        * Add device.h to manifest
        * Initial pip release
        
        ### 0.2.2 ( 2014-06-08 )
        * Fix deadlock
        * Add repr for Device
        
        ### 0.2.1 ( 2014-03-03 )
        * Fix deadlock in Device
        
        ### 0.2.0 ( 2014-03-03 )
        * Add initial callback implementation
        * Fix libcec 1.6.0 backwards compatibility support
        
        ### 0.1.1 ( 2013-11-26 )
        * Add libcec 1.6.0 backwards compatibility
        * Known Bug: no longer compatible with libcec 2.1.0 and later
        
        ### 0.1.0 ( 2013-11-03 )
        * First stable release
        
        ## Copyright
        
        Copyright (C) 2013 Austin Hendrix <namniart@gmail.com>
        
        This program is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 2 of the License, or
        (at your option) any later version.
        
        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
        
        You should have received a copy of the GNU General Public License
        along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
Platform: UNKNOWN
Description-Content-Type: text/markdown
