<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kremotecontrol "<application
>KRemoteControl</application
>">
  
  <!ENTITY % Russian "INCLUDE"
> <!-- change language only here -->
  <!ENTITY % addindex "IGNORE">
]>

<book lang="&language;">
  <bookinfo>
    <title
>Настройка инфракрасного пульта дистанционного управления в KDE</title>

    <authorgroup>
      <author
><firstname
>Michael</firstname
> <surname
>Zanetti</surname
> <affiliation
> <address
><email
>michael_zanetti@gmx.net</email
></address>
        </affiliation>
      </author>
    <othercredit role="translator"
> <firstname
>Олег</firstname
><surname
>Баталов</surname
><affiliation
><address
><email
>olegbatalov@mail.ru</email
></address
> </affiliation
><contrib
>Перевод на русский язык</contrib
> </othercredit
> <othercredit role="translator"
> <firstname
>Максим</firstname
><surname
>Воробьёв</surname
><affiliation
><address
><email
>vmax0770@gmail.com</email
></address
> </affiliation
><contrib
>Дополнение перевода на русский язык</contrib
> </othercredit
> 
    </authorgroup>

    <date
>5 марта 2010 г.</date>
    <releaseinfo
>1.0</releaseinfo>

    <copyright>
      <year
>2010</year>
      <holder
>Michael Zanetti</holder>
    </copyright>

    <abstract>
      <para
>Настройка &kremotecontrol;: поддержка инфракрасных пультов дистанционного управления для &kde;. </para>
    </abstract>
    
    <keywordset>
      <keyword
>KRemoteControl</keyword>
      <keyword
>kcm_remotecontrol</keyword>
      <keyword
>Дистанционное управление</keyword>
    </keywordset>

  </bookinfo>

  <chapter id="introduction">
    <title
>Введение</title>

    <para
>Этот модуль позволяет настроить дистанционное управление. Вы можете назначить действия на нажатия кнопок пульта. К примеру, можно настроить запуск приложений, управление ими или системные действия (например, выключение компьютера). </para>

    <sect1 id="requirements">
      <title
>Системные требования</title>

      <para
>Для использования &kremotecontrol; должен быть настроен совместимый движок дистанционного управления. Сейчас поддерживается только LIRC. Если он настроен правильно, значок &kremotecontrol; в системном лотке загорится красным <inlinemediaobject
><imageobject
> <imagedata fileref="irkick.png" format="PNG"/></imageobject
></inlinemediaobject
>. В противном случае, он будет серым и перечёркнутым <inlinemediaobject
> <imageobject
> <imagedata fileref="irkickoff.png" format="PNG"/> </imageobject
></inlinemediaobject
>. </para>

      <para
>Более подробную информацию о LIRC смотрите на сайте http://www.lirc.org. </para>

    </sect1>
  </chapter>

  <chapter id="usage">
    <title
>Использование</title>

    <para
>Модуль конфигурации состоит из двух списков. В первом перечислены доступные пульты и их режимы. Во втором — настроенные для выделенного пульта и режима действия. <screenshot>
      <screeninfo
>Настройка инфракрасного пульта дистанционного управления в KDE</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="kcmremotecontrol.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Списки пультов и настроенных режимов и действий</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
    </para>

    <sect1 id="modes">
      <title
>Пульты дистанционного управления и режимы</title>

      <para
>Каждый пульт дистанционного управления может иметь несколько режимов. Их наличие позволяет назначить одной и той же кнопке различные действия для различных ситуаций. Хороший пример — многоцелевые пульты дистанционного управления для ТВ/Видео/Спутниковый/DVD. Вместо использования нескольких пультов с несколькими приложениями, можно использовать один пульт в различных режимах, переключаясь между ними при необходимости. Действия, определённые для самого пульта, доступны вне зависимости от текущего режима. Действия, определённые для режима, работают только при активированном режиме. Также можно указать режим по умолчанию. </para>
      <para
>Режимы для пульта можно добавить, выбрав пульт и нажав кнопку <guibutton
>+</guibutton
>. При создании режима нужно указать его название. Также можно указать, какой кнопкой переключаться на этот режим и какой значок используется для уведомлений этого режима. Удалить режим можно, щёлкнув на кнопке <guibutton
>-</guibutton
>. <screenshot>
        <screeninfo
