হ্যাঁ, এক্সকেবি ব্যবহার করা সম্ভব। এক্সমোডম্যাপের বিপরীতে, এক্সকেবি পৃথক ডিভাইসের জন্য আপনার কীগুলি পুনরায় তৈরি করতে পারে।
দ্রষ্টব্য: আপনার xkbcomp> 1.2.2 রয়েছে তা নিশ্চিত করুন
প্রথমে আপনার ডিভাইসগুলি এর সাথে তালিকাবদ্ধ করুন:
xinput list
আপনি এই জাতীয় কিছু পাবেন:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Wacom Bamboo Pen Pen stylus id=11 [slave pointer (2)]
⎜ ↳ Wacom Bamboo Pen Finger touch id=12 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Optical Mouse id=13 [slave pointer (2)]
⎜ ↳ Wacom Bamboo Pen Pen eraser id=14 [slave pointer (2)]
⎜ ↳ Wacom Bamboo Pen Finger pad id=15 [slave pointer (2)]
⎜ ↳ GASIA USB KB V11 id=17 [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)]
↳ G19 Gaming Keyboard id=8 [slave keyboard (3)]
↳ G19 Gaming Keyboard id=9 [slave keyboard (3)]
↳ Logitech G19 Gaming Keyboard id=10 [slave keyboard (3)]
↳ GASIA USB KB V11 id=16 [slave keyboard (3)]
আপনার ডিভাইসের স্ট্রিং সনাক্ত করুন এবং নীচের শেল স্ক্রিপ্টটি সম্পাদনা করুন, আপনার ডিভাইসের নামের সাথে মানানসই শেড লাইনটি পরিবর্তন করুন। তারপরে আপনার কীগুলি পুনর্নির্মাণের দরকার তা পরিবর্তন করুন।
উদাহরণ: xev
আপনি যে কীটি পুনর্নির্মাণ করতে চান সেটি লোড করুন এবং টিপুন। ধরুন আপনি এটি কীকোড find৪ টি সন্ধান করেছেন htt https://gist.github.com/zoqaeski/3880640 এ 84 অনুসন্ধান করুন । এর মূল নাম <KP5>
। তারপরে আপনি যে চাবিটি এটির পরিবর্তে চান তা সন্ধান করুন ( নীচে আরও একই লিঙ্কে ) এবং বন্ধনীগুলির ভিতরে কী আছে তা অনুলিপি করুন। আপনার চাইলে সমস্ত কীগুলির জন্য প্রক্রিয়াটি পুনরাবৃত্তি করুন।
remote_id=$(
xinput list |
sed -n 's/.*GASIA.*id=\([0-9]*\).*keyboard.*/\1/p'
)
[ "$remote_id" ] || exit
# remap the following keys, only for my custom vintage atari joystick connected
# through an old USB keyboard:
#
# keypad 5 -> keypad 6
# . -> keypad 2
# [ -> keypad 8
# left shift -> left control
mkdir -p /tmp/xkb/symbols
# This is a name for the file, it could be anything you
# want. For us, we'll name it "custom". This is important
# later.
#
# The KP_* come from /usr/include/X11/keysymdef.h
# Also note the name, "remote" is there in the stanza
# definition.
cat >/tmp/xkb/symbols/custom <<\EOF
xkb_symbols "remote" {
key <KP5> { [ KP_Right, KP_6, U2192, U21D2 ] };
key <I129> { [ KP_Down, KP_2, U2193, U21D3 ] };
key <AD12> { [ KP_Up, KP_8, U2191, U21D1 ] };
key <LFSH> { [ Control_L ] };
};
EOF
# (1) We list our current definition
# (2) Modify it to have a keyboard mapping using the name
# we used above, in this case it's the "remote" definition
# described in the file named "custom" which we specify in
# this world as "custom(remote)".
# (3) Now we take that as input back into our definition of the
# keyboard. This includes the file we just made, read in last,
# so as to override any prior definitions. Importantly we
# need to include the directory of the place we placed the file
# to be considered when reading things in.
#
# Also notice that we aren't including exactly the
# directory we specified above. In this case, it will be looking
# for a directory structure similar to /usr/share/X11/xkb
#
# What we provided was a "symbols" file. That's why above we put
# the file into a "symbols" directory, which is not being included
# below.
setxkbmap -device $remote_id -print \
| sed 's/\(xkb_symbols.*\)"/\1+custom(remote)"/' \
| xkbcomp -I/tmp/xkb -i $remote_id -synch - $DISPLAY 2>/dev/null
তারপরে এটি উত্স করুন (আপনি এটি আপনার .xinitrc এ যুক্ত করতে পারেন)। সব শেষ! এখন কীগুলি টিপলে কাঙ্ক্ষিত আউটপুট উত্পন্ন করা উচিত, কেবলমাত্র আপনার নির্দিষ্ট ডিভাইসের জন্য for
সম্পাদনা : সম্প্রতি, আমি লক্ষ্য করেছি যে, কোনও কারণে, নতুন কনফিগারেশন অবিলম্বে প্রয়োগ করা হয়নি। আপনাকে প্রথমে আপনার অন্যান্য কীবোর্ডের একটি কী টিপতে হবে , তারপরে আপনার পরিবর্তিত কীবোর্ডে কনফিগার করা কীগুলি পরীক্ষা করতে হবে। আমি জানি না কেন এমন হয়, কিছুটা ক্যাশে হতে পারে।