কোনও ফাংশন / মাল্টিমিডিয়া কীতে শর্টকাট বাঁধতে সমস্যা


8

আমি একটি ব্যাচ স্ক্রিপ্ট একটি শর্টকাটে সংযোগ করতে চাই। যখন আমি এটিকে সিস্টেম সেটিংস> কীবোর্ড> শর্টকাটসের আওতায় আবদ্ধ করি তখন এটি আমার বাহ্যিক অ্যাপল কীবোর্ড থেকে আমার উজ্জ্বলতা কী বাদে প্রতিটি কী দিয়ে কাজ করে।

উজ্জ্বলতা কীগুলি কী-কোড 224 এবং 225 দিয়ে শো-তে স্বীকৃত ।

এক্স আউটপুট:

FocusOut event, serial 41, synthetic NO, window 0x4000001,
mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 41, synthetic NO, window 0x4000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 41, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

কোন পরামর্শ আমি কি করতে পারি?

উত্তর:


6

হলিউট ব্যবহার করে সমাধান

ম্যান পেজ অনুসারে halevtএইচএএল ইভেন্টগুলির জন্য একটি জেনেরিক হ্যান্ডলার ler এটি অবনমিত এবং প্রতিস্থাপন করা হয়েছে udev, তবে যেহেতু আমি যথেষ্ট সমাধান জানি না তাই udevআমি একটি halevtসমাধান দেব ।

সম্পাদনা: কিছু গুরুতর ঘামের পরে, আমি এটি করতে পেরেছি udev। দেখুন আমার অন্যান্য জবাব

আমি vimফাইলগুলি সম্পাদনা করতে ব্যবহার করব , তবে আপনি যদি না জানেন তবে vimআপনি এটি দ্বারা nanoবা এর মাধ্যমে প্রতিস্থাপন করতে পারেন gedit

হালভেস্ট ইনস্টল করা হচ্ছে

sudo apt-get update && sudo apt-get install halevt

কোন ইভেন্টগুলি আপনি কোনও স্ক্রিপ্টের সাথে আবদ্ধ করতে চান তা নির্ধারণ করে ইতোমধ্যে চলমান ডিমনটি
থামান halevt:

sudo /etc/init.d/halevt stop

এখন দেখুন halevtযে কীগুলি আপনি ব্যবহার করতে চান তার ইভেন্টগুলি চিনতে পারে কিনা , শ্রোতাটি শুরু করুন:

sudo -u halevt halevt -fig:plugdev

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

Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)

আপনি দেখতে পাচ্ছেন যে brightness-downএবং brightness-upইভেন্টগুলি সংক্রমণিত হয়েছে।

ইভেন্টটিকে একটি স্ক্রিপ্টের সাথে আবদ্ধ করুন
এখন ফাইলটি সম্পাদনা করুন /etc/halevt/halevt.xml:

sudo vim /etc/halevt/halevt.xml

এবং নিম্নলিখিত লাইনগুলি যুক্ত করুন (আমি এটি নীচে, ঠিক আগে এটি করেছি </halevt:Configuration>):

<halevt:Device match="hal.info.category = input">

    <halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>

    <halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>

</halevt:Device>

valueশ্রোতাদের কাছ থেকে আপনি যে ইভেন্টটি পেয়েছেন তাতে অবশ্যই আপনার পরিবর্তন হওয়া উচিত এবং execআপনি যে আদেশটি সম্পাদন করতে চান তার মাধ্যমে।

কমান্ড বা স্ক্রিপ্টটি করার জন্য হলভেট ব্যবহারকারীকে অনুমতি দিন
যেহেতু halevtডেমনটি halevtব্যবহারকারী হিসাবে চালিত হয় আপনি যা নির্দিষ্ট করেছেন তা করার অনুমতি আপনাকে দিতে হবে exec

চালান ( vimআপনার পছন্দের সম্পাদক দ্বারা প্রতিস্থাপন মনে রাখবেন )

sudo EDITOR=vim visudo

এবং নীচে নীচের লাইনগুলি যুক্ত করুন

halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh 

এবং সংরক্ষণ এবং ছেড়ে দিন।

আপনার স্ক্রিপ্ট সম্পাদনযোগ্য কিনা তা নিশ্চিত করুন

