প্রারম্ভকালে আমি কীভাবে স্বয়ংক্রিয়ভাবে আমার মাউসের বোতামগুলির পুনর্নির্মাণ করব?


30

আমি সপ্তাহান্তে এই নিয়ে संघर्ष করেছি এবং আমার মাউস বোতামগুলির পুনরায় তৈরি করা দরকার।

উত্তর:


47

আমার কাছে 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 টি প্রকৃত শারীরিক বোতাম রয়েছে তবে xinput16 টি রিপোর্ট করে।

ইউএসবির প্রকৃতি দেওয়া, আপনি যখনই পুনরায় আরম্ভ করবেন ততবার এই আইডিটি পরিবর্তন হতে পারে, তাই আপনি একবার আবিষ্কার করেছেন এমন আইডিতে স্থিতিশীলভাবে কীযুক্ত কিছু এমন স্ক্রিপ্টের পক্ষে যথেষ্ট নয়। আপনাকে প্রারম্ভকালে এটিকে গতিশীলভাবে পার্স করতে হবে এবং বর্তমান আইডির উপর ভিত্তি করে আপনার পুনরায় মানচিত্রটি কার্যকর করতে হবে।

এখন আপনি এর নামটি জানেন, আপনি 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 অন্যান্য ব্যবহারিক উদাহরণের জন্য এই উত্তরটি দেখুন ))

16.04 উবুন্টুর জন্য আপডেট

আপনার সিস্টেমে সংযুক্ত একাধিক ইঁদুরযুক্ত ব্যবহারকারীদের জন্য আপনাকে ডিভাইসের আইডিতেও পাস করতে হবে। এটি সমস্ত ব্যবহারকারীর জন্য প্রযোজ্য নয় এবং 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

7
তথ্যের জন্য ধন্যবাদ. আপনার অ্যাজক দেখে মনে হচ্ছে এটি ডিভাইসে শব্দের সংখ্যার ভিত্তিতে পরিবর্তিত হওয়া দরকার। আমি ব্যবহার করেছিsed 's/^.*id=\([0-9]*\)[ \t].*$/\1/'
jbo5112

এক্সপুট পরীক্ষা অনুসারে থাম্ব কী তিনটি ভিন্ন কী টিপকে ট্রিগার করে - কীভাবে এগুলিকে .xbindkeysrc এ একসাথে আবদ্ধ করবেন?
অ্যাকল্টপ

@ jbo5112 আমি কেবলমাত্র আমার ওয়ার্কের ল্যাপটপে একাধিক ইঁদুর ব্যবহার শুরু করেছি এবং আপনার মন্তব্যে পুনরায় দেখা করার ভাল কারণ ছিল। আমি এখন আমার উদাহরণগুলিতে awkআপনার sedবিবৃতি দিয়ে আমার পুরানো বিবৃতি প্রতিস্থাপন করেছি । উন্নতির জন্য ধন্যবাদ!
জেরোবান্ডউইদথ

2
সেট-বোতাম-মানচিত্রে কোনও আইডি ব্যবহার করার দরকার নেই; যেমন:xinput set-button-map "Logitech Trackball" 1 3 3
জাস্টিন

অস্বাভাবিক সমস্যাটি আমি অনুমান করি: xinputএটি আমার মাউস দু'বার দেখায়: ইউএসবি অপটিক্যাল মাউস আইডি = 12 [স্লেভ পয়েন্টার (2)] ↳ ইউএসবি অপটিকাল মাউস আইডি = 13 [স্লেভ পয়েন্টার (2)] কেবল আইডি 13 এর সাহায্যে কমান্ড ধরা হবে xinput test। স্ক্রিপ্টটি সর্বদা প্রথম আইডিটি ধরবে। তবে তা কেন দ্বিগুণ? উভয়ই অদৃশ্য হয়ে যায় যখন আমি এই মাউসটি সংযোগ বিচ্ছিন্ন করি এবং সংযুক্ত হয়ে গেলে আবার উপস্থিত হই।
ডাব্লু-আকাশ

