Основанные на WMI горячие клавиши на не работе

При выходе из оболочки без -H терминал будет закрыт, также. С этим флагом будет продолжать работать терминал, но процесс оболочки закрывается и не может быть восстановлен.

Я думаю, что Вы пробуете к archieve, что Вы только запускаете свой терминал, и Ваша среда разработки запускает?

Можно создать сценарий оболочки и поместить все команды в нем. В конце сценария Вы только запускаете свою оболочку:

#!/bin/sh

gradle &
git &
... &
.... &
jboss &

$SHELL

# some cleanup commands if needed

Затем назовите этот сценарий через xfce4-terminal -e /the/script. При выходе от $SHELL родительский процесс (Ваш сценарий) законченный и фоновые задачи получит сигнал выхода и выйдет, также.

Если Вы хотите поддержать их, используйте, например. nohup jboss & в Вашем сценарии

5
20.10.2014, 00:53
2 ответа
[117754]Вы можете установить [118232]xbacklight[118233], утилиту для управления яркостью, используя [118234]RandR[118235]. Затем, чтобы активировать ее, используйте простой скрипт, привязанный к двум вашим клавишам:[12163]Swap out your notification method for whatever you use as part of your normal setup, например, [118236]notify-send[118237].[117757].
3
27.01.2020, 20:37

В этом сообщении описывается мой подход к отладке WMI на основе DSDT из вашего acpidump (SSDT не содержит здесь соответствующих подробностей).

\ _ SB.AMW0 - это устройство WMI в микропрограмме Dell ACPI.Метод \ EV4 вызывает \ WMNF , который является единственным методом, который вызывает устройство \ _ SB.AMW0 (функция SWEV = Установить ? Событие WMI). \ EV4 - это метод, который вызывается встроенным контроллером клавиатуры.

Теперь SWEV - это установленное событие WMI, CMEV , скорее всего, является событием очистки WMI. После вызова SWEV устанавливаются биты в переменной WMEV («Событие WMI»?). WMI проверяет коды событий, вызывая метод _WED и проверяя его возвращаемое значение. В этом методе _WED действительно видно, что проверяется WMEV и вызывается CMEV :

Method (_WED, 1, NotSerialized)  // _Wxx: Wake Event
{
    WVSP ()
    If (LNotEqual (Arg0, 0xD0))
    {
        WVCU ()
        Return (WMBU) /* \_SB_.AMW0.WMBU */
    }

    If (LEqual (ECD0, Zero))
    {
        WVCU ()
        Return (WMBU) /* \_SB_.AMW0.WMBU */
    }

    If (And (WMEV, 0x0200))
    {
        CWEV (0x0200)
        // WMBU = { 0x0002, 0x0000, 0xE045 }
        WVPT (0x02)
        WVPT (Zero)
        WVPT (0xE045)
    }
    Else
    {
        If (And (WMEV, 0x0100))
        {
            CWEV (0x0100)
            If (ECG4 ())
            {
                WVPT (0x02)
                WVPT (Zero)
                WVPT (0xE043)
            }
            Else
            {
                WVPT (0x02)
                WVPT (Zero)
                WVPT (0xE044)
            }
        }
        Else
        {
            If (And (WMEV, 0x0800))
            {
                Store (EC0A (WMBU), WMBU) /* \_SB_.AMW0.WMBU */
                CWEV (0x0800)
            }
        }
    }

    WVCU ()
    Return (WMBU) /* \_SB_.AMW0.WMBU */
}

Обратите внимание, однако, есть два условия, которые могут помешать возвращаемый код события (здесь не применяется):

  • Если Arg0 (идентификатор уведомления) не равен 0xD0. Это не так, как видно из этой интерпретации описания WMI:

     9DBB5994-A997-11DA-B012-B622A1EF5492: 
    object_id: � [D0 00] 
    notify_id: D0 
    зарезервировано: 00 
    instance_count: 1 
    flags: 0x8 ACPI_WMI_EVENT 
     
  • Если \ _ SB.AMW0.ECD0 равно 0 . Поскольку код Dell WMI прослушивает события WMI, вызывается WED0 (событие WMI D0 ) с ненулевым аргументом, и это также не выполняется.

Итак, продолжим интерпретацию _WED . Возвращаемое значение теперь зависит от значения WMEV . WVPT устанавливает 16-битное слово в возвращаемом буфере WMBU (и продвигает указатель для следующего вызова WVPT ). Мы можем построить следующую таблицу:

WMEV                returned WMBU   guessed key (see dell-wmi)
0200                0002 0000 E045  KEY_PROG1 or NumLock
0100 (ECG4())       0002 0000 E043  ??
0100 (not ECG4())   0002 0000 E044  ??
0800                ?? (value depends on EC registers)

Теперь код dell-wmi ожидает, что второе слово будет 0x0010 , а не 0x0000 . Для дальнейшей отладки вы должны включить параметр debug_event для модуля WMI

# remove all dependencies of WMI and WMI itself:
modprobe -vr dell-wmi
modprobe wmi debug_event
modprobe dell-wmi

. Теперь нажмите горячие клавиши и посмотрите журналы ядра. Вам нужно выяснить, каков точный формат WMBU , я полагаю, что вы получите наиболее интересные ключи для WMEV 0x0800, вам нужно рассмотреть это поближе. Возможно, добавьте это в dell_wmi_notify (после u16 * buffer_entry = (u16 *) obj-> buffer.pointer; ) для отладки:

pr_info("WMBU = %04x %04x %04x\n", buffer_entry[0], buffer_entry[1], buffer_entry[2]);
5
27.01.2020, 20:37

Теги

Похожие вопросы