কীভাবে স্থায়ীভাবে কোনও ইউএসবি কীবোর্ডে ভিন্ন ভিন্ন কীবোর্ড বিন্যাস বরাদ্দ করবেন?


16

আমি প্রায়শই আমার ল্যাপটপে একটি ইউএসবি কীবোর্ড প্লাগইন করি (বাহ্যিক মনিটর এবং মাউস ছাড়াও, যা সমস্ত আমার ল্যাপটপটিকে একটি ডেস্কটপ কম্পিউটারে রূপান্তর করে) এবং আমি তখন ভিন্ন কীবোর্ড লেআউট ব্যবহার করতে পছন্দ করি।

আমি এই ইউএসবি কীবোর্ডটি প্রতিবার প্লাগইন করে নিজেই বর্তমান কীবোর্ড লেআউটটি পরিবর্তন করতে হবে।

এবং আমি যদি এটি সম্ভব হয় তবে এটির জন্য একটি স্বয়ংক্রিয় উপায় ব্যবহার করতে চাই।

রাডুর এখানে প্রশ্নের উত্তরটি কিছু সূত্র দেয়, তবে মনে হচ্ছে কম্পিউটারটি যখনই শুরু হবে তখনই আমার ইউএসবি কীবোর্ডের ডিভাইস আইডি পরিবর্তন হওয়ার সাথে সাথে এই টাস্কের জন্য আমার একটি স্টার্টআপ স্ক্রিপ্টের দরকার হবে ।

এই স্টার্টআপ স্ক্রিপ্টটিতে সম্ভবত প্রথমে কমান্ড xinput -list | grep "USB Keyboard"এবং অন্য একটি কমান্ড প্রদর্শিত হবে প্রথম প্রদর্শিত ইউএসবি কীবোর্ড আইডি নম্বরটি ধরতে এবং তারপরে এটি ইউএসবি কীবোর্ডের জন্য আমার নির্বাচিত বিন্যাসটি নীচের মত সেট করতে চূড়ান্ত কমান্ডে ব্যবহার করবে:

setxkbmap -device <NUMBER> -layout <LAYOUT>



1
@ সাদী আপনি কি ডঃ মার্টিন লুথার কিং হত্যার পরে রুটগার এবং মার্কিন পতাকা উল্টে দেওয়ার কথা উল্লেখ করছেন? পল রোবেসন: ফ্রিডমওয়েজের 182 পৃষ্ঠায়
দারুণ

@ গেস্ট 271314 অনেক ধন্যবাদ! তবে আমি অবাক হয়েছি যে আপনি এখানে কীভাবে এই প্রশ্নটিতে মন্তব্য করতে এসেছেন: ইতিহাস.stackexchange.com/questions/48704/… ;-) এটি প্রতিবাদের আরও স্মার্ট রূপ তবে আমি মনে করি না যে এটি শেষ পর্যন্ত এর মধ্যে বিবর্তিত হতে পারে আমি শুনি গল্প।
সাদি

@ সাদি আপনার প্রশ্নটি রাজনীতিতে মুছে ফেলা হয়েছে।
অতিথি 271314

উত্তর:


15

কিছুটা গবেষণার পরে, আমি একটি সমাধান পেয়েছি, যদিও আমি এখনও অন্য (সম্ভবত আরও ভাল) উত্তরগুলির জন্য উন্মুক্ত।

এখানে একটি ব্যাপার প্রারম্ভে স্ক্রিপ্ট (যা যোগ করা যেতে পারে প্রারম্ভ অ্যাপ্লিকেশন ) যা সেট হবে maually প্রবেশ usbkbd_layout পরিবর্তনশীল usbkbd ডিভাইস আইডি মধ্যে s খুঁজে পাওয়া xinput -list :

#!/bin/bash
usbkbd=`xinput -list | grep -c "USB Keyboard"`
if [[ "$usbkbd" -gt 0 ]]
then
    usbkbd_ids=`xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2`
    usbkbd_layout="tr(f)"
    for ID in $usbkbd_ids
    do
      setxkbmap -device "${ID}" -layout "${usbkbd_layout}"
    done
fi
exit 0

