LINUX.ORG.RU

LIRC, одна клавиша и несколько программ

 ,


0

1

Задача такая. Нужно чтобы когда запущен mplayer, кнопки, которые прописаны для mplayer, срабатывали только для него. В остальных случаях irxevent (для остальных программ).
Кусок конфига:

begin
    prog= mplayer
    button= OK
    config= pause
    #flags = quit
end

begin
    prog= irxevent
    button= OK
    delay= 1
    config= Key Return CurrentWindow
end

Я думал что мне поможет flags=quit, однако при его использовании irxevent не отрабатывает события, даже если mplayer не запущен.

Из мануала про флаг quit: „Usually all configurations are examined whether they have to be executed. You can stop this immediately with this flag. Configurations further below will not be executed if the current button press matches the current configuration. A match also happens if the current configuration defines a button sequence and only part of the sequence already was entered.

Если flags убрать, то нажатие обрабатывает и mplayer, и irxevent.

★★★☆

Последнее исправление: firestarter (всего исправлений: 2)

Ключевое слово - mode


# 1. войти в режим выбора активного приложения по нажатию кнопки MENU
begin
  remote = AA59-00332
  button = MENU
  prog = irexec
  config = ~/.lirc/osd/osdModeChange &
  mode = mode_select
  repeat = 0
end

# 2. выбираем активное приложение
begin mode_select
  # режим работы с amarok (аудиопроигрыватель) 
  begin
    remote = AA59-00332
    button = 1
    repeat = 0
    prog = irexec
    config = ~/.lirc/osd/osdActiveApp "Active Application is Amarok" &
    mode = amarok
    flags = quit
  end
  # режим работы с SMPlayer (видеопроигрыватель)
  begin
    remote = AA59-00332
    button = 2
    repeat = 0
    prog = irexec
    config = ~/.lirc/osd/osdActiveApp "Active Application is SMPlayer" &
    mode = smplayer
    flags = quit
  end
end mode_select

# 3. Действия для соответсвующих режимов
begin amarok
  begin
   remote = AA59-00332
   button = ENTER
   prog = irexec
   config = qdbus org.mpris.amarok /Player Pause
 end
end amarok

begin smplayer
   begin
     remote = AA59-00332
     button = ENTER
     prog   = irexec
     repeat = 0
     config = xdotool key space # play/pause - setup hot-key in smplayer
   end
end smplayer
  • 1. Переводим пульт в режим выбора активного приложения
  • 2. Выбираем активное приложение. Кнопка «1» - amarok, «2» - smplayer
  • 3. Настраиваем действия для актвного приложения.

P.S. так же в моём файле есть вот это:

# поскольку amarok сделан по кривому
# то активируем его по умолчанию
begin
  flags = startup_mode
  mode = amarok
end
но сейчас нет com-порта, нет Lirc'a, деталей не помню.

Jurik_Phys ★★★★★
()

И, да, как автоматически сделать выбор активного приложения - не знаю.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от Jurik_Phys

Это что-то не то, как я понял. Например нужно чтобы кнопка OK работала везде как Enter. Однако когда запущен Mplayer, там она должна работать как пауза. То есть те кнопки, у которых есть prog=mplayer помимо prog=irxevent, должны работать только в Mplayer когда он запущен. Остальные кнопки, для которых указан только prog=irxevent, должны работать всегда, в т.ч. когда запущен Mplayer.

firestarter ★★★☆
() автор топика
Ответ на: комментарий от firestarter

Это что-то не то, как я понял. Например нужно чтобы кнопка OK работала везде как Enter. Однако когда запущен Mplayer, там она должна работать как пауза.

LIRC не знает, что запущено и как. Но, он может иметь параллельно несколько наборов настроек (режимов), причём их можно переключать. Когда активен один набор, другие отключены.

Собственно, делаешь набор, где «ОК» - Enter и набор «mplayer», где OK - пауза. Когда нужно рулить «mplayer'ом» выбираешь соответствующий режим.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от firestarter

Ручное переключение не катит.

Не подходит один костыль, подойдёт другой. Linux, как он есть!

Jurik_Phys ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.