6

এর জন্য সংক্ষিপ্ত পদক্ষেপগুলি হ'ল:

একটি ইউটিলিটি বলা হয় xinputxinput 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


এটি আমার জলের ছড়িয়ে পড়া সমস্যার সমাধান করেছে। আমার ল্যাপটপের টাচপ্যাডের নীচে বাম / ডান ক্লিক বোতাম আছে। আমি জল ছড়িয়ে দিয়েছি এবং এখন উভয় বোতামই ওএসকে একটি মাঝারি ক্লিকের সিগন্যাল প্রেরণ করে (আমি 'কীমন' অ্যাপ্লিকেশনটি ব্যবহার করে এটি আবিষ্কার করেছি)। আমি আপনার পদ্ধতিটি বাম-ক্লিকের মধ্য-ক্লিককে পুনরায় তৈরি করতে ব্যবহার করেছি, তাই আমি খুব কম সময়ে বাম-ক্লিকের অভিজ্ঞতা উপভোগ করতে পারি। আমি কখনই মিডল-ক্লিক ব্যবহার করি না যাতে এটি আমার জন্য নিখুঁতভাবে কাজ করে :) সহজ নির্দেশাবলীর জন্য ধন্যবাদ। আমার ইনপুট ডিভাইস আইডি 11 ছিল, তাই আমি দৌড়ে "xinput --set-button-map 11 1 1 3" ধন্যবাদ !!
ওয়াহিদ পজিরান্দে

3

জিরোব্যান্ডউইথের দুর্দান্ত উত্তরটি ব্যবহার করার সময় কিছু ডিভাইস যেমন লজিটেকের এমএক্স এরগো পয়েন্টার এবং কীবোর্ড উভয় ডিভাইস হিসাবে দেখায় :

⎡ 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

দুর্দান্ত টিপ; উত্তরটি অন্তর্ভুক্ত করার জন্য আমি সম্পাদনা করেছি। ধন্যবাদ!
জেরোবান্ডউইথ

1

আমি উবুন্টু সফটওয়্যার কেন্দ্র থেকে ডাউনলোড করে থাকা ইজিস্ট্রোক অঙ্গভঙ্গি সনাক্তকরণটি ব্যবহার করে আমার লজিটেক মাউসের মাঝের বোতামটির ম্যাপিংটি 'রিটার্নে' পরিবর্তন করতে সক্ষম হয়েছি। সম্পাদনা করুন: অ্যাপ্লিকেশনটিতে, আপনি ক্রিয়া যুক্ত করুন, নাম বলুন, কী প্রকারটি নির্বাচন করুন, বিশদটি ক্লিক করুন এবং এন্টার টিপুন, রেকর্ড স্ট্রোকটি চাপুন, এবং প্রম্পটের সময় মাঝের বোতামে নীচে চাপুন।


1
AskUbuntu এ আপনাকে স্বাগতম। আপনার উত্তর সহ আপনাকে আরও বিশদ সরবরাহ করতে হবে।
ডেভিড

ঠিক আছে, দয়া করে উপরের সম্পাদনাটি দেখুন।
atr15

ভালো বল ধরা. তবে আপনি যেটি বর্ণনা করেছেন সেটি আপনি জোর দিয়েছিলেন না যেমন: আপনি নির্দেশ করেছেন: মাঝারি বোতামটি সেই অ্যাপ্লিকেশনটিকে 'অঙ্গভঙ্গি স্বীকৃতি মোডে' রাখার জন্য ডিফল্ট বোতাম: টিপানোর সাথে সাথে অ্যাপটি আপনার তৈরি করা অঙ্গভঙ্গিটি সনাক্ত করতে শুরু করে। তবুও, +1 কারণ সেই অ্যাপ্লিকেশনটিতে মাউস বোতামগুলির আইডি প্রকাশ করার জন্য একটি মডিউল রয়েছে; এটি যখন আমরা যখন xinputবোতামগুলি যখন ব্যবহার করতে না দেখায় ততক্ষণ ব্যবহার করতে চাই তখন সহায়তা করে xinput list <devID>
1111161171159459134