এই স্ক্রিপ্টটি পরিস্থিতিগুলির জন্য বেশ কার্যকর (এবং আরও স্থিতিশীল) যেখানে ব্যবহারকারী ডেস্কটপ সেটআপে ল্যাপটপ ব্যবহার শুরু করে (বহিরাগত কীবোর্ড, মাউস এবং মনিটর ইত্যাদি), এবং যখনই বাইরের ইউএসবি কীবোর্ডটি প্লাগ ইন করা হয় তখন এটি নিজেই চালানো যেতে পারে for ...

================================================== ========================

সবচেয়ে ভাল (প্রায় নিখুঁত) সমাধান - থ্রেডে মিনিমাসহেক্সিমাস এবং সংশ্লিষ্ট অবদানকারীদের ধন্যবাদ পাওয়া গেছে তিনি নীচে তাঁর মন্তব্যে উল্লেখ করা :

আমি এখন আমার ইউএসবি কীবোর্ডটি প্লাগইন করতে পারি এবং আমার ল্যাপটপে ডিফল্ট কীবোর্ড লেআউট (টিআর-কিউ) রাখার পরে স্বয়ংক্রিয়ভাবে এর আলাদা (টিআর-এফ) কীবোর্ড লেআউটটি প্রয়োগ করা যায়!

ফাইলগুলি এবং তাদের সামগ্রীগুলি এখানে এটি সম্ভব করে তুলেছে:

/etc/udev/rules.d/00-usb-keyboard.rules

ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="sadi"
ACTION=="add", RUN+="/home/sadi/.bin/usb-keyboard-in_udev"
ACTION=="remove", RUN+="/home/sadi/.bin/usb-keyboard-out_udev"

/home/sadi/.bin/usb-keyboard-in_udev

#!/bin/bash
/home/sadi/.bin/usb-keyboard-in &

/home/sadi/.bin/usb-keyboard-in

#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
usbkbd_id=`xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2 | head -1`
usbkbd_layout="tr(f)"
if [ "${usbkbd_id}" ]; then
    gsettings set org.gnome.settings-daemon.plugins.keyboard active false
    sleep 2
    setxkbmap -device "${usbkbd_id}" -layout "${usbkbd_layout}"
fi

/home/sadi/.bin/usb-keyboard-out_udev

#!/bin/bash
/home/sadi/.bin/usb-keyboard-out &

/home/sadi/.bin/usb-keyboard-out

#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
gsettings set org.gnome.settings-daemon.plugins.keyboard active true

মন্তব্য:

  1. অবশ্যই আপনার "বিন" ফোল্ডারের চারটি ফাইলের জন্য প্রয়োজনীয় অনুমতিগুলি (পঠনযোগ্য এবং কার্যকরযোগ্য) হওয়া উচিত যা উদাহরণস্বরূপ টার্মিনাল কমান্ডের সাথে প্রয়োগ করা হয়েছিল like chmod - 755 /home/sadi/.bin/usb-keyboard-*
  2. কখনও কখনও ইউএসবি কীবোর্ডটি প্লাগ ইন করার পরেও একই (ডিফল্ট) কীবোর্ড বিন্যাসটি ব্যবহার করে এবং দ্বিতীয় চেষ্টা করে নির্দিষ্ট লেআউটে স্যুইচ করে (সম্ভবত কোথাও আরও কিছুটা ঘুমের দরকার পড়ে?)
  3. ইউএসবি কীবোর্ড নির্দিষ্ট লেআউটটি লগইন স্ক্রিনে কার্যকর হয় না (যখন আপনি লগ আউট করেন)।
  4. আপনি যদি / বাড়ির জন্য পৃথক পার্টিশন ব্যবহার করেন , তবে মূল স্ক্রিপ্টগুলি মূল বিভাজনে কোথাও রাখার চেয়ে ভাল ধারণা হতে পারে, যেমন, / usr / স্থানীয় / বিন এবং সংশ্লিষ্ট ফাইলের বিষয়বস্তু সংশোধন করে কখনও কখনও udev সন্ধান করতে পারে আপনার / হোম পার্টিশনটি মাউন্ট হওয়ার আগে এই ফাইলগুলি সমস্যা তৈরি করে।