sudo chmod +x /home/user/brightness-script.sh

আবার হলিউট ডেমন শুরু করুন

sudo /etc/init.d/halevt start

এবং এটি কাজ করা উচিত!


নির্দোষভাবে কাজ করেছেন। আপনার যথাযথ উত্তরের জন্য আপনাকে আবার ধন্যবাদ।
রিমি

আপনাকে স্বাগতম, ব্যবহার করে আমার নতুন উত্তরও দেখুনudev । তবে অন্য সমাধানের সাথে নির্দ্বিধায় দ্বিধা বোধ করুন, গুরুত্বপূর্ণ বিষয়টি এটি কাজ করছে;)
গারহার্ড বার্গার

E: Unable to locate package halevt14.04 এ।
আম্পিরস্কি

উবুন্টু 13.10 যেহেতু halevt আর অন্তর্ভুক্ত করা হয় ( packages.ubuntu.com/search?keywords=halevt )
গেরহার্ড বার্গার

11

ইউদেব ব্যবহার করে সমাধান

যেহেতু এইচএএল হ্রাস করা হয়েছে এবং udevএখন এটি ব্যবহৃত হয়, তাই এই পদ্ধতিকে আমার অন্যান্য উত্তরের চেয়ে অগ্রাধিকার দেওয়া হয় (যদিও আমি মনে করি যে এইচএল ব্যবহার করে সমাধানটি সহজ)।

তবে অনেকগুলি ফাংশন কীগুলির জন্য আপনি কেবল কোনও স্ক্রিপ্ট বাঁধতে সিস্টেম সেটিংস> কীবোর্ড> শর্টকাটগুলি ব্যবহার করতে পারেন , প্রথমে এটি চেষ্টা করুন! এটি আপনাকে অনেক ঝামেলা বাঁচায়। উদাহরণস্বরূপ, উজ্জ্বলতা কীগুলি এটি কাজ করে না (আমার কী হবে না তা কোনও ক্লু নেই), সুতরাং যদি আপনি কীভাবে উদাহরণস্বরূপ ব্রাইটনেস কীগুলির আচরণ পরিবর্তন করতে চান তা পড়ুন।

দ্রষ্টব্য : আপনি যদি স্যামসুং নোটবুকটি চালাচ্ছেন তবে আপনি http://www.voria.org/forum/samsung-tools থেকে প্যাকেজটি ইনস্টল করে সমস্ত (মডেলের উপর নির্ভর করে) ফাংশন কীগুলি ঠিক করতে পারবেন

এই উপায়টি আপনাকে ধরে নিচ্ছে যে কীভাবে টার্মিনালটি ব্যবহার করতে হয় এবং vimসম্পাদক ব্যবহার করে । যদি আপনি না জানেন vimতবে কমান্ডগুলিতে এটি দ্বারা geditবা এটির মাধ্যমে প্রতিস্থাপন করুন nano


আপনার কীবোর্ড নির্ধারণ করা হচ্ছে

/lib/udev/findkeyboards

আমার ক্ষেত্রে কম্পিউটারে সংযুক্ত কী-বোর্ডগুলি মুদ্রণ করা উচিত

USB keyboard: input/event9
USB keyboard: input/event7
AT keyboard: input/event4

এখন দুটি বিকল্প আছে:

  • ইউএসবি কীবোর্ডগুলি :
    আপনি যদি নিজের ইউএসবি কীবোর্ডটি পুনরায় তৈরি করতে চান তবে চালিয়ে তাদের পরীক্ষা করুন

    udevadm info --export-db | awk '/event9/' RS="" | grep -P 'ID_(VENDOR|MODEL)(?!_ENC)'
    

    যেখানে আপনাকে 9 নম্বর প্রতিস্থাপন করতে হবে যথাযথ সংখ্যা দ্বারা statement আউটপুট অনুরূপ হওয়া উচিত

    E: ID_MODEL=USB_Receiver
    E: ID_MODEL_ID=c52b
    E: ID_VENDOR=Logitech
    E: ID_VENDOR_ID=046d
    

    যা সঠিকভাবে ইঙ্গিত দেয় যে আমার কীবোর্ডটি আমার লজিটেক ইউএসবি রিসিভারের মাধ্যমে পরিচালিত হয় (ইনপুট / ইভেন্ট 7 আমার লজিটেক জি 9 মাউস হিসাবে দেখা গেছে যা কিছু প্রোগ্রামযোগ্য বাটন রয়েছে)।

  • ল্যাপটপ কীবোর্ড :
    আপনি যদি আপনার ল্যাপটপের কীবোর্ডটি পুনরায় তৈরি করতে চান তবে আপনার AT keyboardক্ষেত্রে আমার জন্য 4 নম্বরটি মনে রাখা উচিত । আপনার ল্যাপটপের জন্য ডিএমআই তথ্যও পান:

    cat /sys/class/dmi/id/sys_vendor
    

    যা আমার ক্ষেত্রে

    SAMSUNG ELECTRONICS CO., LTD.
    

    এবং

    cat /sys/class/dmi/id/product_name
    

    যা আমার ক্ষেত্রে

    305U1A
    

