Как отключить сенсорную панель с помощью командной строки?

Я подозреваю, что Firefox не обновляет файл cookie.sqlite напрямую для обеспечения целостности данных и производительности. Скорее, он временно хранит данные в файле cookie.sqlite-journal (Firefox 3.x). Поскольку cookie сеанса часто изменяется, разумно, что файлы cookie не присутствуют в файле cookie.sqlite. Когда Firefox закрыт, применяются изменения в cookie.sqlite.

Обходной путь доступен с использованием сценария Greasemonkey.

Установите дополнение Greasemonkey , Перезапустите Firefox. Между тем сохраните следующий текст как «jsessionid.user.js».
// ==UserScript==
// @name           JSESSIONID to localStorage
// @namespace      lekensteyn@gmail.com
// @description    Saves the JSESSIONID cookie in localStorage
// @include        https://demo.nadex.com/dealing/pd/cfd/security*
// ==/UserScript==
(function() {
    var sessid = document.cookie.match(/JSESSIONID=([^;]+)/);
    if (sessid) {
        var oldSID = localStorage.JSESSIONID;
        if (sessid != oldSID) localStorage.JSESSIONID = sessid[1];
    }
})();
Это должно получить куки-файлы сеанса сразу после входа в систему и хранить с использованием хранилища HTML5, если идентификатор сеанса отличается от ранее сохраненного. Если вам нужно сделать сценарий ранее сохраненным идентификатором сеанса, вам необходимо изменить строку @include на что-то вроде https://demo.nadex.com/*. Я заметил, что никакой идентификатор сеанса не передается через HTTP, а только HTTPS. Откройте файл jsessionid.user.js в Firefox (или перейдите в Firefox). Вам будет предложено установить его. Принять это. В Bash используйте что-то вроде:
sessid=$(sqlite3 ~/.mozilla/firefox/xxx.xxx/webappsstore.sqlite "SELECT \
 value FROM webappsstore2 WHERE key='JSESSIONID' AND secure='1' \
 AND host LIKE 'moc.xedan.%' LIMIT 1;")
moc.xedan. является частью домена в обратном порядке.

Для отладки вы можете использовать следующий букмарклет:

javascript:alert("JSESSIONID=" + localStorage.JSESSIONID);

Он отобразит null, если такого идентификатора не найдено. Обратите внимание, что это важно, выполняете ли вы его на https://demo.nadex.com или http://demo.nadex.com. Этот букмарклет можно вставить прямо в панель местоположения.

1
задан 6 June 2016 в 07:34

4 ответа

Есть как минимум два метода (которые я знаю), которые вы могли бы попробовать.

synclient

Если ваш ноутбук оснащен сенсорной панелью Synaptics (или ALPS), вы действительно можете использовать synclient, как уже упоминалось в Shutupsquare. Я запускаю Ubuntu 14.04, и на моей машине он был установлен по умолчанию.

Проверьте, установлен ли synclient: synclient -V (он должен сообщить номер версии)

Поверните сенсорную панель в положение ON : synclient TouchpadOff=0

Поверните сенсорную панель в положение OFF: synclient TouchpadOff=1

Я не тестировал это сам, но если ваша цель - не перемещать мышь, когда ваши руки опираются на прикосновение Это может помочь.

Включить обнаружение ладони ON: synclient PalmDetect=1

Отключить обнаружение ладони OFF: synclient PalmDetect=0

Как правило, вы можете настроить любое свойство вашей сенсорной панели Synaptics synclient property=value. Если свойство является одним из доступных свойств, показанным в synclient -l

Ссылки для дальнейшего чтения

ubuntu - справочная информация о подключении - SynapticsTouchpad

archlinux - wiki - Сенсорная панель Synaptics

ask ubuntu - Как настроить настройки синхронизации? - Ubuntu

xinput

Если вы не хотите или не можете использовать synclient, вы также можете использовать xinput. Процедура несколько схожа.

перечисляет все xinput устройства: xinput

Часть вывода может выглядеть так:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=13   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=17   [slave  pointer  (2)]

Это конкретный case my touchpad имеет id = 17, а его полное имя - «ETPS / 2 Elantech Touchpad».

Команда для установки свойства - xinput set-prop. Свойство включить или отключить сенсорную панель - Device Enabled, чтобы включить или отключить его тип:

Включить сенсорную панель ВКЛ: xinput set-prop <id> "Device Enabled" 1 (где <id> - ваш идентификатор устройства, в моем случае 17)