বিভিন্ন প্রয়োজনের এই সেটআপটি সংযোজন করার আদেশে:

  1. কমান্ডের আউটপুট অনুযায়ী ইউএসবি কীবোর্ড বিক্রেতার এবং পণ্য আইডিগুলি পরিবর্তন করা উচিত lsusb(উদাহরণস্বরূপ, lsusbআমার ইউএসবি কীবোর্ডের জন্য আমার আউটপুটটি এতে রয়েছে:Bus 001 Device 006: ID 09da:0260 A4 Tech Co., Ltd :)
  2. মালিক এবং সমস্ত ব্যবহারকারীর ডিরেক্টরি নামগুলি "সাদি" থেকে অন্য নামে পরিবর্তন করা উচিত
  3. Usbkbd_id- র সঠিক ডিভাইস আইডিটি ধরার জন্য সামান্য সমন্বয় প্রয়োজন হতে পারে (উদাহরণস্বরূপ, কমান্ডের আউটপুট xinput -list | grep "USB Keyboard"আমাকে দুটি লাইন দেয়; ↳ USB Keyboard id=14 [slave keyboard (3)]এবং ↳ USB Keyboard id=16 [slave keyboard (3)]; যা পরে ফিল্টার করা হয়)awk "=" ফিল্ড ডিলিমিটার হিসাবে ব্যবহার করে এবং দ্বিতীয় অংশ ক্যাপচারের মাধ্যমে ; তারপরে শুধুমাত্র কাটা কাটা প্রথম দুটি অঙ্ক এবং তারপরে প্রথম লাইনে কেবলমাত্র মানটি ব্যবহার করে)
  4. Usbkbd_layout এর মান অন্য যে কোনও বৈধ পছন্দ হতে পারে

এটি দুর্দান্ত হবে যদি অন্য কোনও অনুরূপ স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে চলতে পারে যখনই কোনও ইউএসবি কীবোর্ড প্লাগ ইন করা হয়, যেমন জিজ্ঞাসা করা হয়েছে (এখনও উত্তর দেওয়া হয়নি): জিজ্ঞাসুবন্টু
সাদি

2
আপনি যদি এই অগোছালো থ্রেডের বাইরে আরও একটি উত্তর পোস্ট করতে পারেন তবে এটি সহায়ক হতে পারে: superuser.com/questions/249064/…
ন্যানো -

1
@ মিনিমাসহেক্সিমাস ধন্যবাদ লক্ষ লক্ষ !!! আপনি নির্দেশিত থ্রেডটিতে যাওয়ার পরে এবং কিছু ট্রায়াল-অ্যান্ড-ত্রুটি করার পরে, আমি শেষ পর্যন্ত এটি বাছাই করেছি এবং উপরে এই নতুন (প্রায়) নিখুঁত হটপ্লাগিং সমাধান যুক্ত করব!
সাদি

1
কোনও কারণে আমার কীবোর্ডের দুটি আইডি রয়েছে, সুতরাং এটির পরিবর্তে IFআমাকে একটি ব্যবহার করতে হয়েছিল FOR। এটি এখন আমার জন্য কাজ করে, ধন্যবাদ! gist.github.com/zvictor/193b567c14b5b6a679fe
zVictor

1
@ সাদি আমি নিজেই একজন সাধারণ ব্যবহারকারী average আমি আমার সমাধান এখানে পোস্ট করব। হতে পারে আপনি এ থেকে কিছু ধারণা নিতে পারেন।
ক্লিনফ্রেন্ড 13

9

ওদেব নিয়মের মধ্যে একটি এক্স 11 ড্রাইভারের বিকল্প নির্দিষ্ট করতে পারে, কোনও কাস্টম স্ক্রিপ্টের প্রয়োজন নেই। উদাহরণ হিসাবে, এখানে আমার /etc/udev/rules.d/99-usb-kbd.rules এর সামগ্রীগুলি রয়েছে

ACTION=="add", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="2323", ENV{XKBMODEL}="pc104", ENV{XKBLAYOUT}="us", ENV{XKBVARIANT}="euro", ENV{XKBOPTIONS}="compose:caps"

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

  1. আপনি idVendorএবং idProductআপনার ডিভাইসটি ব্যবহার করে lsusbবা ব্যবহার করতে পারেনevtest
  2. আপনি যে কোনও লেআউট ব্যবহার করতে পারেন /usr/share/X11/xkb/symbols। একটি বৈধ বিন্যাস এবং একটি বৈধ বৈকল্পিক উভয় নির্দিষ্ট করতে মনোযোগ দিন।
  3. উল্লিখিত সিস্টেমে বিস্তৃত সেটিংসের ওভাররাইট করতে সেটিংসটির জন্য ফাইলের নামটি অবশ্যই> 64 নম্বরের সাথে শুরু হওয়া উচিত /lib/udev/rules.d/64-xorg-xkb.rules
  4. জিনোম / কেডিএ লেআউট পরিচালনা আপনার সেটিংস ওভাররাইট না করে তা নিশ্চিত করুন।