আপনার ফাংশন কীগুলির বর্তমান ম্যাপিং নির্ধারণ করুন

এখন আমরা কীবোর্ড শুনে আমাদের বর্তমান কী-ম্যাপিং নির্ধারণ করতে পারি (সঠিক নম্বর sertোকান)

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

আপনি ব্যবহার করে এই কমান্ড থেকে প্রস্থান করতে পারেন Escকীবোর্ড, বা Ctrl+ + cঅন্য কীবোর্ডে।

আপনার স্ক্রীন খুব কঠিন নিচে স্ক্রলিং, প্রেস শুরু হয়, তাহলে Escএবং Ctrl+ + cকয়েক বার এবং দিয়ে আবার চেষ্টা করুন

sudo /lib/udev/keymap -i input/event4 2> /dev/null

বা, আপনার যদি এখনও স্ক্রোলিংয়ের সমস্যা থাকে

sudo /lib/udev/keymap -i input/event4 > ~/keymap.log

শেষ ক্ষেত্রে আপনার কাছে এখনও স্ক্রোলিং থাকবে তবে আপনি যদি ফাংশন কীগুলি টিপেন তবে সেগুলিতে যেতে হবে ~/keymap.logযেখানে আপনি পরে সেগুলি পড়তে পারেন।

এখন আমরা আপনার ফাংশন কীগুলি টিপে টিপতে বর্তমান ম্যাপিংটি যাচাই করতে পারি, যা আপনাকে একটি তালিকা দেবে (এটি আমার Fn+ F1মাধ্যমে Fn+ F12):

scan code: 0xCE   key code: kpplusminus
scan code: 0x89   key code: brightnessdown
scan code: 0x88   key code: brightnessup
scan code: 0x82   key code: switchvideomode
scan code: 0xF9   key code: f23
scan code: 0xA0   key code: mute
scan code: 0xAE   key code: volumedown
scan code: 0xB0   key code: volumeup
scan code: 0x43   key code: f9
scan code: 0x44   key code: f10
scan code: 0xB3   key code: prog3
scan code: 0x86   key code: wlan

এখন স্ক্যান কোডগুলি লিখুন যার জন্য আপনি আচরণটি পরিবর্তন করতে চান।


স্ক্যান কোডগুলির জন্য কী কোডগুলি পরিবর্তন করা

আপনি যদি কী কোডটি পরিষ্কারভাবে দেখতে না পান তবে কী কী প্রত্যাশা করে তা আপনি কী এবং আপনি কী হতে চান সেটি কী বোতামগুলির/usr/include/linux/input.h নীচে একবার দেখতে পারেন যা আপনি কী হতে চান তার চেয়ে আরও ভাল মেলে কিনা তা দেখার জন্য cover মূল কোডগুলি ফরম্যাটে রয়েছে এবং আপনাকে ছোট হাতের অংশের পরে অংশটি লিখতে হবে । কখনও কখনও এটি পরিবর্তন সমস্যা সমাধানের জন্য যথেষ্ট।KEY_KEYCODEKEY_