>Добавление режима</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="AddMode.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Добавление режима</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>
      <para
>По умолчанию, если для одной кнопки назначены разные режимы, можно переключаться между ними этой кнопкой. К примеру, можно присвоить кнопке <quote
>AUDIO</quote
> переключение между режимами для &amarok; и &juk;, а кнопке <quote
>VIDEO</quote
> — переключение между режимами &dragon; и KMPlayer. Также можно присвоить одной кнопке перебор режимов, а другой — перебор режимов в обратном порядке. <screenshot>
        <screeninfo
>Изменение конфигурации пульта</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="EditMasterMode.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Изменение конфигурации пульта</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>

    </sect1>

    <sect1 id="actions">
      <title
>Действия</title>

      <para
>После выбора пульта или режима, вы можете добавлять действия с помощью кнопки <guibutton
>+</guibutton
> справа. Действия можно создать из шаблона или просматривая системную шину D-Bus вручную. <screenshot>
        <screeninfo
>Добавление действия</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="AddAction.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Добавление действия</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>
      <para
>Создание действий из шаблонов легче, но ограничено в возможностях. Шаблоны присутствуют для различных приложений (например, &amarok; или меню запуска приложений &kde;) или системных команд, как, например, выключение компьютера. Эти команды собраны в профили, объединяющие их по схожести действий. К примеру, профиль <quote
>Управление питанием</quote
> включает шаблоны для выключения или перевода в спящий режим компьютера. <screenshot>
        <screeninfo
>Добавление действия к профилю</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="AddProfileAction.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Добавление действия из шаблона</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>
      <para
>Создание действий с помощью просмотра D-Bus показывает запущенные приложения (можно просматривать их функции). Нужно понимать, как работает D-Bus, но так возможно создать больше действий, чем в списке шаблонов. <screenshot>
        <screeninfo
>Добавление действия D-Bus</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="AddDBusAction.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Добавление действия с помощью D-Bus</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>
      <para
>При создании действия можно указать несколько параметров. Первый определяет, повторяются ли действия при удержании кнопки на пульте (это может полезно для таких действий, как регулировка громкости). Второй показывает, должно ли быть запущено приложение при нажатии кнопки пульта, если оно ещё не запущено. Третий определяет, какое окно приложения из запущенных должно реагировать на нажатие. </para>
      <para>
        <screenshot>
        <screeninfo
>Параметры добавления действия</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="AddActionOptions.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Параметры добавления действия</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>
      <para
>Действия также можно определить с помощью мастера. &kremotecontrol; попытается установить соответствия между кнопками и действиями. Цвет флага показывает, насколько ваш пульт поддерживается профилем (зелёный — полная поддержка, желтый — частичная, красный — не поддерживается совсем). Но это не значит, что использовать шаблоны нельзя — их просто придётся настроить для каждой кнопки. <screenshot>
        <screeninfo
>Автоматическое заполнение</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="AutoPopulate.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Автоматическая генерация действий с использованием шаблонов</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </para>
      <para
><emphasis role="strong"
>Заметьте:</emphasis
> Если пульт не поддерживается ни одним шаблоном, это, возможно, значит, что LIRC настроен без пространств имён. </para>
    </sect1>
  </chapter>
  <chapter id="advancedInformation">
    <title
>Продвинутая информация</title>
    <para
>Эта глава затрагивает аспекты, интересные продвинутым пользователям или разработчикам и учит созданию своего профиля. </para>

    <sect1 id="profileCreation">
      <title
>Создание профиля</title>

      <sect2>
        <title
>Введение</title>
        <para
>Практически все приложения, совместимые с &DBus;, могут быть использованы с &kremotecontrol; без каких-либо дополнительных действий. Но для того, чтобы его было легче настроить, следует создать профиль. </para>
        <para
>Профиль предназначен для сообщения &kremotecontrol; и пользователю, какие вызовы &DBus; нужно произвести. Это чем-то напоминает документацию по &DBus;. Не следует включать все вызовы — нужны только те, которыми может воспользоваться конечный пользователь (обычно это методы для <quote
>конфигурации</quote
>, а не для <quote
>сбора информации</quote
>). </para>
      </sect2>

      <sect2>
        <title