আপনার কীবোর্ড আনপ্লাগ এবং পুনরায় প্লাগ করুন এবং /var/log/Xorg.0.logসম্ভাব্য সমস্যার জন্য সন্ধান করুন । আপনি udevadm infoসেটিংসটি সঠিকভাবে প্রয়োগ করেছেন কিনা তা পরীক্ষা করেও ব্যবহার করতে পারেন ।
প্যাভেল

ইউরেকা! আপনার স্মার্ট সমাধান কাজ করার পর শুধু আমি এই কমান্ড প্রবেশ (সমস্ত জন্য একবার) বর্তমান GConf সেটিং ওভাররাইড করতে শুরু করেন: gsettings set org.gnome.settings-daemon.plugins.keyboard active false। আপনার কাছে এই ধরনের একটি নোট যুক্ত করে থাকেন, আমি পুলিশের চিহ্নিত করতে চেষ্টা করব উত্তর (পরিবর্তে যে কদাকার, দীর্ঘ এবং রাস্তা ঘুর ;-)
সাদী

এটি ব্যতিক্রমী। উবুন্টু ১৪.০৪-তে সম্ভাব্য মডেল / লেআউট / বিকল্পগুলি ইত্যাদি। এ তালিকাভুক্ত করা হয়/usr/share/X11/xkb/rules/evdev.lst
জন

2
দুর্ভাগ্যক্রমে এই সুন্দর এবং সহজ সমাধানটি উবুন্টু জিনোমে 17.04 :-(
সাদি

চেষ্টা করা লিনাক্স মিন্ট 18.2, যা উবুন্টু 16.04 এলটিএসের উপর ভিত্তি করে, উদেব সংস্করণ 229-4ubuntu19 সহ , আবার কোনও প্রভাব নেই :-( এই বিজোড় উদেব আচরণ সম্পর্কে কোনও ধারণা ???
সাদি

2

আমি এইমাত্র বিপিও টাইপমেট্রিক্স কীবোর্ডের জন্য এই সমাধানটি উন্নত করেছি (অনুকূলিতকরণযোগ্য সেরা ডিভোরাকের ফরাসি সংস্করণ) এবং একটি বিস্তৃত সিস্টেমের প্রসঙ্গে (এটি ধরে নেওয়া যায় যে আপনি মেশিনে রুট অ্যাক্সেস পেয়েছেন)। এটি কাজ করতে 3 টি ফাইল প্রয়োজন files ব্যর্থতা কী তা নির্ধারণ করতে ব্যর্থতার ক্ষেত্রে আপনি একটি লগফাইলে পরামর্শ করতে পারেন।

/etc/udev/96-usb-keyboard.rules

ATTRS{idVendor}=="1e54", ATTRS{idProduct}=="2030", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/etc/udev/bepo-typematrix-kbd.sh in"
ATTRS{idVendor}=="1e54", ATTRS{idProduct}=="2030", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/etc/udev/bepo-typematrix-kbd.sh out"

/etc/udev/bepo-typematrix-kbd.sh (একটি মধ্যবর্তী পটভূমি স্ক্রিপ্ট ব্যবহার করার জন্য একেবারে প্রয়োজনীয়)

#!/bin/bash

dir=$(dirname $0)
command=$(basename $0)
command=$dir/${command%\.sh}
arg=$1 # must be "in" or "out"
LOG=/var/log/bepo-typematrix-kbd.log

[ -x "$command" ] && $command $arg >$LOG 2>&1 &

জন্য / etc / udev দ্বারা / bepo-typematrix-kbd

#!/bin/bash
# jp dot ayanides at free.fr

MODEL="tm2030USB-102" # keyboard model
DISPLAY=':0.0'
GSETTING=/usr/bin/gsettings
XSET=/usr/bin/xset
SETXKBMAP=/usr/bin/setxkbmap
XINPUT=/usr/bin/xinput

USER=$(/usr/bin/who | /usr/bin/awk -v DIS=':0' '{if ($2==DIS) print $1}')
eval HOME=~$USER
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME

case $1 in
        'in')
                BEPO=$($XINPUT list --short | grep "TypeMatrix.com USB Keyboard" | grep keyboard | sed -e 's/^.*id=\([0-9]\+\).*/\1/g')
                if [ -n "$BEPO" ]; then
                        [ -x $GSETTING ] && $GSETTING set org.gnome.settings-daemon.plugins.keyboard active false
                        # apparently nothing to do with TDE (trinity KDE)
                        for ID in $BEPO; do # case of multiple bepo keyboard is taken into account
                                [ -x $SETXKBMAP ] && $SETXKBMAP -device $ID -model $MODEL -layout fr -variant bepo
                        done
                fi
                echo "bépo keyboard id(s) is (are) $BEPO"
                [ -x $XSET ] && $XSET -display $DISPLAY r rate 250 40
        ;;
        'out')
                # apparently nothing to do with TDE (trinity KDE)
                [ -x $GSETTING ] && $GSETTING set org.gnome.settings-daemon.plugins.keyboard active true
        ;;
        *)
                printf "wrong parameter: $1\n"
                exit 1
        ;;