উজ্জ্বলতা কীগুলির সাথে প্রায়শই তাদের সাথে সঠিক কীকোড যুক্ত থাকে এবং এটি তাদের পুনরায় তৈরি করতে দেয় না। সুতরাং আমাদের এগুলি অন্যান্য কীকোডগুলিতে পরিবর্তন করা দরকার। আমরা ব্যবহার করবে prog1এবং prog2এই উদাহরণস্বরূপ, কারণ এই আমার কম্পিউটারে ব্যবহার না হয়, তবে আপনার কাছে ব্যবহার করতে পারেন f13মাধ্যমে f24, অথবা f20মাধ্যমে f24আপনি যা হয়েছে একটি আপেল কীবোর্ড আছে F1মাধ্যমে F19কি।

  1. একটি কাস্টম কীম্যাপ
    তৈরি করুন : ডিরেক্টরিতে /lib/udev/keymapsএকটি উপযুক্ত নামের সাথে একটি কীম্যাপ ফাইল তৈরি করুন , উপযুক্ত নামের জন্য আউটপুটটি ls /lib/udev/keymapsদেখুন। আমি custom-brightnessএই প্রশ্নের উদ্দেশ্য নিয়ে যাচ্ছি ।

    sudo vim /lib/udev/keymaps/custom-brightness
    

    আপনি যে কীগুলি পরিবর্তন করতে চান তার স্ক্যান কোডগুলি প্রবেশ করুন এবং তারপরে আপনি যে স্ক্যানকোডগুলি চান তা অনুসরণ করুন। আমার custom-brightnessচেহারাটি এরকম:

    # /lib/udev/keymaps/custom-brightness
    
    0x89 prog1
    0x88 prog2
    
  2. একটি কাস্টম কী রিলিজ ফাইল তৈরি করুন। কেবলমাত্র যদি আপনি আপনার ল্যাপটপের কীবোর্ডটি চেঞ্জ করেন :
    কখনও কখনও কী রিলিজ ইভেন্টটি সঠিকভাবে প্রেরণ করা হয় না, যার ফলে কম্পিউটারটি স্তব্ধ হয়ে যায়। এটি এড়াতে আমরা একটি কাস্টম কী রিলিজ ফাইলও লিখব

    sudo vim /lib/udev/keymaps/force-release/custom-brightness
    

    এই ফাইলটিতে একই স্ক্যান কোড থাকা উচিত, আমার মত দেখাচ্ছে

    # /lib/udev/keymaps/force-release/custom-brightness
    
    0x89
    0x88
    

নতুন ম্যাপিংগুলি নিয়ম ফাইলগুলিতে লোড হয়েছে
তা নিশ্চিত করুন এখন আপনার ম্যাপিংগুলি লোড হয়েছে তা নিশ্চিত করা দরকার। আমরা /lib/udev/rules.d/95-keymap.rulesএটি সম্পাদনা করে করতে পারি , তাই ব্যাকআপ তৈরি করা স্মার্ট

আবার আমাদের দুটি বিকল্প রয়েছে:

  • ইউএসবি কীবোর্ডগুলি :
    যেহেতু আপনার কাছে একটি ইউএসবি কীবোর্ড রয়েছে আপনার নীচে আপনার এন্ট্রি যুক্ত LABEL="keyboard_usbcheck"করা উচিত এবং এটি আপনার কীবোর্ড প্রস্তুতকারকের অন্যান্য এন্ট্রিগুলির অতীত হওয়া উচিত। এটি কারণ আমার কীবোর্ড সঙ্গে

    E: ID_MODEL=USB_Receiver
    E: ID_MODEL_ID=c52b
    E: ID_VENDOR=Logitech
    E: ID_VENDOR_ID=046d
    

    ইতিমধ্যে একটি নিয়মের সাথে মেলে এবং অন্যথায় এটি ওভাররাইট হয়ে যায়।
    নিম্নলিখিত নিয়ম, যেখানে আপনি পরিবর্তন করা উচিত যোগ করুন ID_VENDOR_IDএবং ID_MODEL_IDএবং appropiately আপনার কীম্যাপ নাম

    ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c52b", RUN+="keymap $name custom-brightness"
    
  • ল্যাপটপ কীবোর্ড :
    যদি আপনার নিয়ম /lib/udev/findkeyboardsহিসাবে আপনার ল্যাপটপের কীবোর্ডটিকে রিপোর্ট করা হয় তবে অন্যথায় এটিতে রাখুন । আবার এটি আপনার ল্যাপটপ প্রস্তুতকারকের জন্য অন্যান্য এন্ট্রিগুলির নিচে রাখুন। নিম্নলিখিত নিয়মটি জুড়ুন ( কিছুটা দীর্ঘ তাই আমি একটি ওয়াইল্ডকার্ড ব্যবহার করেছি)AT keyboardLABEL="keyboard_vendorcheck"LABEL="keyboard_modulecheck"SAMSUNG ELECTRONICS CO., LTD.

    ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keymap $name custom_brightness"
    

    এখন /lib/udev/rules.d/95-keyboard-force-release.rulesএটির ব্যাক আপ করার পরে একটি বিধি যুক্ত করুন

    sudo cp /lib/udev/rules.d/95-keyboard-force-release.rules /lib/udev/rules.d/95-keyboard-force-release.rules.bak
    sudo vim /lib/udev/rules.d/95-keyboard-force-release.rules
    

    আবার আপনার নির্মাতার অন্যান্য এন্ট্রি অন্তর্ভুক্ত

    ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keyboard-force-release.sh $devpath custom_test"
    

