আমি কীভাবে একটি একক ডিভাইসের (লজিটেক উপস্থাপক) কীম্যাপটি পরিবর্তন করব?


20

আমার লজিটিচ আর 400 উপস্থাপক নিম্নলিখিত কী কোডগুলি প্রেরণ করেছেন:

keycode 112 (keysym 0xff55,  Prior) [page up]
keycode 117 (keysym 0xff56,   Next) [page down]
keycode  60 (keysym   0x2e, period)
keycode  71 (keysym 0xffc2,     F5)
keycode   9 (keysym 0xff1b, Escape)

মূলত, আমি বাঁশিকে দূর থেকে নিয়ন্ত্রণ করতে এই উপস্থাপকটি ব্যবহার করতে চাই, তাই আমি পুনরায় তৈরি Priorকরতে B, আরও কিছু Nextকরতে চাই N

আমি কীভাবে কেবলমাত্র এই ডিভাইসের কীম্যাপটি পরিবর্তন করতে পারি (যেহেতু আমি অবশ্যই বিশ্বব্যাপী এই কী কোডগুলি পুনরায় তৈরি করতে চাই না)?


এএফআইইউ "স্লেভ পয়েন্টার" এর অর্থ এটি একটি মাউস, কোনও কীবোর্ড নয়। আপনি একটি মাউসের উপর একটি কীম্যাপ লোড করতে পারবেন না। এইগুলি কি আসলেই কেবল এক্সপুট তালিকায় উপস্থিত ডিভাইসগুলি?
মারিউস গেডমিনাস

@ মারিয়াসজেডমিনাস আমাকে / dev / ইনপুট / ইভেন্টএক্স ডিভাইসগুলির মধ্যে দিয়ে যেতে হয়েছিল এবং ইভেন্ট 5 উপস্থাপক ছিল, সুতরাং এটি সর্বোপরি একটি "কীবোর্ড" বলে মনে হচ্ছে।
htorque

উত্তর:


15

আমি এটি কখনও করি নি তবে আমার মনে হয় আপনার একটি কীম্যাপ ফাইল তৈরি করতে হবে /lib/udev/keymaps/এবং আপনার ডিভাইসটিতে একটি বিধি যুক্ত করতে হবে/lib/udev/rules.d/95-keymap.rules


বিবরণ:

  • একটি উদেব কীম্যাপ কী কোডগুলিতে স্ক্যান কোডগুলি ম্যাপ করে, তাই কীম্যাপ ফাইল তৈরি করতে আপনার উভয়কেই খুঁজে বের করতে হবে। স্ক্যান কোডগুলি নিম্নলিখিতটি চালান এবং ডিভাইসে বোতামগুলি টিপুন:

    sudo /lib/udev/keymap -i input/event5
    

    ইভেন্ট * এর জন্য আপনার বিভিন্ন সংখ্যা চেষ্টা করতে হতে পারে । আউটপুটটি দেখতে এইরকম হওয়া উচিত:

    scan code: 0x70037   key code: dot
    scan code: 0x70029   key code: esc
    scan code: 0x7003E   key code: f5
    scan code: 0x7004B   key code: pageup
    scan code: 0x7004E   key code: pagedown
    

    কী কোডগুলির একটি তালিকা এখানে পাওয়া যাবে

    এখন কীম্যাপ ফাইলটি তৈরি করুন (আমি এটিকে / lib / udev / keymaps / logitech-r400 হিসাবে সংরক্ষণ করছি ):

    0x70037 brightnessdown
    0x70029 brightnessup
    0x7003E brightnessdown
    0x7004B brightnessup
    0x7004E brightnessdown
    

    দরকারী কিছু করে না - সহজেই পরীক্ষা করে এটি কার্যকর হয় কিনা তা দেখার জন্য।

  • অস্থায়ীভাবে নতুন কীম্যাপটি পরীক্ষা করতে, চালান:

    sudo /lib/udev/keymap input/event5 /lib/udev/keymaps/logitech-r400
    

    যার ফলশ্রুতিতে এই ফলাফল পাওয়া উচিত:

    Remapped scancode 0x70037 to 0xe0 (prior: 0x34)
    Remapped scancode 0x70029 to 0xe1 (prior: 0x01)
    Remapped scancode 0x7003e to 0xe0 (prior: 0x3f)
    Remapped scancode 0x7004b to 0xe1 (prior: 0x68)
    Remapped scancode 0x7004e to 0xe0 (prior: 0x6d)
    

    বোতামগুলির এখন উজ্জ্বলতা পরিবর্তন করা উচিত।

  • আপনি যদি এই পরিবর্তনটি স্থায়ী করতে চান, আপনাকে /lib/udev/rules.d/95-keymap.rulesডিভাইসে কীম্যাপ ফাইলটি প্রয়োগ করে এমন একটি ইউদেব বিধি যুক্ত করতে হবে।

    1. ফাইলটি খুলুন: gksudo gedit /lib/udev/rules.d/95-keymap.rules
    2. ফাইলের নীচে, তবে LABEL="keyboard_end"লাইনের আগে , যুক্ত করুন:

      ENV{ID_VENDOR}=="Logitech*", ATTRS{idProduct}=="c52d", RUN+="keymap $name logitech-r400"
      
    3. সংরক্ষণ করুন, বন্ধ করুন এবং পুনরায় বুট করার পরে বোতামগুলির উজ্জ্বলতা পরিবর্তন করা উচিত।