esac

1

প্রচুর পরিশ্রমের পরে, আমি এখনকার জন্য এটি চালিয়ে যাচ্ছি। হয়তো আমি প্রকারের একটি সম্পূর্ণ নিবন্ধ লিখব এবং কোডটি একটি সংগ্রহস্থলের মধ্যে প্রকাশ করব, যদি এটি আগ্রহী হয়।


উদেবের জন্য একটি নতুন নিয়ম সেট আপ করুন:

 sudo gedit /etc/udev/rules.d/80-external-keyboard.rules

নিয়মটি শেল স্ক্রিপ্ট কল করার কথা যখনই দেওয়া হয় যখনই কোনও ডিভাইস বিক্রেতার এবং পণ্য আইডির সংমিশ্রণ সহ কোনও ক্রিয়াকলাপ শুরু করে।

ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="4042", RUN+="/home/phil/.bin/switch-kb-layout-wrapper.sh"

নতুন বিধি সেট যোগ করার পরে, উদেব পরিষেবাটি পুনরায় চালু করুন:

sudo service udev restart

দ্রষ্টব্য: আমি সেই ফাইলে আরও নির্দিষ্ট মেলানো নিয়ম সরবরাহ করে নির্ভরযোগ্য ফলাফল অর্জন করতে সক্ষম হইনি। সর্বাধিক উল্লেখযোগ্যভাবে, একটি ACTIONমেলানো নিয়ম যুক্ত করা কার্যকর হয়নি। আমি যতদূর বলতে পারি, স্ক্রিপ্টটি যাইহোক শুরু হয়েছিল। যুক্ত করার সময়ACTION=="add" , স্ক্রিপ্টটি তখনও ডিভাইসটি সরিয়ে নেওয়ার জন্য ডাকা হত। খুব অদ্ভুত এবং বিভ্রান্তিকর।

তবে যে পদক্ষেপটি উদেব নিয়মকে ট্রিগার করেছিল তা নীচের চিত্রের মতো কথিত স্ক্রিপ্টে উপলব্ধ হবে।


পরবর্তী, লিপি নিজেই। ভাল, বেশ না। wrapperফাইলের প্রত্যয়টি নোট করুন । এটি ইঙ্গিত দেয় যে এটি আসল স্ক্রিপ্ট নয় বরং একটি মোড়ক যা স্ক্রিপ্টটি কল করে এবং পটভূমিতে এটি কার্যকর করে যাতে উদেব তার প্রক্রিয়াটি শেষ করতে পারে।

~/.bin/switch-kb-layout-wrapper.sh:

#!/bin/sh
/home/phil/.bin/switch-kb-layout.sh "${ACTION}" &

ভেরিয়েবলটিতে ACTIONudev ক্রিয়া রয়েছে যা ডিভাইস দ্বারা ট্রিগার হয়েছিল। এটি add(ডিভাইসটি প্লাগ ইন করা হয়েছিল) এবং remove(ডিভাইসটি সরানো হয়েছিল ) এর মতো মান দেয় yield আমরা এগুলি পরে ব্যবহার করব।

~/.bin/switch-kb-layout.sh:

#!/bin/sh

sleep 1

# Some environment variables that need to be set in order to run `setxkbmap`
DISPLAY=":0.0"
HOME=/home/phil
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME

