Bagaimana cara menonaktifkan touchpad saat menggunakan trackpoint pada Thinkpad?

21

Thinkpad (mis. X230 yang saya gunakan) memiliki trackpoint dan touchpad. Touchpad dinonaktifkan saat mengetik.

Namun, ketika saya menggunakan trackpoint, saya sering menyentuh touchpad juga, dan menghasilkan klik mouse yang ingin saya hindari. Adakah yang tahu bagaimana cara menonaktifkan klik mouse pada touchpad saat trackpoint sedang digunakan?

SUNTING: juga, dapatkah seseorang menjelaskan bagaimana cara menonaktifkan touchpad saat mengetik berfungsi? Apa yang sedang dilakukan di belakang layar? Apakah ini perintah konfigurasi xinput, dan jika ya, yang mana?

EDIT2: klarifikasi; menonaktifkan Touchpad secara manual (meskipun dengan pintasan) bukan masalah di sini. Ini seharusnya berfungsi seperti opsi "disable touchpad when typing", karena saya menggunakan Touchpad dan Trackpoint secara bergantian (paling sering, saya menggunakan Touchpad untuk menggulir dan Trackpoint untuk memindahkan kursor).

Januari
sumber
Ini akan menarik. Cara keyboard diletakkan memberikan kontribusi untuk gerakan menyimpang mengganggu operasi yang tepat. Saya tidak berpikir ini mungkin dengan opsi saat ini, tetapi mungkin di masa depan? Saya menemukan saya harus menggunakan dua tangan untuk mengetik & menunjuk, melengkungkan tangan (kanan) saya yang tinggi, untuk menghindari menyikat / menyentuh trackpad.
fleamour
Saat ini, saya telah menonaktifkan klik mouse dengan touchpad - Saya menemukan bahwa dalam kebanyakan kasus, saya menggunakan tombol di bagian atas touch pad.
Januari

Jawaban:

10

Menonaktifkan panel sentuh saat keyboard digunakan

Fungsi ini dilakukan oleh syndaemonutilitas, dari xserver-xorg-input-synapticspaket. Anda dapat mengatur opsi seperti waktu idle, frekuensi polling, dll (lihat bantuan runtime ):

Penggunaan: syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k]
  -i Berapa detik untuk menunggu setelah tombol terakhir ditekan sebelumnya
     mengaktifkan touchpad. (standarnya 2.0s)
  -m Berapa mili detik untuk menunggu sampai polling berikutnya.
     (standarnya adalah 200 ms)
  ...
  -t Hanya menonaktifkan penyadapan dan pengguliran, bukan gerakan mouse.

Inilah kode sumber untuk syndaemon.c.

  • Fungsi penting adalah keyboard_activity(...)danmain_loop(...)
  • keyboard_activitymenggunakan panggilan API XQueryKeyMap untuk mendapatkan status keyboard saat ini (1 bit per kunci), dan kemudian membandingkannya dengan status terakhir (lama); jika mereka berbeda, ia mengembalikan 1
  • main_looppolling keyboard_activitysetiap mmilidetik, dan berdasarkan pada "waktu aktivitas terakhir" dan apakah keyboard_activitymengembalikan benar atau salah, ia memutuskan apakah akan menonaktifkan atau mengaktifkan touchpad.
  • The dp_get_deviceFungsi menggambarkan bagaimana perangkat input X disebutkan; Anda harus dapat memodifikasi ini dan keyboard_activityfungsinya untuk juga memeriksa aktivitas trackpoint.

  • The xinputdaftar alat perangkat dan ID, misalnya"

    Virtual core pointer id = 2 [master pointer (3)]
    ⎜ ↳ Virtual core XTEST pointer id = 4 [pointer slave (2)]
    ⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [pointer slave (2)]
    ⎜ ↳ TPPS / 2 IBM TrackPoint id = 12 [pointer slave (2)]

  • Anda bisa mendapatkan ini (ID) melalui fungsi XListInputDevices

  • Setelah itu, Anda harus mendapatkan pegangan perangkat dari ID menggunakan XOpenDevice
  • Kemudian, Anda menggunakan fungsi XQueryDeviceState untuk mendapatkan koordinat pointer TrackPoint; mirip dengan loop yang ada, Anda polling ini sangat sering dan memeriksa apakah koordinat telah berubah (yaitu TrackPoint sedang digunakan), dan menggunakannya untuk mengaktifkan atau menonaktifkan touchpad.
  • Anda dapat menggunakan xinpututilitas dengan query-statesakelar dan ID perangkat untuk memeriksa apakah pemrograman Anda benar, misalnya:

    Status permintaan $ xinput 12
    2 kelas:
    ButtonClass
    tombol [1] = atas
    tombol [2] = atas
    tombol [3] = atas
    tombol [4] = atas
    tombol [5] = atas
    tombol [6] = atas
    tombol [7] = atas
    Mode ValuatorClass = Kedekatan Relatif = Di
    penilai [0] = 854
    penilai [1] = 867
    
  • Anda tertarik dengan nilai penilai , yang merupakan koordinat X dan Y dari TrackPoint
  • Lihat xinputsumber untuk tips lebih lanjut
  • Untuk memodifikasi dan membangun kembali paket ini:

    1. Dapatkan sumbernya apt-get source...
    2. Buat modifikasi untuk tools/syndaemon.c
    3. Nonaktifkan syndaemontambalan yang ada dengan mengomentari tanda 118...dan 124...didebian/patches/series
    4. Bangun paket Anda yang dimodifikasi dengan dpkg-buildpackage -us -ucdan file deb akan berada di direktori induk.