ওহ, আমি কীভাবে তা ভুলে যেতে পারি (/ lib / udev / keymaps / zepto-znote আমার দ্বারা অবদান ছিল: ডি)। আমি আপনার উত্তরে কীভাবে এটি তৈরি করেছি সে সম্পর্কে পরে আরও যুক্ত করব।
htorque

এই উত্তরে কেবল যুক্ত করতে চেয়েছিলেন যে আপনার কীবোর্ডটি "ইভেন্টএক্স" চালিয়ে কী হতে পারে তার মধ্যে আপনি শূন্য করতে পারেন /lib/udev/findkeyboards। এটি বর্তমানে সংযুক্ত সমস্ত কীবোর্ডের তালিকা তৈরি করবে যাতে আপনাকে এত বেশি চেষ্টা করতে হবে না। লজিটেক আর 400 আমার জন্য "ইউএসবি কীবোর্ড: ইনপুট / ইভেন্ট 11" হিসাবে প্রদর্শিত হয়েছিল।
jat255

উত্তম উত্তর, তবে আমি কীভাবে ব্যবহার করতে ID_VENDOR এবং আইডিপ্রডাক্ট আবিষ্কার করব? আমি চেষ্টা /sys/class/dmi/id/sys_vendorএবং /sys/class/dmi/id/product_nameকিন্তু এটা কাজ করে নি।
পুতজকিপা

2
/lib/udev/keymapএবং /lib/udev/findkeyboards13.10 এ আর বিদ্যমান নেই। ফোরাম.বুন্টু- আরআর // ভিওটোপিক.এফপি?id=1395051 এর পরিবর্তে সবচেয়ে কার্যকর ব্যবহার করতে বলে।
স্টাফেন গৌরিচন

6
হ্যালো @ হটার্ক, আপনি কি নতুনভাবে উত্তরটি আপডেট করতে পারবেন? উবুন্টু ট্রাস্টিতে এই সমস্ত ফাইলের আর অস্তিত্ব নেই। আপনি কেবলমাত্র নেটটিতে আমি একই আইউসটি দেখেছি।
লন্ডুমাস

4

আমি উবুন্টু 16.04 এ আছি। আমি গাইড করেছিলাম এখানে

উদ্দীপনা সহ সনাক্ত করা হচ্ছে

sudo evtest

ডিভাইসের তালিকাটি দেখুন:

/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Sleep Button
/dev/input/event3:  Power Button
/dev/input/event4:  AT Translated Set 2 keyboard
/dev/input/event5:  Video Bus
/dev/input/event6:  USB Optical Mouse
/dev/input/event7:  AlpsPS/2 ALPS DualPoint Stick
/dev/input/event8:  AlpsPS/2 ALPS DualPoint TouchPad
/dev/input/event9:  Logitech USB Receiver
/dev/input/event10: Logitech USB Receiver
/dev/input/event11: HDA Intel PCH Dock Mic
/dev/input/event12: HDA Intel PCH Headset Mic
/dev/input/event13: HDA Intel PCH Dock Line Out
/dev/input/event14: HDA Intel PCH Headphone
/dev/input/event15: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event16: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event17: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event18: Integrated Webcam
/dev/input/event19: Dell WMI hotkeys
Select the device event number [0-19]: 9
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xc52d version 0x111
Input device name: "Logitech USB Receiver"

