ইভেন্টের ডিভাইস থেকে কী ইনপুট ক্যাপচার করা এবং এটিকে ম্যাপিং করা (টাচপ্যাড কী টমলম্যাপমুক্ত করা আছে)


10

আমার একটি লেনোভো আইডিয়াপ্যাড যোগ 13 উবুন্টু 13.10 ইনস্টল করা আছে। ডিভাইসটির কীবোর্ডে ("টগল টাচপ্যাড" বোতাম রয়েছে F5) ( )। কীবোর্ডের F*বোতামগুলি বিপরীত হয়েছে (তাই পেতে F5, আমাকে Fn+ টিপতে হবে F5এবং F5এটি আসলে টগল কী)।

আমি জানতে পেরেছি যে বোতামটি আসলে কীবোর্ড দ্বারা পড়েছে (নির্দিষ্ট ডিভাইসের মতো টাচপ্যাডের চেয়ে), যা রয়েছে /dev/input/event3। সুতরাং sudo input-events 3আমি ব্যবহার করে বুঝতে পারি যে বোতামটি স্ক্যান কোড 190 প্রেরণ করে:

এর আউটপুট sudo lsinput:

/dev/input/event3
   bustype : BUS_I8042
   vendor  : 0x1
   product : 0x1
   version : 43907
   name    : "AT Translated Set 2 keyboard"
   phys    : "isa0060/serio0/input0"
   bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP

এর আউটপুট sudo input-events 3:

23:13:03.849392: EV_MSC MSC_SCAN 190
23:13:03.849392: EV_SYN code=0 value=0
23:13:03.855413: EV_MSC MSC_SCAN 190
23:13:03.855413: EV_SYN code=0 value=0

অন্য কোনও প্রোগ্রাম (যেমন xev) ব্যতীত এটি পড়তে সক্ষম হবে বলে মনে হচ্ছে না input-events। আমার ল্যাপটপে টাচপ্যাড টগল করার জন্য এই বোতামটি মানচিত্র করার কোনও উপায় আছে কি? যদি তা হয় তবে আমি কীভাবে এটি করতে পারি?

উত্তর:


7

যেহেতু এটি দেখা যাচ্ছে যে কার্নেলটি এটিকে বেছে নিয়েছে, কিন্তু অভিযোগ করে চলেছে যে এটি স্বীকৃত নয়।

অন্য কারও কাছেও এই সমস্যাটি রয়েছে, বা কোনও কীটি ম্যাপ করতে চায় যা ওএস দ্বারা পঠিত নয়, পড়ুন।

একটি টার্মিনাল খুলুন এবং চালান dmesg | grep -A 1 -i setkeycodes। এটি আপনাকে এরকম একাধিক এন্ট্রি দেবে:

[    9.307463] atkbd serio0: Unknown key pressed (translated set 2, code 0xbe on isa0060/serio0).
[    9.307476] atkbd serio0: Use 'setkeycodes e03e <keycode>' to make it known.

আমরা যা আগ্রহী তা হ'ল "সেটকিও কোডস" এর পরে হেক্সাডেসিমাল মান, এক্ষেত্রে এটি e03e। আপনার যদি এর একাধিক থাকে তবে আপনি চালাতে পারেন tail -f /var/log/kern.log। একবার এটি হয়ে গেলে আপনি যে বোতামটি সন্ধান করছেন তা আলতো চাপতে পারেন এবং এটি আপনাকে উপরের মতো একটি লাইন দেয় এবং আবার আমাদের কেবল হেক্সাডেসিমাল মান প্রয়োজন। এটি একটি নোট করুন।

এখন চালান xmodmap -pke | lessএবং উপযুক্ত ম্যাপিং সন্ধান করুন। আমার ক্ষেত্রে, আমার টাচ প্যাড টগল করার জন্য আমার এটিকে মানচিত্রের প্রয়োজন ছিল, যার অর্থ আমি নিম্নলিখিত লাইনে আগ্রহী:

keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle

আপনি যা আগ্রহী তা যদি খুঁজে না পান তবে @ গিলস উত্তরও পড়ুন, যেমন আপনি কাস্টম ম্যাপিংগুলিও সংজ্ঞায়িত করতে পারেন, তবে পড়ুন (কার্নেল এটি পড়লে আপনাকে এটিকে xorg.conf এ যুক্ত করার প্রয়োজন হবে না)। ঘ)

এখন আমি নিম্নলিখিত কমান্ড দৌড়াতে sudo setkeycodes [hexadecimal] [keycode], তাই আমার ক্ষেত্রে যে হয়ে ওঠে: setkeycodes e03e 199

এখন আপনি নিম্নলিখিত লাইনটি পরীক্ষা করতে ব্যবহার করতে পারেন যদি এটি কাজ করে এবং / অথবা আপনার কাছে সঠিক ম্যাপিং রয়েছে:

xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

আপনি যখন এই কমান্ডটি চালাবেন, তখন আপনাকে নতুন খোলা উইন্ডোতে ফোকাস করতে হবে ( xev) এবং কনসোল আউটপুট পরীক্ষা করা উচিত। আমার ক্ষেত্রে এটি নিম্নলিখিত হিসাবে পড়ুন:

207 NoSymbol

এটি স্পষ্টতই ভুল ছিল, যেমন আমি কীকোডের অনুরোধ করেছি 199, তাই এটিতে ম্যাপ করা হয়েছে XF86TouchpadToggle। আমি xmodmap -pkeআবার যাচাই করেছিলাম , এবং লক্ষ্য করেছি যে এটির সাথে keycode 207ম্যাপ করা আছে NoSymbolএবং আমি লক্ষ্য করেছি যে 8 এর অফসেট পার্থক্য রয়েছে, তাই আমি setkeycodesআবার কমান্ডটি চেষ্টা করেছি , তবে কীটি ম্যাপ করা হয়েছে keycode 191

sudo setkeycodes e03e 191

এটি পুরোপুরি কাজ করে।

সম্পাদনা - আমি যে সমাধানটি শুরুতে কাজ করার জন্য সরবরাহ করেছি তা তা নয়। আমি আগামীকাল এটি খুঁজে বের করব এবং এই উত্তরটি আপডেট করব। আপাতত আমি মনে করি আপনি এটি ম্যানুয়ালি শুরু করতে পারেন।


1
কীভাবে এটি সুন্দর উপায়ে স্থায়ী করবেন? (যেমন পুনরায় সেট / বুট-আপের পরে)
ভ্যাক

4

এর চেহারা থেকে, ডিভাইসটি একটি কীবোর্ড (সফ্টওয়্যারটিতে "মূল" কীবোর্ড থেকে পৃথক হিসাবে স্বীকৃত) তবে এক্স সার্ভার এটি শুনছে না।

এর অধীনে একটি ইনপুট বিভাগ যুক্ত করার/etc/X11/xorg.conf.d চেষ্টা করুন । এটি হ'ল একটি ডিরেক্টরি তৈরি করুন /etc/X11/xorg.conf.dযদি এটি ইতিমধ্যে বিদ্যমান না থাকে extra-keyboard-buttonsএবং সেই ডিরেক্টরিতে থাকা একটি ফাইল তৈরি করুন

Section "InputClass"
    Identifier "extra-keyboard-buttons"
    Driver "kbd"
    MatchProduct "AT Translated Set 2 keyboard"
EndSection

আমি এই MatchProductলাইন সম্পর্কে নিশ্চিত নই ; যদি এটি কাজ না করে তবে MatchXXXনির্দেশিকাগুলির সাথে মিলিয়ে দেখার চেষ্টা করুন ।

এই ফাইলটি সঠিকভাবে সেট আপ হয়ে গেলে আপনি এক্স সার্ভারটি শুরু করার পরে, এই কীবোর্ড থেকে ইভেন্টগুলি প্রক্রিয়া করা উচিত এবং আপনার ইভেন্টগুলি xevঅন্য কোথাও দেখতে পাওয়া উচিত । কী-কোডটি নোট করুন (X11 কীকোড এই ক্ষেত্রে হার্ডওয়্যার কীকোডের মতো হবে কিনা তা আমি নিশ্চিত নই) এবং এর সাথে কিসিম যুক্ত করুন। .Xmodmapআপনার হোম ডিরেক্টরিতে থাকা একটি ফাইলের মাধ্যমে আপনি এটি করতে পারেন

keycode 190 = XF86_Launch5

আপনি এখন এই কীগুলি ব্যবহার করে কীবোর্ড শর্টকাটগুলি সংজ্ঞায়িত করতে পারেন ।

টাচপ্যাড টগল করতে, কমান্ডটি ব্যবহার করুন xinputxinput listকী ইনপুট ডিভাইসগুলি উপলভ্য তা দেখতে ছুটে যান এবং আপনার টাচপ্যাডের নামটি নোট করুন (আমি এটি Touchpadনীচে কল করব )। xinput list-props Touchpadএর বৈশিষ্ট্য তালিকা করতে চালান ; এর মধ্যে একটির পাশের একটি নম্বর (উদাহরণস্বরূপ 135) সহ তাকে "ডিভাইস সক্ষম" বলা উচিত। নিম্নলিখিত স্ক্রিপ্ট টাচপ্যাড টগল করবে:

#!/bin/sh
device_name='Touchpad'
property=135
flipped_state=$(xinput list-props "$device_name" |
                awk "/\\($property\\)/ {print 1 - \$NF}")
xinput set-prop "$device_name" "$property" "$flipped_state"

এটি একটি ফাইলে সংরক্ষণ করুন ~/bin/toggle-touchpadএবং সম্পাদনযোগ্য ( chmod +x ~/bin/toggle-touchpad) করুন। এটি একটি কীতে আবদ্ধ করতে, xbindkeys ইনস্টল করুন এবং আপনার স্ক্রিপ্টটি চালানোর জন্য নীচের লাইনগুলি রেখে এটি কনফিগার করুন ~/.xbindkeysrc:

"toggle-touchpad"
  XF86_Launch5

উত্তরের জন্য ধন্যবাদ. দুর্ভাগ্যক্রমে এটি কার্যকর হয়নি। আমি যদিও এটি কাজ করেছিলাম, তাই আমার নিজের উত্তরটি দেখতে দ্বিধা বোধ করুন! :)
হোশ সাদিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.