Як відключити тачпад під час використання точки сліду на Thinkpad?


21

Thinkpads (наприклад, X230, який я використовую) має як точку сліду, так і тачпад. Тачпад відключається під час набору тексту.

Однак, використовуючи точку сліду, я часто торкаюся і тачпада, і генерую клацання миші, яких я хотів би уникнути. Хтось має уявлення про те, як відключити натискання миші на тачпад, коли використовується трекпойнт?

EDIT: також чи може хтось пояснити, як працює можливість відключення тачпада під час введення тексту? Що робиться за лаштунками? Це команда конфігурації xinput, і якщо так, то яка?

EDIT2: уточнення; вручну відключення тачпада (навіть за допомогою ярлика) тут не проблема. Це повинно працювати так само, як опція "відключити тачпад під час набору тексту", оскільки я використовую тачпад і трекпойнт взаємозамінно (найчастіше я використовую сенсорну панель для прокрутки та трекпойнт для переміщення курсору).


Це було б цікаво. Те, як розкладена клавіатура, сприяє блукаючим жестам, що перешкоджають правильній роботі. Я не думаю, що це можливо при нинішніх варіантах, але, можливо, у майбутньому? Я вважаю, що я повинен використовувати дві руки для набору та вказування, згинаючи високу (праву) руку, щоб уникнути чищення / натискання трекпада.
вперше

На даний момент у мене відключені клацання миші за допомогою тачпада - я вважаю, що в більшості випадків я в будь-якому випадку використовую кнопки вгорі сенсорної панелі.
січня

Відповіді:


10

Вимкнення тачпада, коли використовується клавіатура

Цю функцію виконує syndaemonутиліта, з xserver-xorg-input-synapticsпакета. Ви можете встановити такі параметри, як час очікування, частота опитування тощо (див. Довідку виконання ):

Використання: syndaemon [-i простоювати] [-m затримка опитування] [-d] [-t] [-k]
  -i скільки секунд чекати після останнього натискання клавіші раніше
     включення тачпада. (за замовчуванням - 2,0s)
  -м Скільки мілі-секунд чекати до наступного опитування.
     (за замовчуванням - 200 мс)
  ...
  -t Вимкнути лише натискання та прокрутку, а не рухи миші.

Ось вихідний код для syndaemon.c.

  • Важливими функціями є keyboard_activity(...)іmain_loop(...)
  • keyboard_activityвикористовує виклик API XQueryKeyMap для отримання поточного стану клавіатури (1 біт на клавішу), а потім порівнює - з останнім (старим) станом; якщо вони різні, він повертає 1
  • main_loopопитує keyboard_activityкожні mмілісекунди, і на основі "часу останньої активності" та keyboard_activityповертає чи істинно чи неправдиво, вирішує, вимкнути чи ввімкнути тачпад.
  • dp_get_deviceФункція показує , як пристрої введення X перераховані; Ви повинні мати змогу змінити це та keyboard_activityфункцію, щоб також перевірити наявність будь-якої активності.

  • У xinputсписки інструментів пристрої і ідентифікатори, наприклад »

    Ідентифікатор віртуального ядра id = 2 [головний вказівник (3)]
    ⎜ ↳ Віртуальна ядро ​​XTEST pointer id = 4 [підлеглий покажчик (2)]
    ⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [підлеглий покажчик (2)]
    ⎜ ↳ TPPS / 2 IBM TrackPoint id = 12 [підлеглий покажчик (2)]

  • Ви можете отримати це (ідентифікатор) за допомогою функції XListInputDevices

  • Після цього потрібно отримати ручку пристрою з ідентифікатора за допомогою XOpenDevice
  • Потім ви використовуєте функцію XQueryDeviceState для отримання координат вказівника TrackPoint; подібно до існуючого циклу, ви запитуєте це так часто і перевіряєте, чи змінилися координати (тобто використовується TrackPoint) і використовуєте його для вмикання та вимикання тачпада.
  • Ви можете скористатися xinputутилітою з query-stateкомутатором та ідентифікатором пристрою, щоб перевірити правильність програмування, наприклад:

    $ xinput-стан запиту 12
    2 класи:
    ButtonClass
    кнопка [1] = вгору
    кнопка [2] = вгору
    кнопка [3] = вгору
    кнопка [4] = вгору
    кнопка [5] = вгору
    кнопка [6] = вгору
    кнопка [7] = вгору
    ValuatorClass Mode = Відносна близькість = In
    оцінювач [0] = 854
    оцінювач [1] = 867
    
  • Вас цікавлять значення оцінювача , які є X та Y координатами TrackPoint
  • xinputБільше порад див. У джерелі
  • Щоб змінити та відновити цей пакет:

    1. Отримайте джерело за допомогою apt-get source...
    2. Внесіть зміни до tools/syndaemon.c
    3. Вимкніть існуючі syndaemonпатчі, коментуючи 118...і 124...рядки вdebian/patches/series
    4. Створіть модифікований пакет з, dpkg-buildpackage -us -ucі файли deb будуть знаходитися в батьківському каталозі.

1
Оскільки виграш закінчується через три дні, я б уклав угоду з вами (якщо не з’явиться кращої відповіді): я призначу вам суму, якщо ви вкажете мені API для запиту пристрою за допомогою ідентифікатора xinput і дайте посилання на сторінку, що описує, як створити пакет дебюту з модифікованих джерел. Тоді я міг би застосувати цей підхід. Було б це гаразд?
січня

Вибачте, я був у відсутності. Це звучить прекрасно, я спробую знайти інформацію та відредагувати відповідь через кілька годин.
Останній

не хвилюйтесь! це добре
січня

1
Як обіцяв, ви отримаєте щедрості. Я не приймаю відповідь, тому що мені потрібно спершу кодувати рішення.
січня

1
@January, не впевнений, чи вдалося вам ще кодувати своє рішення? Я зафіксував syndaemon для підтримки моніторингу траєкторії. github.com/eyko/xf86-input-synaptics (виконувати тут github.com/eyko/xf86-input-synaptics/commit/… ) Для того, щоб контролювати TrackPoint, вам потрібно передати прапор -T опції під час запуску syndaemon.
Вінс

4

Перше, що потрібно зробити - це знати свій сенсорний панель id.Так що робити, виконайте ці дії

Спочатку відкрийте термінал і запустіть цю команду

~$ xinput --list

Ось ми це і отримуємо Touchpad id = <id Number>

Після цього відкрийте комбінації клавіш, а потім додайте це нижче двох команд за допомогою комбінацій клавіш.

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

введіть тут опис зображення введіть тут опис зображення


Дякую, але відключення сенсорної панелі вручну тут не проблема (навіть із ярликом), і я знаю, як це зробити. Ідея полягає у відключенні сенсорної панелі автоматично під час використання Trackpoint, подібно до того, як сенсорна панель відключається автоматично, коли використовується клавіатура (див. Налаштування "відключити тачпад під час введення" в налаштуваннях "Миша та тачпад").
січня

0

Ось низькотехнологічне рішення, яке може бути поганим для використання енергії (патч syndaemon -T не працював для мене).

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

Потрібно трохи пощастило помітити, що ви використовуєте точку сліду, оскільки вона може повідомляти координати лише протягом кожного інтервалу 5с. Іншими словами, вона дуже консервативна щодо відключення тачпада, але не повинна надійно повторно включати її, коли траєкторія не працює.

У будь-якому випадку мені це дуже допомагає на моїй ультрабуці з блукаючим курсором з пальмового преса.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.