ish
sumber
1
Karena hadiah akan kedaluwarsa dalam tiga hari, saya akan sepakat dengan Anda (kecuali jika jawaban yang lebih baik muncul): Saya akan memberikan hadiah kepada Anda jika Anda akan mengarahkan saya ke API untuk meminta perangkat dengan pengidentifikasi xinput dan berikan tautan ke halaman yang menjelaskan cara membuat paket deb dari sumber yang dimodifikasi. Maka saya akan bisa menerapkan pendekatan ini. Apakah itu baik-baik saja?
Januari
Maaf, saya telah pergi. Kedengarannya bagus, saya akan mencoba mencari informasi dan mengedit jawabannya dalam beberapa jam.
ish
jangan khawatir! tidak apa-apa
Januari
1
Seperti yang dijanjikan, Anda mendapatkan hadiah. Saya tidak menerima jawabannya, karena saya perlu kode solusinya terlebih dahulu.
Januari
1
@ Januari, belum yakin apakah Anda berhasil membuat kode solusi? Saya telah menambal syndaemon untuk mendukung pemantauan trackpoint. github.com/eyko/xf86-input-synaptics (komit di sini github.com/eyko/xf86-input-synaptics/commit/… ) Untuk memantau TrackPoint, Anda harus melewati flag opsi -T saat menjalankan syndaemon.
Vince
4

Hal pertama yang harus dilakukan adalah mengetahui id touch pad Anda. Jadi, ikuti langkah-langkah ini

Pertama buka terminal dan Jalankan perintah ini

~$ xinput --list

Di sini kita dapatkan ini Touchpad id = <id Number>

Setelah itu buka pintasan keyboard lalu tambahkan ini di bawah dua perintah dengan pintasan keyboard Anda.

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

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

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

pengguna baru
sumber
Terima kasih, tetapi menonaktifkan Touchpad secara manual bukanlah masalah di sini (bahkan dengan cara pintas), dan saya tahu cara melakukannya. Idenya adalah untuk menonaktifkan Touchpad secara otomatis saat Trackpoint sedang digunakan, dengan cara yang sama Touchpad dinonaktifkan secara otomatis ketika keyboard digunakan (lihat pengaturan "nonaktifkan touchpad saat mengetik" dalam pengaturan "Mouse dan Touchpad").
Januari
0

Berikut ini adalah solusi teknologi rendah yang mungkin buruk untuk penggunaan daya (syndaemon -T patch tidak berfungsi untuk saya).

#!/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

Harus sedikit beruntung mengetahui bahwa Anda menggunakan trackpoint, karena hanya bisa memberi tahu koordinat selama setiap interval 5s. Dengan kata lain, ini konservatif tentang penonaktifan touchpad tetapi tidak harus mengaktifkannya dengan andal ketika trackpoint idle.

Bagaimanapun, ini banyak membantu saya pada ultrabook saya dengan kursor yang berkeliaran dari palm press.

covener
sumber