নিশ্চিত করুন যে উদেব নতুন নিয়মগুলি
লোড করেছেন নতুন নিয়মগুলি চালনার জন্য

sudo adevadm trigger

দ্রষ্টব্য: udevadm control --reload-rules(এখনও অনেক ওয়েবসাইটের নির্দেশাবলীতে) কাজ করে না।

এখন নিয়মগুলি সফলভাবে প্রয়োগ হয়েছিল কিনা তা পরীক্ষা করে দেখুন

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

যা এখন উজ্জ্বলতা কীগুলির জন্য রিপোর্ট করা উচিত

scan code: 0x89   key code: prog1
scan code: 0x88   key code: prog2

সিস্টেম সেটিংসে কীগুলি পুনরায় ম্যাপ করুন
শেষ পদক্ষেপটি যদি সঠিক কী কোডগুলি জানায় তবে হয় কীগুলি স্বয়ংক্রিয়ভাবে কাজ শুরু করে (যদি তাদের ক্ষেত্রে প্রথমে ভুল কী কোড থাকে)।

উজ্জ্বলতার জন্য আপনাকে এখনও একটি স্ক্রিপ্টে কীগুলি আবদ্ধ করতে হবে যা এখন সিস্টেম সেটিংস> কীবোর্ড> শর্টকাটগুলি ব্যবহার করে সম্ভব ।

উপভোগ করুন



দ্রষ্টব্য :

  • যদি আপনার কীগুলির ভুল কী কোড ছিল এবং এই পদ্ধতির দ্বারা স্থির করা হয়েছে, দয়া করে নীচের নির্দেশাবলী অনুসরণ করুন /usr/share/doc/udev/README.keymap.txt.gz(আপনি এটি ব্যবহার না করেই এটি খুলতে পারেন zless) এবং আপনার ফলাফলগুলি সেখানে উল্লিখিত ইমেল অ্যাড্রেস প্রেরণ করুন, তারপরে পরিবর্তনগুলি পরবর্তী প্রকাশে অন্তর্ভুক্ত করা যেতে পারে। অনেক ব্যবহারকারী উপকৃত হবে!

  • বৈদাস জাবলোনস্কিসের এই সহায়ক পোস্টকে অনেক ধন্যবাদ ।


1
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directoryএছাড়াও$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
আম্পিরস্কি

আপনার মন্তব্যের জন্য ধন্যবাদ, আমি এটি সন্ধান করেছি এবং এটি প্রদর্শিত হয় যে ইউদেবটি সিস্টেমে একত্রীভূত হবে এবং পরিবর্তে কী-ম্যাপ সেটিংস এইচডাব্লুডিবিতে পরিচালিত হবে। বিবিএস.আরলিনিক্স.অর্গ / ভিউটোপিক.এফপি?id=168720 অনুসারে সিস্টেমেডের পুরানো সংস্করণ থেকে ফাইন্ডকিবোর্ডগুলি বের করা সম্ভব, তবে বাকি উত্তর এখনও প্রযোজ্য তা আমি নিশ্চিত নই ...
গারহার্ড বার্গার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.