Объявление

Свернуть
Пока нет объявлений.

Autostart + Keymap - Enigma2 (python)

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Autostart + Keymap - Enigma2 (python)

    сейчас трахаюсь, пытаюсь запустить плаг автостартом и заставить показывать картинку при нажатии определенной кнопки, те сделать свой мэппинг на пульт.

    info
    For your Info to modifies your file by self, here the Info for the Flags:

    m = make -> press button
    l = long -> press button long
    b = break -> release button
    r = repeat -> possible as combination ....like flags="mr" (similar as "l" i don't now wath ist the difference

    -----
    "m" kommt einmal sobald die taste gedrückt wurde.
    "r" kommt dann nach "m" wenn man die taste feshält.. und das solange bis man die taste loslässt,
    "l" kommt nachdem 5 repeats kamen..aber nur exakt einmal (repeat kommt dann trotzdem weiter..)
    "b" kommt nachdem man die taste losgelassen hat.

    Wenn man nun also ein Fenster mit "m" öffnet.. dann kann man im selben context r, l, b nicht mehr benutzen.

    Deshalb muss man dann halt das Fenster erst auf "b" öffnen..
    автостарт не беда, остально бедище пока глухо, чтото я делаю не так
    подглядываю в других плагах, а там мэппинг реализован по разному, трудно найти самый легкий способ.

    Вложения
    Обсуждение всех нюансов развода в Германии. www.razvod.net

  • #2
    Re: Autostart + Keymap - Enigma2 (python)

    еще полезная инфа по кнопкам
    Spoiler
    http://www.i-have-a-dreambox.com/wbb2/thread.php?postid=1287438


    keymap.xml создать и положить в папку с плагом
    Код:
    <keymap>
    	<map context="DMC_MainMenuActions">
    		<key id="KEY_OK" mapto="ok" flags="m" />
    		<key id="KEY_HOME" mapto="cancel" flags="m" />
    		<key id="KEY_UP" mapto="up" flags="m" />
    		<key id="KEY_DOWN" mapto="down" flags="m" />
    		<key id="KEY_LEFT" mapto="left" flags="m" />
    		<key id="KEY_RIGHT" mapto="right" flags="m" />
    		<key id="KEY_POWER" mapto="power" flags="m" />
    	</map>
    </keymap>
    в плаге привязать функциоанл к кнопкам
    Код:
    	def __init__(self, session):
    ...
    		self["actions"] = HelpableActionMap(self, "DMC_MainMenuActions", 
    			{
    				"ok": self.okbuttonClick,
    				"cancel": self.cancel,
    				"left": self.left,
    				"right": self.right,
    				"up": self.up,
    				"down": self.down,
    				"power": self.power,
    			}, -1)
    ...
    функционал к кнопкам привязывается и без своего файла, проблема только в том, что это работает только после старта плага.

    Spoiler
    http://schwerkraft.elitedvb.net/scm/viewvc.php/enigma2-plugins/virtualzap/src/plugin.py?root=enigma2-plugins&view=markup


    здесь к примеру всё идет через автостарт и либо привинчиваются свои кнопки(myShowHideActions), либо переписываются существующие (InfobarShowHideActions)

    Код:
    	# delete current key map --> we have to use "ok" with b-flag
    	if config.plugins.virtualzap.mode.value == "1":
    		del self["ShowHideActions"]
    		# initialize own actionmap with ok = b and longOK = l
    		self["myactions"] = ActionMap( ["myShowHideActions"] ,
    		{
    			"toggleShow": self.toggleShow,
    			"longOK": self.showVZ,
    			"hide": self.hide,
    		}, 1)
    	elif config.plugins.virtualzap.mode.value == "2":
    		self["ShowHideActions"] = ActionMap( ["InfobarShowHideActions"] ,
    		{
    			"toggleShow": self.toggleShow,
    			"hide": self.newHide,
    		}, 1)
    Обсуждение всех нюансов развода в Германии. www.razvod.net

    Комментарий


    • #3
      Re: Autostart + Keymap - Enigma2 (python)

      автостарт тоже какойто непонятный, пока встретил два различных вида

      Spoiler
      http://schwerkraft.elitedvb.net/scm/viewvc.php/enigma2-plugins/virtualzap/src/plugin.py?root=enigma2-plugins&view=markup


      Код:
      def autostart(reason, **kwargs):
      	if config.plugins.virtualzap.mode.value != "0":
      		# overide InfoBarShowHide
      		global InfoBarShowHideINIT
      		if InfoBarShowHideINIT is None:
      			InfoBarShowHideINIT = InfoBarShowHide.__init__
      		InfoBarShowHide.__init__ = InfoBarShowHide__init__
      		# new method
      		InfoBarShowHide.showVZ = showVZ
      		InfoBarShowHide.VirtualZapCallback = VirtualZapCallback
      		if config.plugins.virtualzap.mode.value == "2":
      			InfoBarShowHide.newHide = newHide
      в этом я ничерта не понимаю .. что как инициализируется... полная муть

      и тот что я понимаю (enigma2-plugin-extensions-pauli_0.6.12_all)
      Код:
      def autostart(reason, **kwargs):
        global session
        if reason == 0 and kwargs.has_key("session"):
         session = kwargs["session"]
         session.open(PauliStartup)
      но вчера он у меня не заработал, писал мол нет сессии, если просто написать принт, или вызвать функцию из плага, а не класс, то тоже пашет


      запуск автостарт скрипта прост
      def Plugins(**kwargs):
      return [PluginDescriptor(
      where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART],
      fnc = autostart),
      PluginDescriptor(
      name="Pauli Neutrino Keymap",
      description="Switch Keymap & other usefull things",
      where = PluginDescriptor.WHERE_PLUGINMENU,
      icon="pauli.png",
      fnc=main)]
      Обсуждение всех нюансов развода в Германии. www.razvod.net

      Комментарий


      • #4
        Re: Autostart + Keymap - Enigma2 (python)

        получаю такую ошибку
        File "/usr/lib/enigma2/python/Plugins/Extensions/IPcam_2_12/plugin.py", line 19
        IpcamActions(session)
        ^
        при таком коде
        def autostart(reason, **kwargs):
        global session
        if reason == 0 and kwargs.has_key("session&quot:
        session = kwargs["session"]
        IpcamActions(session)

        class IpcamActions(object):

        def __init__(self, session):
        self.session = session
        IPcamActionMap = ActionMap(["IPcamActions"])
        IPcamActionMap.execBegin()
        IPcamActionMap.actions["test1"] = self.test1
        IPcamActionMap.actions["test2"] = self.test2
        IPcamActionMap.actions["test3"] = self.test3
        IPcamActionMap.actions["test4"] = self.test4

        def test1(self):
        print 'test1'

        def test2(self):
        print 'test2'

        def test3(self):
        print 'test3'

        def test4(self):

        и таком кеймепе
        <keymap>
        <map context="IpcamActions">
        <key id="KEY_HOME" mapto="test1" flags="mr" />
        <key id="KEY_END" mapto="test2" flags="mr" />
        <key id="KEY_SUBTITLE" mapto="test3" flags="m" />
        <key id="KEY_TEXT" mapto="test4" flags="m" />
        </map>
        </keymap>

        хотя у квикбаттонплага всё также
        Обсуждение всех нюансов развода в Германии. www.razvod.net

        Комментарий


        • #5
          Re: Autostart + Keymap - Enigma2 (python)

          скачал плаг квикбаттон для vu+
          ну там и автостарт другой и функция мэппинга.
          такчто не всё так просто, как мне хотелось (как было в старом коде)

          старый
          Spoiler
          Код:
          def autostart(reason, **kwargs):
          	if "session" in kwargs:
          		session = kwargs["session"]
          		Quickbutton(session) 
          ...
          class Quickbutton(object):
          	def __init__(self, session):
          		self.session = session
          		QuickbuttonActionMap = ActionMap(["QuickbuttonActions"])
          		QuickbuttonActionMap.execBegin()
          		QuickbuttonActionMap.actions["green_l"] = self.greenlong
          		QuickbuttonActionMap.actions["yellow_l"] = self.yellowlong
          		QuickbuttonActionMap.actions["red_l"] = self.redlong 
          		QuickbuttonActionMap.actions["blue_l"] = self.bluelong
          
          	def greenlong(self):
          		self.getPlugin(str(config.plugins.Quickbutton.green.value))
          	
          	def yellowlong(self):
          		self.getPlugin(str(config.plugins.Quickbutton.yellow.value))
          	
          	def redlong(self):
          		self.getPlugin(str(config.plugins.Quickbutton.red.value))
          
          	def bluelong(self):
          		self.getPlugin(str(config.plugins.Quickbutton.blue.value))


          новый
          Spoiler
          Код:
          from Screens.InfoBarGenerics import InfoBarPlugins
          baseInfoBarPlugins__init__ = None
          DM8000 = False
          
          def autostart(reason, **kwargs):
          	global baseInfoBarPlugins__init__,DM8000
          	if "session" in kwargs:
          		session = kwargs["session"]
          		if baseInfoBarPlugins__init__ is None:
          			baseInfoBarPlugins__init__ = InfoBarPlugins.__init__
          		InfoBarPlugins.__init__ = InfoBarPlugins__init__
          		InfoBarPlugins.greenlong = greenlong
          		InfoBarPlugins.yellowlong = yellowlong
          		InfoBarPlugins.redlong = redlong
          		InfoBarPlugins.bluelong = bluelong
          		if HardwareInfo().get_device_name() == "dm8000":
          			DM8000 = True		
          			InfoBarPlugins.red = red
          
          def setup(session,**kwargs):
          	session.open(QuickbuttonSetup)
          
          def Plugins(**kwargs):
          
          	list = [PluginDescriptor(where = PluginDescriptor.WHERE_SESSIONSTART, fnc = autostart)]	
          	list.append(PluginDescriptor(name="Setup Quickbutton", description=_("setup for Quickbutton"), where = [PluginDescriptor.WHERE_PLUGINMENU], fnc=setup))
          	return list
          
          def InfoBarPlugins__init__(self):
          	from Screens.InfoBarGenerics import InfoBarEPG
          	if isinstance(self, InfoBarEPG):
          		x = {	"green_l": (self.greenlong, _("Assign plugin to long green key pressed")),
          			"yellow_l": (self.yellowlong, _("Assign plugin to long yellow key pressed")),
          			"red_l": (self.redlong, _("Assign plugin to long red key pressed")),
          			"blue_l": (self.bluelong, _("Assign plugin to long blue key pressed"))}
          		if DM8000:
          			x["red_b"] = (self.red, _("Assign plugin to red key pressed"))
          		self["QuickbuttonActions"] = HelpableActionMap(self, "QuickbuttonActions",x)
          	else:
          		InfoBarPlugins.__init__ = InfoBarPlugins.__init__
          		InfoBarPlugins.greenlong = None
          		InfoBarPlugins.yellowlong = None
          		InfoBarPlugins.redlong = None
          		InfoBarPlugins.bluelong = None
          		if DM8000:
          			InfoBarPlugins.red = None
          	baseInfoBarPlugins__init__(self)
          
          def greenlong(self):
          	startPlugin(self,str(config.plugins.Quickbutton.green.value))
          
          def yellowlong(self):
          	startPlugin(self, str(config.plugins.Quickbutton.yellow.value))
          
          def redlong(self):
          	startPlugin(self, str(config.plugins.Quickbutton.red.value))
          
          def bluelong(self):
          	startPlugin(self, str(config.plugins.Quickbutton.blue.value))
          
          def red(self):
          	startPlugin(self, str(config.plugins.Quickbutton.red_b.value))
          Обсуждение всех нюансов развода в Германии. www.razvod.net

          Комментарий


          • #6
            Re: Autostart + Keymap - Enigma2 (python)

            итак сделал по новому
            <keymap>
            <map context="IpcamActions">
            <key id="KEY_HOME" mapto="key_home" flags="l" />
            <key id="KEY_END" mapto="key_end" flags="l" />
            </map>
            </keymap>
            from Screens.InfoBarGenerics import InfoBarPlugins
            baseInfoBarPlugins__init__ = None

            def autostart(reason, **kwargs):
            global baseInfoBarPlugins__init__
            ipcam_startup()
            if "session" in kwargs:
            session = kwargs["session"]
            if baseInfoBarPlugins__init__ is None:
            baseInfoBarPlugins__init__ = InfoBarPlugins.__init__
            InfoBarPlugins.__init__ = InfoBarPlugins__init__
            InfoBarPlugins.action_home = action_home
            InfoBarPlugins.action_end = action_end

            def InfoBarPlugins__init__(self):

            baseInfoBarPlugins__init__(self)
            from Screens.InfoBarGenerics import InfoBarEPG
            if isinstance(self, InfoBarEPG):
            x = { "key_home": (self.action_home, _("Assign plugin to long home key pressed&quot),
            "key_end": (self.action_end, _("Assign plugin to long end key pressed&quot)}
            self["IpcamActions"] = HelpableActionMap(self, "IpcamActions",x)
            else:
            InfoBarPlugins.__init__ = InfoBarPlugins.__init__
            InfoBarPlugins.action_home = None
            InfoBarPlugins.action_end = None

            baseInfoBarPlugins__init__(self)


            def action_home(self):
            print 'action_home'
            #self.session.open(PlayCamStream)

            def action_end(self):
            print 'action_end'
            автостарт идет, кнопки пашут и пашут походу только там где может быть инфобар (InfoBarPlugins)
            мне этого достаточно.
            после закрузки системы в тв модусе при долгом нажатии кнопок хоум или енд я вижу сообщение в консоли.

            почему не работает запуск класса self.session.open(PlayCamStream), я еще не понял, но в ошибке написнао, мол нет сессии
            Обсуждение всех нюансов развода в Германии. www.razvod.net

            Комментарий


            • #7
              Re: Autostart + Keymap - Enigma2 (python)

              тупо решил запустить плаг кнопкой и он пошел, поэтому к функционалу видеостима по нажатию кнопки пришлось прибамбасить скин.
              не знаю, можно ли без него, но он мне не мешает

              def action_home(self):
              print 'action_home'
              self.session.open(PlayCamStream)

              def action_end(self):
              print 'action_end'
              self.session.open(IPcam)
              class PlayCamStream(Screen):

              skin = """
              <screen position="100,100" size="80,0" title="IPcam">
              <widget name="snapshot" position="0,0" size="160,120"/>
              </screen>"""

              def __init__(self, session, args = None):

              self.skin = PlayCamStream.skin

              Screen.__init__(self, session)

              self["snapshot"] = Pixmap()

              self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
              {
              "ok": self.playstream,
              "back": self.back
              }, -1)
              осталось узнать, как запустить self.playstream не нажимая кнопки, сразу после загрузки плага.
              Обсуждение всех нюансов развода в Германии. www.razvod.net

              Комментарий


              • #8
                Re: Autostart + Keymap - Enigma2 (python)

                ну вот таким тупым способом без вызова функции стрим стартует

                self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
                {
                "back": self.back
                }, -1)

                stream_url = "rtsp://192.168.178.38/img/video.sav"
                self.session.nav.stopService()
                sref = eServiceReference(4097, 0, stream_url)
                self.session.nav.playService(sref)

                def back(self):
                self.session.nav.stopService()
                self.close()
                пол дела сделано, нужно найти еще функцию для запуска функции при инициализации
                иначе если делаю так

                print 'xxx'
                self.startuem_funkziju (self.playstream)
                print 'xxx'

                при таком раскладе выводятся надписи, но функция не зыпускается. прикол не понимаю


                вот так зафункциклировало
                Код:
                		self.onShown.append(self.showImage)
                Обсуждение всех нюансов развода в Германии. www.razvod.net

                Комментарий


                • #9
                  Re: Autostart + Keymap - Enigma2 (python)

                  вот нашол у платного имиджа
                  как мне его пребамбасить к плагину
                  а то геминскую страницу читаю па сто раз и
                  чегото недоходит


                  <keymap>
                  <map context="InfobarSeekActionsKartinaTV"&gt ;
                  <device name="dreambox remote control (native)">
                  <key id="KEY_YELLOW" mapto="pauseService" flags="b" />
                  <key id="KEY_GREEN" mapto="unPauseService" flags="b" />
                  <key id="KEY_RED" mapto="seekBack" flags="b" />
                  <key id="KEY_BLUE" mapto="seekFwd" flags="b" />
                  <key id="KEY_RED" mapto="seekBackManual" flags="l" />
                  <key id="KEY_BLUE" mapto="seekFwdManual" flags="l" />
                  </device>
                  <device name="dreambox advanced remote control (native)">
                  <key id="KEY_PLAY" mapto="playpauseService" flags="m" />
                  <key id="KEY_PLAYPAUSE" mapto="playpauseService" flags="m" />
                  <key id="KEY_PREVIOUSSONG" mapto="seekBack" flags="b" />
                  <key id="KEY_NEXTSONG" mapto="seekFwd" flags="b" />
                  <key id="KEY_PREVIOUSSONG" mapto="seekBackManual" flags="l" />
                  <key id="KEY_NEXTSONG" mapto="seekFwdManual" flags="l" />
                  </device>
                  <device name="dreambox ir keyboard">
                  <key id="KEY_PAUSE" mapto="pauseService" flags="m" />
                  <key id="KEY_PLAY" mapto="playpauseService" flags="m" />
                  <key id="KEY_REWIND" mapto="seekBack" flags="b" />
                  <key id="KEY_FASTFORWARD" mapto="seekFwd" flags="b" />
                  <key id="KEY_REWIND" mapto="seekBackManual" flags="l" />
                  <key id="KEY_FASTFORWARD" mapto="seekFwdManual" flags="l" />
                  </device>
                  </map>
                  </keymap>
                  dm800hd ,DreamEliteBH_DM800-1.3. ,HDD TOSHIBA MK2552GSX 250gb,usb 16gb,A-LINK DTU(h), USB 2.0 Digital TV Receiver (DVB-T). мои любимыи скин Glamour_X-Infinity мод. nKTVplayer

                  Комментарий


                  • #10
                    Re: Autostart + Keymap - Enigma2 (python)

                    я прибамбасилк кеймап, но это не помогает.
                    у меня блэкхол и при двойном нажатии зеленка. как привязать кеймап я описал выше, если не понимаешь, то значит не судьба.
                    потом сможешь посмотреть на мою версию с кеймапом
                    Обсуждение всех нюансов развода в Германии. www.razvod.net

                    Комментарий


                    • #11
                      Re: Autostart + Keymap - Enigma2 (python)

                      [quote author=nitrogen14 link=topic=7659.msg99515#msg99515 date=1294092963]
                      я прибамбасилк кеймап, но это не помогает.
                      у меня блэкхол и при двойном нажатии зеленка. как привязать кеймап я описал выше, если не понимаешь, то значит не судьба.
                      потом сможешь посмотреть на мою версию с кеймапом
                      [/quote]


                      буду ждать упорна  тогда и позырю
                      dm800hd ,DreamEliteBH_DM800-1.3. ,HDD TOSHIBA MK2552GSX 250gb,usb 16gb,A-LINK DTU(h), USB 2.0 Digital TV Receiver (DVB-T). мои любимыи скин Glamour_X-Infinity мод. nKTVplayer

                      Комментарий


                      • #12
                        Re: Autostart + Keymap - Enigma2 (python)

                        ну тогда иди в соседнюю тему и смотри исходники версии 016
                        Обсуждение всех нюансов развода в Германии. www.razvod.net

                        Комментарий

                        Обработка...
                        X