udev_action=$1
log_file="$HOME/switch-kb-layout.log"

if [ "${udev_action}" != "add" ] && [ "${udev_action}" != "remove" ]; then
    echo "Other action. Aborting." >> $log_file
    exit 1
fi

internal_kb_layout="de"
internal_kb_variant=""

external_kb_layout="us"
external_kb_variant="altgr-intl"

kb_layout=""
kb_variant=""

if [ "${udev_action}" = "add" ]; then
    kb_layout=$external_kb_layout
    kb_variant=$external_kb_variant
elif [ "${udev_action}" = "remove" ]; then
    kb_layout=$internal_kb_layout
    kb_variant=$internal_kb_variant
fi

setxkbmap -layout "${kb_layout}"
echo "set layout:" "$kb_layout" >> $log_file
if [ ! -z "${kb_variant}" ]; then
    setxkbmap -variant "${kb_variant}"
    echo "set variant:" "$kb_variant" >> $log_file
fi

HOMEভেরিয়েবল সেট করার সময় আমার ব্যবহারকারীর $(whoami)নামটি আপনার সাথে প্রতিস্থাপন করুন ( এখানে কাজ করবে না, কারণ এটি আপনার ব্যবহারকারীর মাধ্যমে নয় তবে ডাকা হবে root)।

sed -i "s/phil/YOUR_USERNAME/g" ~/.bin/switch-kb-layout.sh

পরীক্ষার উদ্দেশ্যে, আমি কিছু লাইন যুক্ত করেছি যা আমার হোম ডিরেক্টরিতে কোনও ফাইলে নির্দিষ্ট ইভেন্টগুলিতে লগ করে যা কিছু কাজ করে কিনা তা দেখতে। আপনি এগুলি নিরাপদে মুছে ফেলতে পারেন।


অবশেষে, এই স্ক্রিপ্টগুলির কার্যকর করার অনুমতি থাকা দরকার। এছাড়াও এটি উল্লেখ করা গুরুত্বপূর্ণ যে এই স্ক্রিপ্টগুলি rootব্যবহারকারী দ্বারা ডাকা হবে , সুতরাং সেখানে কী করছেন সে সম্পর্কে সতর্কতা অবলম্বন করুন।

chmod +x ~/.bin/switch-kb-layout-wrapper.sh ~/.bin/switch-kb-layout.sh 

1
ধন্যবাদ, দুর্দান্ত কাজ! আমি এটি কাজ করে। তবে, আমি যখন আমার বাহ্যিক কমান্ডটি প্লাগইন করি তখন 14 বার "ক্রিয়া যুক্ত করুন" এবং 3 বার "অন্যান্য ক্রিয়া" কেন দেখি তা রহস্য, যা আমি পরে সমাধান করার চেষ্টা করব। তবে আমি খুঁজে পেয়েছি যে setxkbmap কমান্ডে ডিভাইস আইডি যুক্ত করা আরও ভাল যা আমার সর্বশেষ অটোস্টার্টআপ স্ক্রিপ্টের মতো অভ্যন্তরীণ কীবোর্ডটি এখনও ব্যবহারযোগ্য এবং বাহ্যিক কীবোর্ড হিসাবে কার্যকর। আমি কয়েক দিন চেষ্টা করে দেখব, এবং ফিরে এসে দেখি আপনার উত্তরটি হিসাবে বিবেচনা করা যেতে পারে, সম্ভবত এখানে এবং সেখানে কিছুটা পরিবর্তন করে ;-)
সাদি

একই লগড লাইনগুলি একাধিকবার পাওয়া। কমান্ডের ডিভাইস আইডিতে ভাল ধরা।
ক্লিনফ্রেন্ড

@ সাদী এছাড়াও আমি মনে করি gsettings set org.gnome.settings-daemon.plugins.keyboard active falseযে স্ক্রিপ্টটি চালিত হওয়ায় লাইনটি যেমন ইচ্ছা তেমন কাজ করে না root। আমার পরীক্ষাগুলিতে, লাইনটির সেটিংটিতে কোনও প্রভাব পড়েনি।
ক্লিনফ্রেন্ড

আমি এই জাতীয় পরিস্থিতিতে মনে করি, কমান্ডটি gsettings set org.gnome.settings-daemon.plugins.keyboard active falseএকবার এবং সর্বদা ব্যবহারকারীর জন্য কার্যকর করা ভাল এবং পরে এই gsettings setআদেশগুলি ছাড়াই এই স্ক্রিপ্টটি ব্যবহার করা ভাল ...
সাদি

