การซ่อนเคอร์เซอร์ของเมาส์แบบไดนามิกเมื่อใช้หน้าจอสัมผัส


21

ฉันมีแล็ปท็อปหน้าจอสัมผัสและฉันต้องการซ่อนตัวชี้เมื่อใดก็ตามที่ฉันสัมผัสหน้าจอ ฉันรู้แก้ปัญหาเช่นunclutterและstartx -nocursorแต่ฉันต้องการตัวชี้ไปซ่อน / แสดงแบบไดนามิกที่หลบซ่อนตัวหากฉันใช้หน้าจอสัมผัสและแสดงเมื่อฉันใช้เมาส์ฮาร์ดแวร์

ฉันคิดเกี่ยวกับการทำสองพอยน์เตอร์แยกจากกันและใช้หนึ่งในสองวิธีด้านบนตัวชี้หน้าจอสัมผัส แต่ไม่มีวิธีการแก้ปัญหาเหล่านั้นพูดถึงวิธีการกำหนดเป้าหมายตัวชี้เดียวและมีพอยน์เตอร์หลายตัวทำให้สิ่งแปลก ๆ เคอร์เซอร์ของเมาส์

ฉันคิดว่าฉันสามารถทำสิ่งนี้ได้อย่างสมเหตุสมผลการติดตามกลไกการป้อนข้อมูลในปัจจุบันและดำเนินการxinput -cursor [transparent cursor]เมื่อใดก็ตามที่มีการใช้หน้าจอสัมผัสและxinput -cursor [normal cursor]เมื่อใดก็ตามที่ใช้เมาส์ปกติ

ฉันดูที่ xinput และดูเหมือนว่าเนื่องจากทั้งฮาร์ดแวร์เมาส์และหน้าจอสัมผัสถูกเลื่อนไปที่ตัวชี้เดียวกันทั้งคู่ลงทะเบียนเหตุการณ์เดียวกันใน xev ดังนั้นฉันจึงไม่แน่ใจว่าฉันจะได้รับข้อมูลที่จำเป็นในการแยกสัมผัสที่แตกต่างกันอย่างไร จาก mouseclick มันเป็นไปได้?

คำตอบ:


5

คุณสามารถใช้

หากต้องการใช้งานให้ติดตั้ง

sudo apt-get install unclutter

จากนั้นเรียกใช้

unclutter -idle 0.01 -root

โปรดทราบว่าหมายเลขหลังจากไม่มีการใช้งานหมายถึงเวลาก่อนที่จะซ่อน ในกรณีนี้มันตั้งค่าเป็น 1/100 วินาที คุณสามารถลองเปลี่ยนเป็นค่าที่ซ่อนอยู่เสมอ

การดำเนินการนี้จะซ่อนเคอร์เซอร์เมื่อคุณไม่ย้าย ฉันแน่ใจว่ายังมีตัวเลือกให้ซ่อนอย่างสมบูรณ์


ฉันเคยเห็นวิธีแก้ปัญหาโดยใช้การกระจายเสียง แต่สิ่งนี้ไม่ได้แยกความแตกต่างระหว่างการใช้ทัชสกรีนและเมาส์
erp

2

ฉันสมมติว่าคุณใช้หน้าจอสัมผัสเมื่อคุณไม่มีเม้าส์และเสียบเข้ากับระบบเมื่อคุณต้องการใช้งาน ในกรณีนี้คุณสามารถใช้udevกฎเพื่อจัดการตัวชี้ของคุณ:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput -cursor [transparent cursor]", RUN+="/usr/bin/xinput -cursor [normal cursor]"

เงื่อนไขที่ใช้ในการแยกแยะความแตกต่างของเมาส์นั้นได้ถูกยืมมาจากคำตอบนี้

โปรดทราบว่าแต่ละแอปพลิเคชันมีอิสระในการกำหนดเคอร์เซอร์ใหม่แบบไดนามิกดังนั้นเคอร์เซอร์ของคุณอาจปรากฏให้เห็นอีกครั้งเมื่อคุณวางเมาส์เหนือหน้าต่าง คุณสามารถเริ่ม / หยุดunclutterแทนหากคุณต้องการให้เคอร์เซอร์ทั้งหมดถูกซ่อนอยู่ทุกที่:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c unclutter&", RUN+="/usr/bin/killall unclutter"

โดยส่วนตัวแล้วฉันจะปิดการใช้งานหน้าจอสัมผัสโดยสิ้นเชิงเมื่อเสียบเมาส์ดังนั้นการสัมผัสโดยไม่ตั้งใจจะไม่รบกวนเคอร์เซอร์เมื่อคุณคาดหวังว่ามันจะตามเมาส์


นี่เป็นตัวเลือกที่ดียกเว้นว่าฉันต้องการลักษณะการทำงานนี้สำหรับ trackpad ของฉันไม่เพียง แต่สำหรับการเสียบเข้ากับเมาส์ ฉันเชื่อว่า udev มีผลกับอุปกรณ์ที่เพิ่ม / ลบแบบไดนามิกเท่านั้น
erp

คุณหมายถึง trackpad ของคุณคือ "hardware mouse" หรือไม่? ฉันว่าคุณจะต้องลองและดูว่ามันใช้งานได้หรือไม่ ทัชแพดอาจถูกมองudevว่าถูกลบออกเมื่อคุณปิดการใช้งานโดยใช้ปุ่ม Fn (สมมติว่าคุณมี)
Dmitry Grigoryev

1

มีความเป็นส้อมของเครื่องมือ unclutter แก้ไขโดย nowrep อยู่ที่นี่ รุ่นนี้เพิ่ม-touchตัวเลือกในการซ่อนเคอร์เซอร์โดยอัตโนมัติเมื่อตรวจพบอินพุตแบบสัมผัส (ที่เก็บ unclutter-xfixes ดั้งเดิมอยู่ที่นี่ )

สิ่งหนึ่งที่ควรระวังคือมันยังคงมีพฤติกรรมการซ่อนเคอร์เซอร์หลังจากช่วงเวลาที่กำหนด คุณสามารถตั้งค่า--timeoutตัวเลือกให้มีค่าสูงมากเพื่อแก้ไข

สิ่งนี้จะทำงานได้อย่างสมบูรณ์แบบสำหรับคุณ ในกรณีของฉันฉันมีหน้าจอสัมผัสที่ติดอยู่ภายนอกและเมื่อฉันย้ายกลับไปที่จอภาพปกติเคอร์เซอร์จะอยู่บนหน้าจอสัมผัสดังนั้นฉันต้องย้ายมันกลับไปที่จอภาพจากที่ฉันสัมผัส สิ่งที่ดีคือหลังจากที่ฉันเริ่มเลื่อนเมาส์เคอร์เซอร์จะปรากฏขึ้นเพื่อให้ฉันรู้ว่ามันอยู่ที่ไหน

ประโยชน์ที่ดีของตัวเลือกนี้คือฉันยังคงสามารถใช้เมาส์ได้เหมือนปกติบนหน้าจอสัมผัสหากฉันต้องการ แต่ซ่อนมันเมื่อฉันไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.