فعال/غیر فعال کردن تاچ اسکرین در مانجارو
امین | يكشنبه ۳۱ مرداد ۱۳۹۵
سلام!
اگر از لپتاپ هایی استفاده میکنید که مانیتور اونها تاچ هست و گاهی فعال بودن این تاچ باعث دردسر میشه، میتونید به راحتی هر چه تمام فعال یا غیر فعالش کنین! احتمالا غیر فعال بودنش باعث مصرف کمتر باتری هم خواهد شد.
در مانجارو xinput برای مدیریت ورودی های کامپیوتر نصب شده. مثل وبکم، کیبور، ماوس، تاچ پد و ... با اجرای xinput لیستی از این موارد رو میبینید:
همون طور که میبینید تاچ اسکرین لپتاپ با ID شماره 10 مشخص شده که یک چیز ثابتی هست.اگر از لپتاپ هایی استفاده میکنید که مانیتور اونها تاچ هست و گاهی فعال بودن این تاچ باعث دردسر میشه، میتونید به راحتی هر چه تمام فعال یا غیر فعالش کنین! احتمالا غیر فعال بودنش باعث مصرف کمتر باتری هم خواهد شد.
در مانجارو xinput برای مدیریت ورودی های کامپیوتر نصب شده. مثل وبکم، کیبور، ماوس، تاچ پد و ... با اجرای xinput لیستی از این موارد رو میبینید:
[amin@ASUS ~]$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Elan Touchpad id=12 [slave pointer (2)] ⎜ ↳ USBest Technology SiS HID Touch Controller id=10 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Video Bus id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ USB2.0 HD UVC WebCam id=11 [slave keyboard (3)] ↳ Asus WMI hotkeys id=13 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard |
حالا با این دستور ها میتونید به راحتی هر کدوم از این ها رو فعال یا غیر فعال کنید:
xinput disable 10 xinput enable 10 |
اما میشه این عمل رو به یک شورتکات کیبورد نسبت داد. و بصورت toggle درآورد. یعنی با فشردن شورتکات (یا اجرای دستور) چک کنه ببینه اگر تاچ فعاله، غیر فعالش کنه. و اگر غیر فعاله، فعالش کنه.
برای اینکار این رو اجرا کنید تا خرجی شبیه این بگیرید:
[amin@ASUS ~]$ xinput --list-props 10 Device 'USBest Technology SiS HID Touch Controller': Device Enabled (138): 0 Coordinate Transformation Matrix (140): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Calibration Matrix (278): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Calibration Matrix Default (279): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Send Events Modes Available (260): 1, 0 libinput Send Events Mode Enabled (261): 0, 0 libinput Send Events Mode Enabled Default (262): 0, 0 Device Node (263): "/dev/input/event12" Device Product ID (264): 1111, 4300 libinput Horizonal Scroll Enabled (265): 0 |
#!/bin/bash if [[ $(xinput --list-props 10) == @(*Device Enabled \(138\): 0*) ]]; then xinput enable 10 else xinput disable 10 fi |
با ذخیره این اسکریپت در یک فایل میتونیم با یک دستور دیوایس مورد نظرمون که اینجا تاچ اسکرین بود فعال و غیر فعال کنیم. و مثلا اون رو با شورت کات Super+F8 اجرا کنیم.
ویرایش جدید:
برای اینکه این اتفاق در حین بوت انجام بشه، باید سراغ systemd بریم. اما چون برای xinput باید Display رو مشخص کنیم باید timer در systemd تعریف کنیم. چون حین بوت هنوز display مشخص نشده. خلاصه... محض یاد آوری خودم..
بجای amin نام کاربری خودتون. و بعد:
و حالا :
ویرایش جدید:
برای اینکه این اتفاق در حین بوت انجام بشه، باید سراغ systemd بریم. اما چون برای xinput باید Display رو مشخص کنیم باید timer در systemd تعریف کنیم. چون حین بوت هنوز display مشخص نشده. خلاصه... محض یاد آوری خودم..
sudo nano /etc/systemd/system/disable-touch.service با این محنوی: [Unit] Description=Disable Monitor Touch Screen by xinput [Service] Type=oneshot User=amin Environment=DISPLAY=:0 ExecStart=/usr/bin/xinput disable 10 |
sudo nano /etc/systemd/system/disable-touch.timer با این محتوی: [Unit] Description=Runs disable-touch 1min after boot [Timer] # Time to wait after booting before activation OnBootSec=1min Unit=disable-touch.service [Install] WantedBy=multi-user.target |
sudo systemctl enable disable-touch.timer |