এখনও অবধি আমি দেখেছি যে আমরা এখনও এই জিনিসটি সুষ্ঠুভাবে কাজ করতে পারি না; সময়ে সময়ে কীবোর্ড লেআউটটি ইউদেব দ্বারা প্রয়োগ করা হচ্ছে না এবং আপনাকে প্লাগ অফ করে আবার প্লাগ ইন করতে হবে। আমি মনে করি আমি কিছু সময়ের জন্য আবার আমার উত্তরের শীর্ষে আমার (আপডেট করা) স্টার্টআপ স্ক্রিপ্টে ফিরে যাব, যা আমাকে আরও সুচারুভাবে পরিবেশন করে - কেবলমাত্র আমি স্টার্টআপের পরে যদি আমার বাহ্যিক কীবোর্ডটি প্লাগ করে তবে তা নিজেই চালাতে হবে। দেখে মনে হচ্ছে উদেব কিছুটা বগল যা অনেকগুলি ক্রিয়াকলাপের পুনরাবৃত্তিতেও দেখা যায় (এটি বেশ কয়েকবার মোড়ক স্ক্রিপ্টটি চালাচ্ছে, এবং অদ্ভুত উপায়ে) ...
সাদি

1

উদেব দ্বারা সম্পাদিত স্ক্রিপ্টটিতে আমার কিছু অনুমতি সমস্যা ছিল। আমি sudo সাথে নিম্নলিখিত হিসাবে সমাধান করেছি:

# Estract id of MX3 keyboard devices that present themself as "123 COM Smart Control"
    IDLIST=$(sudo -u max /usr/bin/xinput -list | grep "123 COM Smart Control" | grep keyboard | sed -e 's/^.*id=\([0-9]\+\).*/\1/g')

প্রতিটি ডিভাইসের জন্য কীবোর্ড মানচিত্র সেট করুন

    for ID in $IDLIST; do
            sudo -u max /usr/bin/setxkbmap -device $ID -layout "${kb_layout}" -display :0
    done

আমার মনে হয় আপনি যদি এটি পুরোপুরি লিখতে পারেন তবে এটি আরও কার্যকর হতে পারে। উদাহরণস্বরূপ, আপনি উপরের রেখাগুলি কোথায় রেখেছেন?
সাদি

0

আপনি এটি একটি জর্জি কনফিগারেশন ফাইলেও সংজ্ঞায়িত করতে পারেন।

এটি এই স্ট্যাকেক্সচেঞ্জ উত্তরে প্রকাশিত হয়েছে: /superuser//a/946575/437492


এটি দুর্দান্ত হবে, যদি আমি এটি কাজ পেতে পারি। তবে সর্বশেষতম এলটিএস রিলিজ, উবুন্টু 18.04 ব্যবহার করে আমি কেবলমাত্র /usr/share/X11/xorg.conf.d/ ডিরেক্টরি দেখতে পাচ্ছি যেখানে 40-libinput.conf নামের একটি ফাইল রয়েছে । সুতরাং আমি কেবল that ফাইলটিতে বাহ্যিক কীবোর্ডের জন্য একটি বিভাগ যুক্ত করেছি। ড্রাইভারের ব্যবহার libinput বা evdev এবং একটি লম্বা এবং খাটো বিক্রেতার নাম, আমি কোনো ফলাফল পাই নি। কোন ধারনা?
সাদি

@ সাদি: আপনি যদি জর্গ কনফিগারেশন সম্পর্কে কিছুটা পড়েন তবে আপনি বুঝতে পারবেন যে আপনি কেবল নতুন ফাইল যুক্ত করতে পারবেন /etc/X11/xorg.conf.d/(এটি যাওয়ার জায়গা)।
গোলার র‌্যামব্লার

ধন্যবাদ। আমি অবশ্যই বেশ কিছুটা পড়েছি এবং "/etc/X11/xorg.conf.d/30-keyboard.conf" ব্যবহার করে প্রথমে চেষ্টা করেছি। আমি আমার ভাগ্য চেষ্টা করব উপরে বর্ণিত স্ট্যাকেক্সচেঞ্জ উত্তরের অধীনে। ;-)
সাদি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.