1
ওহ, এটি 1 বছর পরে এসেছে - আপনার উত্তরগুলির মূল্য +1
1111161171159459134

1

12.04 এর আগে স্ট্যান্ডার্ড রিপোজিটরিতে "বিটিএনএক্স" নামে একটি সহজ গ্রাফিকাল সরঞ্জাম ছিল যা সিস্টেম কনফিগারেশনে "বাটন বৈশিষ্ট্য" হিসাবে যুক্ত হয়েছিল। দুঃখজনকভাবে তবে এটি বাদ দেওয়া হয়েছিল। একটি "অনির্ভরযোগ্য" পিপিএ বর্তমানে 14.04, 16,04 এবং 18.04 জন্য বজায় এখানে: https://launchpad.net/~oliverstar/+archive/ubuntu/ppa (এ পাওয়া https://launchpad.net/ubuntu/xenial/+source / বিটিএনএক্স )

এটি সিস্টেম সেটিংসের সাথে একীভূত হবে না তবে একটি সস্তা 5-বোতাম-মাউস সহ আমার ল্যাপটপে বেশ সূক্ষ্মভাবে কাজ করছে। এটি কী-স্ট্রোক এবং কমান্ডগুলিতেও পুনরায় তৈরি করতে পারে এবং অন্য কোনও পদ্ধতির চেয়ে কনফিগারেশনটি আরও সহজ!


আমি ভাবছি যে সরঞ্জামটি কেবল পটভূমিতে একই পরিবর্তনগুলি করছে কিনা। ^ _ ^
জেরোব্যান্ডউইথ

0

আমার এইচপি এলিটবুক 2570p, উবুন্টু 18.04.2 আছে। এখানে আমার কাছে একটি ট্র্যাকপয়েন্ট রয়েছে যা আমার পক্ষে অকেজো এবং এখানে স্থানের নীচে 2 টি অকেজো ট্র্যাকপয়েন্ট বোতাম রয়েছে

আমি এই কীগুলি ব্যবহার করি না কারণ আমার এটি টাচপ্যাডের নীচে রয়েছে। আমি এই বোতামটি বামে = পিছনে_বাটন (Alt_L + বাম), ডানদিকের = মাঝ_মাউস_বাটনকে পুনরায় তৈরি করতে চাই। "এক্সিনপুট" এর ট্র্যাকপয়েন্টটি আইডি = 11 এবং বাম বোতামটি 1 নম্বর, ডানদিকে 3।

কেউ কি টার্মিনালে অনুলিপি করার জন্য আমাকে সঠিক কোড লিখতে পারে? আমার xbindkeysrc এর সাথে একত্রিত হয়েছে তবে এটি উভয় (ট্র্যাকপয়েন্ট এবং টাচপ্যাড) বোতামে কোনও ক্রিয়া সেট করে


আমি এটি করেছি এবং এটিকে সহজভাবে তৈরি করেছি: <কোড> ইকো এক্সপুট সেট-বোতাম-মানচিত্র 11 8 1 2 >> ~ / .xsessionrc </code> এটি আমার টাচপয়েন্ট বোতামগুলি (আইডি 11) বামকে 8 ম বাটন হিসাবে তোলে, মাঝখানে বাম ক্লিক হিসাবে ক্লিক করুন (1 নম্বরে), এবং মিডেল এক হিসাবে ডান ক্লিস্ক এবং তারপরে 'কোড' প্রতিধ্বনি -e "\" / usr / bin / xte 'কীডাউন Alt_L' 'কী বাম' 'কীপট Alt_L' & amp; amp "\ nb: 8" >> ~ / .xbindkeysrc 'কোড' এটি বোতাম নং 8 (বি: 8) সেট করে Alt_L + বামে>> ফিরে যান :) এখন আমার কাছে দুটি মাউস বোতাম রয়েছে
এটম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.