تبلیغات
لینوکس و من - مطالب ابر asus
لینوکس و من

فعال/غیر فعال کردن تاچ اسکرین در مانجارو

نویسنده : امین | تاریخ: 1395/05/31

سلام!
اگر از لپتاپ هایی استفاده میکنید که مانیتور اونها تاچ هست و گاهی فعال بودن این تاچ باعث دردسر میشه، میتونید به راحتی هر چه تمام فعال یا غیر فعالش کنین! احتمالا غیر فعال بودنش باعث مصرف کمتر باتری هم خواهد شد.

در مانجارو 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
همون طور که میبینید تاچ اسکرین لپتاپ با ID شماره 10 مشخص شده که یک چیز ثابتی هست.
حالا با این دستور ها میتونید به راحتی هر کدوم از این ها رو فعال یا غیر فعال کنید:

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
عبارت  Device Enabled (138):    0 مشخص میکنه که اون دیوایس فعاله یا غیر فعال. 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 مشخص نشده. خلاصه... محض یاد آوری خودم..

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
بجای amin نام کاربری خودتون. و بعد:
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

نصب Manjaro Linux روی لپ‌تاپ ASUS n501 (ویرایش شد)

نویسنده : امین | تاریخ: 1395/05/16

این مطلب بیشتر جنبه ی یادآوری برای خودم داره که اگر در آینده دچار مشکل شدم بتونم رجوع کنم. اما کسانی هم که از لپتاپ های جدید سری n شرکت ASUS استفاده میکنند و میخوان که لینوکس روش نصب کنند (در اینجا مانجارو) میتونن از این مطلب استفاده کنند.
ویرایش: متوجه شدم که گویا کلا با nvidia مشکل داره و سایر مدل های لپتاپ ها و حتی دسکتاپ هم این مشکل رو دارند. اما راه حال یکسانه

با روش های موجود iso این توزیع رو روی فلش مموری میریزیم و سعی میکنیم که لپتاپ رو با اون بوت کنیم! در همین ابتدای کار در حین بوت لایو شما با پیام خطای A start job is running for LiveMedia MHWD Script روبرو میشید و مانجارو بالا نمیاد. این پیام مربوط میشه درایور گرافیک لپتاپ که بوسیله mhwd که مختص مانجارو هست مدیریت و نصب میشه. که در اینجا ظاهرا نتونسته درست مدیریت کنه. برای دور زدن این خطا و بوت کردن لایو مانجارو باید موقع بوت روی خط بوت کلید e رو بزنیم و این خط رو به انتهاش اضافه کنیم و بعد با F10 بوت کنیم
xdriver=mesa

حالا مانجارو بالا میاد و ما میتونیم اون رو نصب کنیم. در اینجا فن لپتاپ به شدت کار میکنه، اما جای نگرانی نیست، فرایند نصب به سرعت تموم میشه. وقتی نصب تموم شد، باز هم مانجارو بالا نمیاد.
ویرایش: کاشف به عمل آمد که Bumblebee که مسئول خاموش کردن nvidia است با این قضیه مشکل داره و در حین بوت باعث freez شدن میشه. برای همین باید در خط کرنل در گراب یه تغییراتی رو اعمال کنیم (به رنگ سبز نشون دادم).

برای اینکه این مشکل بر طرف بشه، طبق این ویکی باید در خط کرنل موقع بوت این تنظیمات رو اعمال کنیم (در پایین توضیح دادم)
i915.enable_execlists=0 acpi_backlight=native acpi_osi=! acpi_osi='Windows 2009'


اما با تعیین کردن acpi_osi به این شکل کلیدهای ترکیبی تنظیم نور مانیتور کار نمیکنند. اگر عبارت نارنجی رنگ بالا رو هم در خط کرنل گذاشته باشیم تنظیم نور مانیتور از طریق دستور در ترمینال کار خواهد کرد.
برای این کار دو راه داریم. یکی اینکه xdotool رو نصب کنیم و با این دستور ها نور رو کم و زیاد کنیم (که میتونیم یک کیبورد شورتکات تعریف کنیم مثلا با Super+F5 و Super+F6 :
xdotool key --clearmodifiers XF86MonBrightnessUp
xdotool key --clearmodifiers XF86MonBrightnessDown



یا xorg-xbacklight رو نصب کنیم و با این دستورها کار کنیم:
xbacklight -inc 10
xbacklight -dec 10

ممکنه تاچ‌پد کار نکنه. وارد تنظیمات mouse and touchpad میشید و میبینید که تاچ‌پد شناخته شده، اما کار نمیکنه. برای حل این مشکل، یک بار این دستور رو اجرا کنید، اگر مشکل برطرف شد که شد،‌ اگر نشد باید به کرنل 4.7 آپدیت کنید.
ویرایش: کاشف به عمل اومد که اگر وارد ویندوز بشیم و بعد وارد مانجارو بشیم باید ماژول مربوط به تاچ‌پد رو به شکل زیر غیرفعال/فعال کنیم. در ریبوت های بعدی در خود مانجارو این مشکل وجود نداره. برای اینکه کلا از بابت این مشکل هم راحت بشیم میتونیم طی یک سرویس systemd این کار رو در هر بوت انجام بدیم. حالا چه قبلش توی ویندوز بودیم چه نبودیم.
sudo modprobe -r elan_i2c && sleep 2 && sudo modprobe elan_i2c
موضوع دوم، فونت ریز گراب هست. حالا که حرف از گراب زدیم، باید یه سری چیزها رو هم در این سطح انجام بدیم. به ترتیب اینکار ها رو میکنیم:
sudo gedit /etc/default/grub

فایل پیشفرض گراب باز میشه، این تغییرات رو اعمال میکنیم:
برای رزلوشن این خط رو اضافه میکنیم:
GRUB_GFXMODE="1600x1200"

در خط مربوط به کرنل اینها رو اضافه میکنیم، بصورتی که بشه این:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.enable_execlists=0 acpi_backlight=native acpi_osi=! acpi_osi='Windows 2009' "

و بعد ذیره میکنیم و سپس این دستور رو اجرا میکنیم تا منوی گراب بازسازی بشه:
sudo grub-mkconfig -o /boot/grub/grub.cfg









برای درست کردن فونت کنسول در لپتاپ های با رزولوشن بالا (HIDIP)  terminus-font رو نصب کنید و بعد :
sudo nano /etc/vconsole.conf
با این محتوی:
FONT=ter-v28b




ویرایش: بعد از یه مدتی نمیدونم به چه دلیلی، فونت کنسول به هم ریخت و هیچی معلوم نبود. مجبور شدم این فونت رو پاک کنم و به همون فونت بسیار ریز اکتفا کنم.

نوشته های قبلی که جایگزین شدند در ادامه مطلب وجود دارن.
ادامه مطلب