লিনাক্স কার্নেল কাস্টম কীবোর্ড স্ক্যান কোডগুলি ছাড়ছে


16

আমার কাছে একটি ভিনটেজ আইবিএম 122 কী মডেল এম কীবোর্ড রয়েছে যা আমি একটি আধুনিক কম্পিউটারে ব্যবহারের জন্য গ্রহণ করছি। এনকোডিং করতে এবং ইউএসবি পাশের জিনিসগুলি পরিচালনা করতে আমি একটি টেনেসি 2.0 ব্যবহার করছি। আমি হাম্বল হ্যাকার কীবোর্ড প্রকল্প ( https://github.com/humblehacker/keyboard ) থেকে ফার্মওয়্যার ধার নিয়েছি এবং বিল্ড কনফিগারেশনে অতিরিক্ত কীগুলি যুক্ত করেছি। এ পর্যন্ত সব ঠিকই.

সমস্ত "নিয়মিত" কী কাজ করে তবে কার্নেলটি অতিরিক্ত কী ( F13- F24, ইত্যাদি) বাদ দিচ্ছে বলে মনে হয় ।

চলমান /lib/udev/keymap -i input/event0সমস্ত সাধারণ কীগুলির স্ক্যান কোডগুলি দেখায়, তবে অতিরিক্ত কীগুলির জন্য কিছুই নেই।

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

আমি মনে করি এটি কার্নেল ড্রাইভারদের মধ্যে এমন কিছু যা কেবল স্ক্যান কোড সরবরাহ করে না যা এটি প্রত্যাশা করে না।

আমি ভাবব যে কোনও .hজায়গায় কার্নেলের উত্সের কোনও ফাইলে কোনও ধরণের "মাস্টার" কী ম্যাপ থাকবে , তবে এখন পর্যন্ত আমি এটির সন্ধানে আমার প্রচেষ্টায় সফল হইনি।

এটি জোর দেওয়ার মতো বিষয় যে আমি আমার আগে অন্য অনেকের মতো এক্সে অতিরিক্ত কীগুলি ম্যাপিংয়ের বিষয়ে জিজ্ঞাসা করছি না। এটি নিম্ন স্তরের, সম্ভবত কার্নেল সম্পর্কিত, সমস্যা। এই মুহুর্তের জন্য ধরে নিন যে আমি কখনই এক্স ব্যবহার করব না। আমার যা দরকার তা হল আমি চালানোর সময় স্ক্যান কোডগুলি প্রদর্শিত হয় /lib/udev/keymap -i, আমি সেখান থেকে বাকীগুলি করতে পারি।


আমি জানি এটি সাহায্য করে না: আপনি কেন টেনেসি ব্যবহার করছেন? এই কীবোর্ডটি সোজা পিএস 2 / ইউএসবি অ্যাডাপ্টারের সাথে কাজ করা উচিত।
গোল্ডিলোকস

কীবোর্ডটি একটি পুরানো আইবিএম টার্মিনাল থেকে এসেছে, এটি পিএস / 2 সামঞ্জস্যপূর্ণ প্রোটোকল ব্যবহার করে না।
ব্যবহারকারী 2543941

কি দারুন. প্রকৃতপক্ষে এটি হতে পারে যে ড্রাইভার ইভেন্টটি পাস করছে না ( এখানে শেষ অংশটি দেখুন )। এর evtestপরিবর্তে আপনি চেষ্টা /lib/udev/keymap -iকরতে পারেন, যদি কোনও ভিন্নরকম হয় তবে ডুনো।
গোল্ডলোকস

1
অতিরিক্ত কীগুলি ব্যবহার করা হলে স্পষ্টত কিছুই দেখায় না।
ব্যবহারকারী 2543941

1
দেখে মনে হচ্ছে আপনি যদি এই কীগুলি ব্যবহার করতে চান তবে আপনার প্রকল্পটি কিছুটা বড় হয়েছে, হ'ল। কীবোর্ড ড্রাইভার লেখার পক্ষে সবচেয়ে কঠিন বিষয়টি এপিআই শিখতে হবে, অন্যথায় এগুলি এত জটিল দেখাচ্ছে না। আমি কিছুক্ষণের মধ্যে কোনও কার্নেল স্টাফ করিনি, তবে এটি: এলডিডি 3 এখনও 3.x এর জন্য বৈধ, আমি মনে করি।
গোল্ডিলোকস

উত্তর:


1

কার্নেলটি অদ্ভুত স্ক্যান কোডগুলি দেখে এবং সেগুলি ফেলে দেয়। আমি সেই স্ক্যান কোডের মানগুলি পাওয়ার চেষ্টা করব এবং তারপরে হার্ডওয়্যার ডাটাবেস সূচকটি আপডেট করব। সংক্ষেপে পরিকল্পনাটি হ'ল:

  • ডেমস্যাগ আউটপুট থেকে কোডগুলি পান - অজানা কীকোড চাপলে ডেমসগের এমন কিছু হওয়া উচিত:

    Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0)
    

a0 কোড মান হচ্ছে।

  • কাস্টম কীকোড ম্যাপিং ফাইল তৈরি করুন। উদাহরণ এবং সহায়তা ডিফল্ট ফাইলে রয়েছে
    ( /usr/lib/udev/hwdb.d/60-keyboard.hwdbআর্চের জন্য, এটি অন্যান্য বিতরণে আলাদা হতে পারে)।

  • কমান্ডগুলি চালনা করে হার্ডওয়্যার ডাটাবেস আপডেট এবং ট্রিগার করুন:

    > udevadm hwdb --update
    > udevadm trigger /dev/input/eventXX
    

যেখানে eventXXআপনার কীবোর্ডের সাথে মিল রয়েছে (আপনি এটি চালিয়ে পেতে পারেন evtest)। আপনি ট্রিগার পরিবর্তে পুনরায় বুট করতে পারেন।

অল্পক্ষণের আর্চ উইকি এবং আরো বিস্তারিত বিবরণ জন্য ডিফল্ট keycode ম্যাপিং ফাইল (অথবা আপনার বন্টন ডকুমেন্টেশনে যদি না আর্চ এর)।

এটি নির্ভরযোগ্য এবং সহজ পদ্ধতি, কার্নেল স্তরে ম্যাপিং তৈরি করে তাই ডিসপ্লে সার্ভার, ডিই ইত্যাদি যা কাজ করে তা কাজ করে।


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