>Как создать профиль</title>
        <procedure>

          <step>
            <title
>DBus</title>
            <para
>Убедитесь, что приложение, для которого создаётся профиль, предоставляет методы шины &DBus;. Это можно проверить, добавив действия &kremotecontrol; для этого приложения вручную. Приложение <quote
>qdbusviewer</quote
> из стандартной поставки Qt4 также подходит для исследования возможностей приложения. </para>
          </step>

          <step>
            <title
>Шаг за шагом</title>
            <para
>Когда необходимые функции &DBus; найдены, их нужно описать в файле <filename
>имя_приложения.profile.xml</filename
>. Вот как это сделать: </para>

            <substeps>
              <step>
                <para
>Сначала создайте новый файл с содержимым ниже. Тег <quote
>name</quote
> определяет короткое название профиля. В поле тега <quote
>description</quote
> впишите описание. Также можно добавить своё имя и версию (теги <quote
>author</quote
> и <quote
>version</quote
>). Тег версии очень важен, так как &kremotecontrol; использует последнюю версию профиля из нескольких присутствующих. </para>
                <programlisting
>&lt;xml version="1.0" encoding="UTF-8"?>
&lt;profile xmlns="urn:org-kde-kremotecontrol"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:org-kde-kremotecontrol file:profile.xsd"&gt;

    &lt;name&gt;Мой профиль&lt;/name&gt;
    &lt;version&gt;0.1&lt;/версия&gt;
    &lt;author&gt;Me&lt;/автор&gt;
    &lt;description&gt;Описание того, что профиль делает&lt;/description&gt;
    &lt;action&gt;
        &lt;--  Этот тег объясняется далее--&gt;
    &lt;action&gt;

&lt;/profile&gt;
                </programlisting>
              </step>

              <step>
                <para
>После создания заготовки нужно добавить несколько действий. </para>

                <programlisting
>&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;profile xmlns="urn:org-kde-kremotecontrol"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:org-kde-kremotecontrol file:profile.xsd"&gt;

    &lt;name&gt;Мой профиль&lt;/name&gt;
    &lt;version&gt;0.1&lt;/версия&gt;
    &lt;author&gt;Me&lt;/автор&gt;
    &lt;description&gt;;Описание того, что профиль делает&lt;/description&gt;

    &lt;action id="someUniquId"  repeat="true|false" button="someButton"&gt;
      &lt;name&gt;Моё действие&lt;/name&gt;
      &lt;description&gt;Что оно делает&lt;/description&gt;
      &lt;prototype&gt;
        &lt;--  Этот тег объясняется далее--&gt;
      &lt;prototype&gt;
      &lt;ifmulti&gt;ifMultiOption&lt;/ifmulti&gt;
    &lt;/action&gt;
    
&lt;/profile&gt;
                </programlisting>
               <para
>Сначала определите уникальный идентификатор. &kremotecontrol; будет использовать его для установления соответствий существующих действий шаблону, к примеру, для чтения описания. Он должен быть одним и тем же по всему профилю. Параметр <quote
>button</quote
> используется для функции автоматического заполнения. Просмотрите файл <quote
>profile.xsd</quote
> для полного списка доступных кнопок. Параметр <quote
>repeat</quote
> указывает, повторяются ли действия при удержании кнопки на пульте. Параметр <quote
>autostart</quote
> определяет, должно ли быть запущено приложение при нажатии кнопки пульта, если оно ещё не запущено. Параметры <quote
>button</quote
>, <quote
>repeat</quote
> и <quote
>autostart</quote
> указывать необязательно (по умолчанию <quote
>repeat</quote
> и <quote
>autostart</quote
> будут установлены в <quote
>нет</quote
>). </para>
                 
               <para
>Добавьте короткое имя и описание (теги <quote
>name</quote
> и <quote
>description</quote
>). Параметр <quote
>ifmulti</quote
> показывает, что &kremotecontrol; делать, если у приложения открыто больше одного окна. Значения: <quote
>sendtotop</quote
> (послать самому верхнему окну), <quote
>sendtobottom</quote
> (послать самому нижнему окну), <quote
>sendtoall</quote
> (послать всем), <quote
>dontsend</quote
> (не посылать никому) и <quote
>unique</quote
> (это приложение имеет только одно окно). Значение по умолчанию — <quote
>unique</quote
>. </para>
              </step>

              <step>
                <para