Отключить сенсорную панель ВЫКЛ: xinput set-prop <id> "Device Enabled" 0

Включить обнаружение ладони ВКЛ: xinput set-prop <id> "Palm Detection" 1

Обнаружение поворота ладони ВЫКЛ: xinput set-prop <id> "Palm Detection" 0

] Чтобы запросить доступные свойства: xinput list-props <id> ИЛИ xinput list-props <full-name>, это должно быть вполне похоже на synclient -l.

Ссылки для дальнейшего чтения

ubuntu - wiki - SynapticsTouchpad

ПРИМЕЧАНИЕ

При настройке свойств через xinput или synclient свойства не устанавливаются на другой инструмент. Они также не установлены в едином центре управления.

20
ответ дан 25 May 2018 в 18:03
  • 1
    Спасибо за второй ответ. synclient не работал для меня, xinput. – Robin Winslow 18 November 2014 в 16:18
  • 2
    Обратите внимание, что идентификаторы xinput могут меняться заново. Поэтому использование этих идентификаторов в скриптах или ярлыках не будет работать. – Lode 17 July 2015 в 20:47
  • 3
    synclient полностью работает на Arch Linux. Спасибо так много !!! – Theodore R. Smith 15 December 2016 в 21:24
  • 4
    Это сделало это для меня. В частности, я обнаружил, что мне нужно запустить xinput <enable/disable> <id>, поскольку установка TouchpadOff через synclient была неэффективной. – Michael Mol 24 March 2018 в 18:43

synclient и xinput не будут работать, если вы используете среду gnome (или единство, корицу), потому что она переопределит настройки, поэтому, если вы хотите, чтобы synclient или xinput приняли эти настройки, вы должен сначала отключить эту функцию:

установить dconf-editor, если не установлен:
apt-get install dconf-editor
запустить dconf-editor
dconf-editor 
открыть каталог /org/gnome/settings-daemon/plugins/mouse/ или /org/cinnamon/settings-daemon/plugins/mouse/ и снять флажок для active. logout или reboot

Это должно сделать работу synclient или xinput.

4
ответ дан 25 May 2018 в 18:03
Перечислите свои устройства ввода:
xinput list
В моем случае у меня есть этот список:
Virtual core XTEST pointer                  id=4
Logitech M510                               id=11   
ETPS/2 Elantech Touchpad                    id=15
Отключите свой тачпад, передав ID
xinput set-prop 15 "Device Enabled" 0
1
ответ дан 25 May 2018 в 18:03

Я написал фрагмент кода python, чтобы вы могли использовать технику xinput, не выполняя всю ручную работу. Copyleft, AS-IS, без гарантии, используйте на свой страх и риск. Отлично работает для меня: и если вы используете gnome, просто сопоставьте его с ключевым ярлыком, например CtrlShiftT.

#!/usr/bin/python2
# -*- coding: utf-8 -*-
'''Program to toggle Touchpad Enable to Disable or vice-versa.'''

import commands
import re


def current_id():
    """ Search through the output of xinput and find the line that has the
    word TouchPad.  At that point, I believe we can find the ID of that device."""

    props = commands.getoutput("xinput").split("\n")
    match = [line for line in props if "TouchPad" in line]
    assert len(match) == 1, "Problem finding Touchpad string! %s" % match

    pat = re.match(r"(.*)id=(\d+)", match[0])
    assert pat, "No matching ID found!"

    return int(pat.group(2))


def current_status(tpad_id):
    """Find the current Device ID, it has to have the word TouchPad in the line."""

    props = commands.getoutput("""xinput list-props %d""" % tpad_id).split('\n')
    match = [line for line in props if "Device Enabled" in line]
    assert len(match) == 1, "Can't find the status of device #%d" % tpad_id

    pat = re.match(r"(.*):\s*(\d+)", match[0])
    assert pat, "No matching status found!"
    return int(pat.group(2))

def flop(tpad_id, status):
    """Change the value of status, and call xinput to reverse that status."""
    if status == 0:
        status = 1
    else:
        status = 0

    print "Changing Device #%d Device Enabled %d" % (tpad_id, status)
    commands.getoutput("""xinput set-prop %d "Device Enabled" %d""" % (tpad_id, status))

def main():
    """Get curent device id and status, and flop status value."""
    tpad = current_id()
    stat = current_status(tpad)
    flop(tpad, stat)

main()
1
ответ дан 25 May 2018 в 18:03

Другие вопросы по тегам:

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