প্রথম "লজিটেক ইউএসবি রিসিভার" নিয়েছে, এখানে এটি ইভেন্ট আইডি 9 রয়েছে।

Testing ... (interrupt to exit)

ঠিক আছে এখন উদ্দীপিত ইনপুট চায়, কেবল লজিটেক রিমোট বোতামে ক্লিক করুন, আমি এটি পেয়েছি (সরলীকৃত):

[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
 <  value 7004b (KEY_PAGEUP)
 >  value 7004e (KEY_PAGEDOWN)

দ্রষ্টব্য: আমি [>] একাধিকবার ক্লিক করার পরে 7003e, তারপরে 70029, তারপরে 7003e ইত্যাদি প্রদান করার পরে আমি কেন জানি তা জানি না।

ওদেব কনফর্ম পরিবর্তন করা হচ্ছে

এখন যেহেতু আমাদের ইনপুট কোডগুলি রয়েছে, আসুন দেখে নেওয়া যাক ইউদেব কনফ:

sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb

"R400" অনুসন্ধান করুন এবং আপনি যা চান, প্লেপস এবং স্টপসিডি তীর কীগুলি দ্বারা উপস্থাপনা এবং ডিসপ্লেটগল প্রতিস্থাপন করুন :

# Logitech Presenter R400
evdev:input:b0003v046DpC52D*
 KEYBOARD_KEY_070029=playpause    # bottom  left [>] was "presentation"   
 KEYBOARD_KEY_07003e=playpause    # bottom  left [>] was "presentation"  
 KEYBOARD_KEY_070037=stopcd       # bottom right [ ] was "displaytoggle"

পূর্বে উল্লিখিত হিসাবে, 07003e এবং 070029 একই বোতাম হ'ল, আমি তাদের একই আউটপুট আপ কী দিয়েছি । 7004b & 7004e এখানে ডিফল্টরূপে উপস্থিত হয় না, কারণ তারা স্থানীয় PAGEUP এবং প্যাডডাউন ইনপুট এবং "লজিটেক উপস্থাপক আর 400" সম্পর্কিত নয়। আসুন তাদের যুক্ত করুন:

 KEYBOARD_KEY_07004b=previoussong #    top  left  <
 KEYBOARD_KEY_07004e=nextsong     #    top right  >  

আমার চূড়ান্ত কনফারেন্সটি এখানে:

 KEYBOARD_KEY_07004b=previoussong #    top  left  <
 KEYBOARD_KEY_07004e=nextsong     #    top right  >
 KEYBOARD_KEY_070029=playpause    # bottom  left [>] was "presentation"
 KEYBOARD_KEY_07003e=playpause    # bottom  left [>] was "presentation"
 KEYBOARD_KEY_070037=stopcd       # bottom right [ ] was "displaytoggle"

পুনরায় লোডিং (নতুন) নিয়ম

sudo udevadm hwdb --update

তারপরে আমরা আগে বেছে নেওয়া একই ইভেন্ট আইডি ব্যবহার করে এখানে ইভেন্ট আইডি 9:

sudo udevadm trigger /dev/input/event9

আপনি ওয়েব ব্রাউজারে এই নতুন ম্যাপিংটি পরীক্ষা করতে পারেন, উদাহরণস্বরূপ:

$('body').on('keydown', function(e){ console.log(e.key) })

এটি আমাকে দিয়েছে:

[>] ArrowUp
[ ] ArrowDown
 <  ArrowLeft
 >  ArrowRight

গিটহাব থেকে আপনার মূল লজিটেক- r400-remap.md গাইডে আমি কিছু ছোট উন্নতি করেছি। আপনি যদি চান তবে দয়া করে সেগুলি পরিবর্তন করুন বা এগুলিকে আপনার গিটহাব ওয়েবপৃষ্ঠায় সম্পাদনা করুন (আমার কাছে কোনও বিশেষণ প্রয়োজন নেই)। আপনার উত্তরটি ডাউনভোট হয়েছিল কারণ এটি আমার মতে একটি লিঙ্ক উত্তর ছিল, তাই আমি ডাউনটাও বাদ দিয়েছি।
কারেল

ডাউনোটগুলি সরানো হয়েছে, সুতরাং এখন আপনার উত্তরটি এখানে অন্য কোনও উত্তরের মতো নিজস্ব গুণাগুণ বিবেচনা করার সুযোগ পেয়েছে।
কারেল

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