একটি কাস্টম তৈরি কীবোর্ড থেকে একটি কী এর কোডকোড পান


12

আমি একটি মিনিটেলকে একটি রাস্পবেরি পাই দিয়ে কম্পিউটারে রুপান্তর করার চেষ্টা করছি।

এটি একটি মিনিটেল:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমি মিনিটেল কীবোর্ডের ম্যাট্রিক্সটি কোনও ইউএসবি কীবোর্ড পিসিবিতে সোনারড করেছি: এখানে চিত্র বর্ণনা লিখুন

সবকিছু ঠিকঠাক চলছে, আমি আমার কাস্টম কীবোর্ড থেকে কিছু কীগুলি রিসিভ করছি। আমার কেবল চাবিগুলি যথাযথভাবে পুনরায় তৈরি করতে হবে।

সুতরাং আমি এমন একটি প্রোগ্রাম তৈরি করার চেষ্টা করছি যা আমাকে aঅনুরূপ কীকোড টিপুন এবং ফাঁদে ফেলতে বলবে , এবং তারপরে আমার কাস্টম কীবোর্ডের সমস্ত কী সহ একটি এক্স মডোম্যাপ ফাইল তৈরি করবে।

আমার কেবল সমস্যাটি হ'ল আমি কী কী কোডটি (এবং কেবল এটিই পেতে পারি) তা কীভাবে খুঁজে পাব তা বুঝতে পারছি না। আমি চেষ্টা করেছি xevকিন্তু এটি ফিল্টার করার জন্য অনেক বেশি ডেটা প্রদর্শিত হয়েছে।

আমি জানি যে আমি হাতের সাথে সমস্ত কীকোডগুলি ট্র্যাক করতে পারি, তবে আমি 10 মিনিটকে রূপান্তর করব, তাই আমি আরও দ্রুততর উপায়টিকে পছন্দ করব!


আপনি কি এমএসটি প্রকল্পের জন্য মিনিটেল (গুলি) থেকে রম (গুলি) ফেলে দিতে পারবেন? সেই হার্ডওয়্যারটি বর্তমানে আনডাম্পড এবং অবশ্যই historicalতিহাসিক গুরুত্বের বিষয়।
সেন্ডমোরেইনফো

কেন নয়, তবে কীভাবে করব তা সম্পর্কে আমার কোনও ধারণা নেই!
xavier.seignard

উত্তর:


6

আমি ধরে নিয়েছি আপনি শেল বা অনুরূপ এগুলি করার চেষ্টা করছেন (অন্যথায়, আপনি কেবল এক্স লাইব্রেরিগুলি সরাসরি ব্যবহার করবেন)। যদি তা হয় তবে xinput --test «device-name»আপনাকে পার্স করা আরও সহজ হতে পারে ।

দুর্ভাগ্যক্রমে, এটি সত্যই শেল-স্ক্রিপ্টিং বন্ধুত্বপূর্ণ নয়। তবে আপনি এটি দিয়ে কাজ করতে পারেন stdbuf। এটি হত্যা না করা পর্যন্ত এটি চলতে পারে, তবে আপনার শেল স্ক্রিপ্টটি এটিকে পাইপ করতে পারে read

সুতরাং, আপনি এর মতো কিছু করতে পারেন:

stty -echo
stdbuf -oL xinput test 'AT Translated Set 2 keyboard' \
    | perl -nE 'BEGIN {$| = 1} m/^key press\s+(\d+)/ and say $1' \
    | for key in q w e r t y; do
         echo -n "Please press $key: "
         read -r keycode
         echo "key $key = $keycode"
    done
stty echo

আপনাকে "এটি অনুবাদিত সেট 2 কীবোর্ড" এর জায়গায় সঠিক কীবোর্ডের নামটি ব্যবহার করতে হবে। আপনি এটি দিয়ে এটি পেতে পারেন xinput list:

anthony@Zia:~$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=8    [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)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]

দুর্ভাগ্যক্রমে, আপনাকে একটি নির্দিষ্ট ডিভাইস ব্যবহার করতে হবে - আপনি মূল কীবোর্ড ব্যবহার করতে পারবেন না।

(এছাড়াও, আপনাকে উপরের জিনপুটকে মারার উপায় খুঁজে বের করতে হবে, বা আপনি সমস্ত কীগুলি প্রবেশ করানোর পরে কন্ট্রোল-সি-তে আঘাত করার জন্য নিজেকে সন্তুষ্ট করতে হবে And )


ধন্যবাদ ডারোবার্ট! যে আমার প্রয়োজন পুরোপুরি ফিট! আমি idএর নামের পরিবর্তে কীবোর্ডটি ব্যবহার করেছি, কারণ আমার 2 টি একই নামের সাথে দ্বন্দ্ব ছিল। সুতরাং xinput test 18যেখানে 18 আমার কীবোর্ডের আইডি।
xavier.seignard

যদি আমি একটি কমান্ড দিয়ে দীর্ঘায়িত না হয়ে একই কাজ করতে পারি (যেমন প্রথম কী টিপে যাওয়ার পরে থামায় এবং কী কোডটি ফেরত দেয়) এটি এক ধরণের স্বপ্ন হবে :)
xavier.seignard

@ xavier.seignard আমি চেষ্টা করেছি এবং এমন কোনও ইউটিলিটি খুঁজে পাইনি যা এটি করে। তবে এক্সপুট উত্সটি নেওয়া এবং এটি সেভাবে কাজ করা মোটামুটি সহজ হবে ... চেক করুন test.c, প্রাসঙ্গিক ফাংশনটি দেখে মনে হচ্ছে print_events। সম্ভবত xorg এন ইভেন্টগুলির পরে থামতে একটি পতাকা যুক্ত করতে কোনও প্যাচ নেবে ?
ডারোবার্ট

@ xavier.seignard আমি এটি করার জন্য সবেমাত্র দৌড়ে এসেছি ... xinput --query-stateবর্তমান অবস্থাটি দেয় এবং সঙ্গে সঙ্গে প্রস্থান করে। আপনি এটি ব্যস্ত লুপ করতে পারে।
ডার্ববার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.