এক্সকেবি দিয়ে কয়েকটি কীকড ওভাররাইড করুন


10

আমি এক্সকেবি দিয়ে কয়েকটি চাবি পরিবর্তন করতে চাই। (কেন? এমন ল্যাপটপে যেখানে কিছু কীগুলি অসুবিধাজনকভাবে অবস্থিত)) আমি বর্তমানে xmodmap ব্যবহার করছি:

keycode 110 = Prior
keycode 115 = Delete
keycode 112 = Next
keycode 117 = Insert
keycode 119 = End
keycode 118 = Home

পরিবর্তে আমি এক্সকেবি ব্যবহার করতে চাই এবং নির্দিষ্ট কীকোডগুলিতে বিভিন্ন কীওয়ার্ড বরাদ্দ না করে নির্দিষ্ট শারীরিক কীগুলির জন্য বিভিন্ন প্রতীকী নাম নির্ধারণ করতে চাই। ( এই কেন।) আমি keycode 110 পাঠাতে চান PGUPপরিবর্তে HOME, keycode 115 পাঠাতে DELEপরিবর্তে END, ইত্যাদি কনফিগারেশন বাকি প্রভাবিত করা আবশ্যক (তাই PGUPkeysym পাঠানোর রাখা Priorইত্যাদি, এবং সমস্ত অন্যান্য চাবি থাকা যেমন তারা).

আমি কীভাবে এই নির্দিষ্ট কীকোডগুলির অ্যাসাইনমেন্টটি পরিবর্তন করতে পারি? আমি একটি ফাইল লোড করব xkbcomp somefile.xkb $DISPLAY, আমার কি লাগাতে হবে somefile.xkb?

উত্তর:


14

আপনার কীকোড পরিবর্তনগুলি সমন্বিত একটি ফাইল তৈরি করুন এবং এটি সংরক্ষণ করুন (উদাহরণস্বরূপ) ~/.xkb/keycodes/local। ( keycodesডিরেক্টরিটি হার্ড-কোডেড; বেস ডিরেক্টরিটি অন্য কিছু হতে পারে এবং ফাইলের নামও)) এটি আপনার ক্ষেত্রে ধারণ করবে

xkb_keycodes {
  <PGUP> = 110;
  <PGDN> = 112;
  <DELE> = 115;
  <INS> = 117;
  <HOME> = 118;
  <END> = 119;
};

এটি লোড করতে, চালান

setxkbmap -print | sed -e '/xkb_keycodes/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.xkb - $DISPLAY

এটি আপনার বর্তমান সেটিংসকে আউটপুট +localদেয়, xkb_keycodes includeবিবৃতিতে যোগ করে এবং এটি এক্সকেবি সংকলকটিতে ~/.xkbঅন্তর্ভুক্ত করার পথে যুক্ত করে। (আপনি যদি নিজের ফাইলটির নাম বাদে অন্য কিছু রেখে থাকেন তবে ~/.xkb/keycodes/localঅবশ্যই আপনার পরিবর্তন করা দরকার +localএবং -I${HOME}/.xkb})) অন্য সমস্ত সেটিংস সংরক্ষিত রয়েছে।


1
সুতরাং এই প্রত্যাশিত পাথ এবং পথ থেকে এটি পাস করা হয় -Iসুইচ! ধন্যবাদ, আমি ম্যানপেজ থেকে এটি বের করতে অক্ষম ছিলাম।
এল লেভেরেল

মোহন মত কাজ! xkb_symbols আপডেট করতে চাইলে এটি কাজ করেছে, কেবল xkb_keycodes এর সাথে প্রতিস্থাপন করুন, কাজ করেছেন
zw963

5

আপনি setxkbmap -print > somefile.xkbবেস হিসাবে যে কী-ম্যাপটি ব্যবহার করছেন তা পেয়ে আপনি শুরু করতে পারেন এবং তারপরে xkb_keycodesবিভাগে আপনার পছন্দসই মূল নামগুলি পুনরায় সংজ্ঞায়িত করতে পারেন :

xkb_keymap {
 xkb_keycodes {
  include "evdev+aliases(azerty)"
  // Custom <key name> = keycode
  <INS> = 117;
  <HOME> = 118;
  <PGUP> = 110;
  <DELE> = 115;
  <END> = 119;
  <PGDN> = 112;
 };
 xkb_types { include "complete"};
 xkb_compatibility { include "complete"};
 xkb_symbols { include "pc+fr+inet(evdev)"};
 xkb_geometry { include "pc(pc104)"};
};

এটি সতর্কতা উত্পন্ন করে যে কয়েকটি মূল নাম একাধিকবার বরাদ্দ করা হয় তবে এটি কাজ করে কারণ কেবলমাত্র সর্বশেষ এক গণনা (সুতরাং এটি অন্তর্ভুক্ত করার পরে কাস্টম সেটিংস স্থাপন করা গুরুত্বপূর্ণ)। এবং ফাইলটি পঠনযোগ্য হওয়ার সুবিধা রয়েছে।

আরেকটি উপায় হ'ল যে ফাইলটি আপনি ব্যবহার করেন সেই কী ম্যাপটি ডাম্প করা: xkbcomp $DISPLAY somefile.xkbএবং একই লাইনগুলি সংশোধন করুন (এটি মূল্যায়িত অন্তর্ভুক্ত সহ একই কী ম্যাপ)। এইভাবে একাধিক সংজ্ঞার জন্য কোনও সতর্কতা নেই, তবে এটি কম পাঠযোগ্য।


1
এই সমস্ত নাম ( evdev+aliases(azerty)ইত্যাদি) কোথা থেকে আসছে? আমি সুস্পষ্টভাবে একটি সম্পূর্ণ পুনর্গঠন নয়, একটি আপেক্ষিক পরিবর্তন সম্পাদন করতে চাই। প্রশ্নগুলিতে তালিকাবদ্ধ 6 টি বাদে কীগুলি অবশ্যই প্রভাবিত হবে না, আমি কমান্ড জারি করার সময় তারা যে অবস্থায় ছিল সেগুলিতে অবশ্যই থাকতে হবে।
গিলস 17:32-এ খারাপ হওয়া বন্ধ করুন '

1
তারা আসে setxkbmap -print, তারা ফাইল থেকে /usr/share/X11/xkb/। আমি মনে করি আপনাকে একটি সম্পূর্ণ কী ম্যাপ দিতে হবে xkbcompতবে আমি ভুল হতে পারি ...
লিয়াজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.