>Затем определите в теге <quote
>prototype</quote
> функцию &DBus;, которая должна быть выполнена: </para>
                <programlisting
>&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;profile xmlns="urn:org-kde-kremotecontrol"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:org-kde-kremotecontrol file:profile.xsd"&gt;

    &lt;name&gt;Мой профиль&lt;/name&gt;
    &lt;version&gt;0.1&lt;/версия&gt;
    &lt;author&gt;Me&lt;/автор&gt;
    &lt;description&gt;;Описание того, что профиль делает&lt;/description&gt;

    &lt;action id="someUniquId"  repeat="true|false" button="someButton"&gt;
      &lt;name&gt;Моё действие&lt;/name&gt;
      &lt;description&gt;Что оно делает&lt;/description&gt;

      &lt;prototype&gt;
        &lt;serviceName&gt;org.example.application&lt;/serviceName&gt;
        &lt;node&gt;Какой-то/Узел&lt;/node&gt;
        &lt;function&gt;функция&lt;/function&gt;
      &lt;/prototype&gt;

      &lt;ifmulti&gt;ifMultiOption&lt;/ifmulti&gt;
    &lt;/action&gt;

&lt;/profile&gt;
                </programlisting>
                <para
>Тег <quote
>servicename</quote
> содержит название службы &DBus; для приложения (к примеру, <quote
>org.kde.plasma-desktop</quote
>). Тег <quote
>node</quote
> содержит имя узла &DBus;, такое как <quote
>App</quote
>. Тег <quote
>function</quote
> содержит название функции без возвращаемого значения и аргументов (например, <quote
>toggleDashboard</quote
>). </para>
              </step>

              <step>
                <para
>Если у функции есть аргументы, их также нужно описать (тип, комментарий и значение по умолчанию). Файл <quote
>profile.xsd</quote
> содержит список поддерживаемых типов. Тег <quote
>comment</quote
> служит для описания того, что должно содержаться в аргументе. В теге <quote
>default</quote
> нужно указать значение по умолчанию (не обязательно, но требуется, если установлен тег <quote
>button</quote
>). </para>
      
                  <programlisting
>&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;profile xmlns="urn:org-kde-kremotecontrol"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:org-kde-kremotecontrol file:profile.xsd"&gt;

    &lt;name&gt;Мой профиль&lt;/name&gt;
    &lt;version&gt;0.1&lt;/версия&gt;
    &lt;author&gt;Me&lt;/автор&gt;
    &lt;description&gt;;Описание того, что профиль делает&lt;/description&gt;

    &lt;action id="someUniquId"  repeat="true|false" button="someButton"&gt;
      &lt;name&gt;Моё действие&lt;/name&gt;
      &lt;description&gt;Что оно делает&lt;/description&gt;

      &lt;prototype&gt;
        &lt;serviceName&gt;org.example.application&lt;/serviceName&gt;
        &lt;node&gt;Какой-то/Узел&lt;/node&gt;
        &lt;function&gt;функция&lt;/function&gt;

        &lt;arguments&gt;
          &lt;argument type="QString"&gt;
            &lt;comment&gt;Комментарий&lt;/comment&gt;
            &lt;default&gt;значение&lt;/default&gt;
          &lt;/argument&gt;
        &lt;/arguments&gt;

      &lt;/prototype&gt;

      &lt;ifmulti&gt;ifMultiOption&lt;/ifmulti&gt;
    &lt;/action&gt;

&lt;/profile&gt;
                  </programlisting>
              </step>
            </substeps>
          </step>
        </procedure>
      </sect2>
      <sect2>
        <title
>Установка</title>
          <para
>Для тестирования и использования профиля нужно скопировать его в <filename
>$(kde_datadir)/profiles</filename
> и перезапустить &kremotecontrol;. </para>
          <para
>Вы можете отправить созданные вами профили по адресу <email
>kde-utils-devel@kde.org</email
>. </para>
        </sect2>
    </sect1>
  </chapter>
</book>
