আমি সপ্তাহান্তে এই নিয়ে संघर्ष করেছি এবং আমার মাউস বোতামগুলির পুনরায় তৈরি করা দরকার।
আমি সপ্তাহান্তে এই নিয়ে संघर्ष করেছি এবং আমার মাউস বোতামগুলির পুনরায় তৈরি করা দরকার।
উত্তর:
আমার কাছে 9 টি বোতামযুক্ত লজিটেক মাউস রয়েছে এবং "মিডল বোতাম" (# 2) টিপতে স্ক্রোল হুইলটি ক্লিক করা জড়িত। আমি এটি অপছন্দ করি কারণ আমি আনাড়ি এবং সাধারণত যখন আমি চাকাটি ক্লিক করার চেষ্টা করি তখন আমার উইন্ডোটি স্ক্রোল করে শেষ হয়। সুতরাং আমি স্বয়ংক্রিয়ভাবে উপরের দিকের বোতামটি (এই ক্ষেত্রে # 9) পুনরায় তৈরি করতে চেয়েছিলাম মাঝের বোতামটিতে (# 2)। আমি নীচের দিকের পাশের বোতামটি (# 8) মানচিত্র করতে চেয়েছিলাম যাতে এটি বাম বোতামের ডাবল ক্লিক (# 1) চালায়।
যদিও আমার লক্ষ্যগুলি সুনির্দিষ্ট ছিল তবে নীচের সমাধানগুলি যে কোনও পরিস্থিতিতে আপনি স্বয়ংক্রিয়ভাবে শুরুতে মাউস বোতামগুলি পুনরায় তৈরি করতে চান এমন পরিস্থিতিতে সাধারণীকরণ করা যায়।
xinput
এই কাজের জন্য আপনার ইনস্টল করা প্রয়োজন । এটি আপনার .xsessionrc
ফাইলে পুরোপুরি করা যেতে পারে । প্রথমে, xinput
আপনার মাউসকে নির্ধারিত নামটি আবিষ্কার করতে ব্যবহার করুন যা পরে ইনপুট ডিভাইস আইডির সাথে সম্পর্কিত lated নীচে আমার ল্যাপটপ থেকে কিছু নমুনা আউটপুট দেওয়া হয়েছে:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Laser Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
আমার মাউস নিজেকে কল করে Logitech USB Laser Mouse
এবং হিসাবে প্রদর্শিত হয় id=11
। আপনার মাউসের আলাদা নাম থাকবে; এটি অনুধাবন করা পাঠকের জন্য অনুশীলন হিসাবে রেখে গেছে।
আপনি এখনও এই সেশনে ডিভাইসের আইডি জানার সময়, ইনপুট হ্যান্ডলারটি আপনার মাউসটির কতগুলি বোতাম ব্যবহার করে তা ব্যবহার করে তা সন্ধান করুন । এটি ডিভাইসে প্রদর্শিত বোতামগুলির সংখ্যা থেকে পৃথক হতে পারে।xinput list
deviceID
Logitech USB Laser Mouse id=11 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 11. Type: XIButtonClass
Buttons supported: 16
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
আমার মাউসের সাহায্যে কেবল 9 টি প্রকৃত শারীরিক বোতাম রয়েছে তবে xinput
16 টি রিপোর্ট করে।
ইউএসবির প্রকৃতি দেওয়া, আপনি যখনই পুনরায় আরম্ভ করবেন ততবার এই আইডিটি পরিবর্তন হতে পারে, তাই আপনি একবার আবিষ্কার করেছেন এমন আইডিতে স্থিতিশীলভাবে কীযুক্ত কিছু এমন স্ক্রিপ্টের পক্ষে যথেষ্ট নয়। আপনাকে প্রারম্ভকালে এটিকে গতিশীলভাবে পার্স করতে হবে এবং বর্তমান আইডির উপর ভিত্তি করে আপনার পুনরায় মানচিত্রটি কার্যকর করতে হবে।
এখন আপনি এর নামটি জানেন, আপনি xinput test
কোন কীটি পুনর্নির্মাণ করবেন তা নির্ধারণ করতে পারেন। আপনার সূচকগুলি পেতে আপনি যে মাউস বোতামটি মানচিত্র করতে চান তাতে চাপুন। (রেফারেন্সের জন্য, 1, 2, এবং 3 "সর্বদা" (অর্থাত্ সাধারণত) 3-বোতামের মাউসের বাম, মাঝারি এবং ডান বোতামগুলি উল্লেখ করে re )
button press 2
button release 2
button press 9
button release 9
এই ক্ষেত্রে আমি দেখতে পেয়েছি যে আমি বোতাম # 9 (পাশ, শীর্ষ) থেকে বোতাম # 2 (মাঝের) করতে চাই।
এখন যেহেতু আপনি জানেন যে আপনার মাউসটি কী বলা হয় এবং আপনি কোন বোতামগুলি পরিবর্তন করতে চান, আপনি একটি ~/.xsessionrc
স্ক্রিপ্ট লিখতে পারেন xinput
যা স্টার্টআপে বোতামটি পুনরায় ম্যাপিং কার্যকর করতে অনুরোধ করে। নীচে আমার সম্পূর্ণ স্ক্রিপ্ট রয়েছে।
# Map button 9 (top side button) to button 2 (middle button)
my_mouse_id=$(xinput | grep "Logitech USB Laser Mouse" | sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/')
echo $my_mouse_id > ~/temp/my_mouse_id
xinput set-button-map $my_mouse_id 1 2 3 4 5 6 7 8 2 10 11 12 13 14 15 16
এখানে প্রথম লাইনটি মাউসের আইডির সমতুল্য একটি অস্থায়ী সেশন ভেরিয়েবল সেট করে xinput
। এই দ্বারা সম্পন্ন করা হয় grep
থেকে রিপোর্টে মাউসের পরিচিত নামের জন্য ing xinput
, তারপর ব্যবহার sed
থেকে আইডি নম্বর বের করে আনতে id=xxx
প্রতিবেদনে টোকেন। এই মানটি তখন একটি xinput set-button-map
নির্দেশিকায় ব্যবহৃত হয় , যা পুনরায় ম্যাপিং কার্যকর করে। উপরের উদাহরণে, একমাত্র পরিবর্তনটি হল যে # 9 বোতামটি মিমিক বোতাম # 2 এ পুনরায় ম্যাপ করা হচ্ছে। অন্য সমস্ত তাদের ডিফল্ট সেটিং এ থাকে।
আপডেট: @ লোকেসেন্না নীচে উল্লেখ করেছেন যে আপনার ডিভাইসটি যদি মাউস এবং কীবোর্ড উভয়ই হিসাবে নিজেকে রিপোর্ট করে তবে আপনাকে grep
ব্যবহারের ফলাফল গণনা সীমাবদ্ধ করতে হবে -m 1
।
আরও দেখুন এই উত্তর ।
আপনি প্রয়োজন হবে xinput
, xbindkeys
এবং xautomation
(তত্সহ xte
) এই কাজের জন্য ইনস্টল করা নেই।
আপনার মাউসের ডিভাইস আইডি এবং আপনি যে বোতামটি অর্পণ করতে চান তার নম্বরটি ব্যবহার করুন xinput list
এবং xinput test
আবিষ্কার করুন। আমার ক্ষেত্রে, আমি নীচের দিকের বোতামটি (# 8) বাম বোতামের ডাবল ক্লিক করতে (# 1) মানচিত্র করতে চেয়েছিলাম।
তৈরি বা সম্পাদনা করুন ~/.xbindkeysrc
। এই ফাইলটির ফর্ম্যাটটি জোড় করা লাইনের একটি সিরিজ। প্রথম লাইনটি একটি ইভেন্টের জন্য কার্যকর করার জন্য একটি আদেশ; দ্বিতীয় লাইনটি ইভেন্টের বিবরণ। আমরা ইনপুট হ্যান্ডলারের সরাসরি ইভেন্টগুলি প্রেরণের xte
অংশটি ব্যবহার করব xautomation
।
একটি বোতাম প্রকাশিত হলে ডাবল-ক্লিক ইভেন্ট তৈরি করতে, আমি নিম্নলিখিতগুলি যুক্ত করেছি:
"/usr/bin/xte 'mouseclick 1' 'mouseclick 1' &"
b:8 + Release
এই কনফিগারেশনটি বোতাম # 8-এর মুক্তির জন্য # 1 বোতামে দুটি মাউস ক্লিকের ক্রম ম্যাপ করে। (তত্ত্ব অনুসারে আমার ধারণা আপনি মাউস বোতামে কোনও কমান্ড মানচিত্র করতে পারেন তবে এটি সর্বাধিক সাধারণ ঘটনা other অন্যান্য ব্যবহারিক উদাহরণের জন্য এই উত্তরটি দেখুন ))
আপনার সিস্টেমে সংযুক্ত একাধিক ইঁদুরযুক্ত ব্যবহারকারীদের জন্য আপনাকে ডিভাইসের আইডিতেও পাস করতে হবে। এটি সমস্ত ব্যবহারকারীর জন্য প্রযোজ্য নয় এবং buক্যের সাথে উবুন্টু 16.04 এ আবিষ্কার হয়েছিল।
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Kensington Kensington Expert Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=14 [slave pointer (2)]
তারপরে .xbindkeysrc ফাইলটি কমান্ড আউটপুট (এই উদাহরণে আইডি = 9) থেকে id = মান উল্লেখ করে পরিবর্তন করুন:
"/usr/bin/xte -i 9 'mouseclick 1' 'mouseclick 1' &"
b:8 + Release
awk
আপনার sed
বিবৃতি দিয়ে আমার পুরানো বিবৃতি প্রতিস্থাপন করেছি । উন্নতির জন্য ধন্যবাদ!
xinput set-button-map "Logitech Trackball" 1 3 3
xinput
এটি আমার মাউস দু'বার দেখায়: ইউএসবি অপটিক্যাল মাউস আইডি = 12 [স্লেভ পয়েন্টার (2)] ↳ ইউএসবি অপটিকাল মাউস আইডি = 13 [স্লেভ পয়েন্টার (2)] কেবল আইডি 13 এর সাহায্যে কমান্ড ধরা হবে xinput test
। স্ক্রিপ্টটি সর্বদা প্রথম আইডিটি ধরবে। তবে তা কেন দ্বিগুণ? উভয়ই অদৃশ্য হয়ে যায় যখন আমি এই মাউসটি সংযোগ বিচ্ছিন্ন করি এবং সংযুক্ত হয়ে গেলে আবার উপস্থিত হই।
এর জন্য সংক্ষিপ্ত পদক্ষেপগুলি হ'ল:
একটি ইউটিলিটি বলা হয় xinput
। xinput list
বা কেবল xinput
সমস্ত এক্স ইনপুট ডিভাইস এবং তাদের আইডি প্রদর্শন করবে। এখানে আপনি যে মাউসটি পুনর্নির্মাণ করতে চান তার আইডি পাবেন।
আমি আমার আইডি উদাহরণ হিসাবে ব্যবহার করব, আমার সেটআপ থেকে, যা 21, তারপরে xinput --get-button-map 21
আউটপুট আসবে
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
এখন, আপনি যদি চান, বলুন, বাম এবং ডান বোতামগুলি সোজাভাবে চালান যা আপনি চালান
xinput --set-button-map 21 3 2 1
আমরা এখানে আছি, রিম্যাপিং সম্পন্ন হয়েছে।
শুরুতে চালানোর জন্য এটিকে একটি ফাইলের মধ্যে রাখুন:
echo "xinput --set-button-map 21 3 2 1" > leftmouseremap.sh
এটি কার্যকর করার অনুমতি দিন
chmod +x leftmouseremap.sh
পরিশেষে, এটিকে স্টুটারটআপ অ্যাপ্লিকেশনটিতে ম্যানুয়ালি জিইউআই থেকে যুক্ত করুন বা, আপনি যদি এটি সিএলআই থেকে চান, নীচে পাঠ্যটি লিখুন (আপনার পাথ পরিবর্তন করুন) আপনার একটি ফাইলের মধ্যে ~/.config/autostart
, এখানে আমার ( less .config/autostart/leftmouseremap.sh.desktop
):
[Desktop Entry]
Type=Application
Exec=/home/ruslan/leftmouseremap.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=/home/ruslan/leftmouseremap.sh
Name=/home/ruslan/leftmouseremap.sh
Comment[en_US]=
Comment=
মনে রাখবেন যে, কে-ডি-ই এর সাথে পথটি এমন হবে ~/.kde/Autosart
, অন্যদের জন্য ডেস্কটপ পরিচালকদের পক্ষে এটি আলাদা আলাদা হতে পারে। বিকল্পভাবে, স্টার্টআপ রানিং ব্যবহার করে সাধারণ পদ্ধতির সাথে সম্পন্ন করা যেতে পারে /etc/rc.local
।
জিরোব্যান্ডউইথের দুর্দান্ত উত্তরটি ব্যবহার করার সময় কিছু ডিভাইস যেমন লজিটেকের এমএক্স এরগো পয়েন্টার এবং কীবোর্ড উভয় ডিভাইস হিসাবে দেখায় :
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech MX Ergo id=10 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [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)]
...
↳ Logitech MX Ergo id=15 [slave keyboard (3)]
ফলস্বরূপ, grep "Logitech MX Ergo"
দুটি মান ফিরে আসে। দ্বিতীয়টি ম্যাপিং স্ট্রিংয়ের প্রথম আইটেম হিসাবে অন্তর্ভুক্ত হয়ে আপনার মাউস বোতামগুলির সমস্ত স্ক্রু আপ করে।
সমাধানটি সহজ - কেবলমাত্র grep
সর্বাধিক-গণনা যুক্তি ব্যবহার করুন -m 1
:
my_mouse_id=$(xinput | grep -m 1 "Logitech MX Ergo" | sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/')
echo $my_mouse_id > ~/temp/my_mouse_id
xinput --set-button-map $my_mouse_id 1 2 3 4 5 6 7 8 2 10 11 12 13 14 15 16
আমি উবুন্টু সফটওয়্যার কেন্দ্র থেকে ডাউনলোড করে থাকা ইজিস্ট্রোক অঙ্গভঙ্গি সনাক্তকরণটি ব্যবহার করে আমার লজিটেক মাউসের মাঝের বোতামটির ম্যাপিংটি 'রিটার্নে' পরিবর্তন করতে সক্ষম হয়েছি। সম্পাদনা করুন: অ্যাপ্লিকেশনটিতে, আপনি ক্রিয়া যুক্ত করুন, নাম বলুন, কী প্রকারটি নির্বাচন করুন, বিশদটি ক্লিক করুন এবং এন্টার টিপুন, রেকর্ড স্ট্রোকটি চাপুন, এবং প্রম্পটের সময় মাঝের বোতামে নীচে চাপুন।
xinput
বোতামগুলি যখন ব্যবহার করতে না দেখায় ততক্ষণ ব্যবহার করতে চাই তখন সহায়তা করে xinput list <devID>
।
12.04 এর আগে স্ট্যান্ডার্ড রিপোজিটরিতে "বিটিএনএক্স" নামে একটি সহজ গ্রাফিকাল সরঞ্জাম ছিল যা সিস্টেম কনফিগারেশনে "বাটন বৈশিষ্ট্য" হিসাবে যুক্ত হয়েছিল। দুঃখজনকভাবে তবে এটি বাদ দেওয়া হয়েছিল। একটি "অনির্ভরযোগ্য" পিপিএ বর্তমানে 14.04, 16,04 এবং 18.04 জন্য বজায় এখানে: https://launchpad.net/~oliverstar/+archive/ubuntu/ppa (এ পাওয়া https://launchpad.net/ubuntu/xenial/+source / বিটিএনএক্স )
এটি সিস্টেম সেটিংসের সাথে একীভূত হবে না তবে একটি সস্তা 5-বোতাম-মাউস সহ আমার ল্যাপটপে বেশ সূক্ষ্মভাবে কাজ করছে। এটি কী-স্ট্রোক এবং কমান্ডগুলিতেও পুনরায় তৈরি করতে পারে এবং অন্য কোনও পদ্ধতির চেয়ে কনফিগারেশনটি আরও সহজ!
আমার এইচপি এলিটবুক 2570p, উবুন্টু 18.04.2 আছে। এখানে আমার কাছে একটি ট্র্যাকপয়েন্ট রয়েছে যা আমার পক্ষে অকেজো এবং এখানে স্থানের নীচে 2 টি অকেজো ট্র্যাকপয়েন্ট বোতাম রয়েছে
আমি এই কীগুলি ব্যবহার করি না কারণ আমার এটি টাচপ্যাডের নীচে রয়েছে। আমি এই বোতামটি বামে = পিছনে_বাটন (Alt_L + বাম), ডানদিকের = মাঝ_মাউস_বাটনকে পুনরায় তৈরি করতে চাই। "এক্সিনপুট" এর ট্র্যাকপয়েন্টটি আইডি = 11 এবং বাম বোতামটি 1 নম্বর, ডানদিকে 3।
কেউ কি টার্মিনালে অনুলিপি করার জন্য আমাকে সঠিক কোড লিখতে পারে? আমার xbindkeysrc এর সাথে একত্রিত হয়েছে তবে এটি উভয় (ট্র্যাকপয়েন্ট এবং টাচপ্যাড) বোতামে কোনও ক্রিয়া সেট করে
sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/'