কীবোর্ড পরিবর্তনকারীদের জোর করে কীভাবে ব্যবহার করা যায়


18

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

এগুলি পুনরায় সেট করবেন কীভাবে? এখনই, আমি যা করতে পারি তা হ'ল কম্পিউটারটি রিবুট করা, তবে এটি বরং বিব্রতকর সমাধান।

আমি চাই এমন কিছু প্রোগ্রাম যা কৃত্রিমভাবে সমস্ত সম্ভাব্য কীবোর্ড সংশোধককে "আলতো চাপতে" পারে, সুতরাং তাদের স্থিতি পুনরায় সেট করা হবে। এটা করা যায়?

আমি পুদিনা 14 (উবুন্টু 12.10 কোয়ান্টালের একটি ক্লোন) ব্যবহার করি।

উত্তর:


22

আপনি xdotoolইনস্টল করা থাকলে, আপনি কেবল সহজভাবে ব্যবহার করতে পারেন

xdotool keyup ISO_Level3_Shift

যা এক্স সার্ভারে একটি মূল রিলিজ (অবশ্যই ISO_Level3_Shift জন্য) প্রেরণ প্রেরণ করে।

তবে আপনি সমস্ত প্রোগ্রাম পরিবর্তনকারী কীগুলি প্রকাশের জন্য একটি প্রোগ্রাম চেয়েছিলেন। কেউ সহজেই তা অর্জন করতে এক্সডটুল ব্যবহার করতে পারে, যদি না হয় তবে কী কী সংশোধনকারী কীওয়ার্ডগুলি সংজ্ঞায়িত করা হয়েছে তা আমার কোনও ধারণা নেই। এগুলি সনাক্ত করার একটি সম্ভাব্য পদ্ধতি হ'ল পার্স করা keysymdef.h:

grep '^#define' /usr/include/X11/keysymdef.h | sed -r 's/^#define XK_(\S*?).*$/\1/;' | grep -E '_(L|R|Level.*)$'

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

সংযোজন | xargs xdotool keyupউপরে পাইপলাইন ঐ সমস্ত কী ছেড়ে দেব। ' আমার সিস্টেমে এটি নিম্নলিখিত কমান্ডটি কার্যকর করে:

xdotool keyup Shift_L Shift_R Control_L Control_R Meta_L Meta_R Alt_L Alt_R Super_L Super_R Hyper_L Hyper_R ISO_Level2_Latch ISO_Level3_Shift ISO_Level3_Latch ISO_Level3_Lock ISO_Level5_Shift ISO_Level5_Latch ISO_Level5_Lock

1
গ্রেট! আমি এটিও পেয়েছি যে আনসাইনড কীগুলি কী-কোডের মাধ্যমে উদ্বোধন করা যায়, যেমন xdotool keyup 204
অ্যাডাম স্পায়ারস

1
@ অ্যাডাম স্পায়ার্স আমাকে আটকে রেখেছে my Xmodmap কী কোডগুলি দেখার জন্য, দেখুন: DISAPLAY=:1 xmodmap -pk | grep -iP 'alt|meta|super|hyper'। আপনাকে ডিসপ্লে নম্বরটি আপনার ভাঙা ভিএনসি প্রদর্শন সংখ্যায় পরিবর্তন করতে হবে।
22.17 এ শ্রিক করা

আমি মনে করি আপনি DISPLAY=:1উপরের মন্তব্যে বোঝাতে চেয়েছিলেন ।
অ্যাডাম স্পায়ার্স

1
xdotool/ / - এর --clearmodifiersজন্য একটি বিকল্প সমর্থন করে যখন সম্ভবত এই উত্তরটি লেখা হয়েছিল? আমি আশা করি এটি কার্যকর হবে। ( নির্দিষ্ট করার জন্য একটি কী প্রয়োজন; "স্থান" নির্বিচারে is)keykeydownkeyupxdotool keyup --clearmodifiers spacexdotool keyup
ররি ও'কেনে

6

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

আমি যে সমাধানটি আবিষ্কার করেছি, যা এখনও অবধি ব্যর্থ হয়ে কাজ করেছে, তা হ'ল ব্যবহার করা x11vnc। বিশেষত, আমি নিম্নলিখিত কমান্ডটি ব্যবহার করি:

x11vnc -deny_all -clear_keys -timeout 1

-clear_keysএখানে মূল অংশ। এটি x11vncযখন চাপবে তখন সমস্ত চাপানো কীগুলি সাফ করার জন্য নির্দেশ দেয়। সংযোগ ছাড়াই 1 সেকেন্ড পরে প্রস্থান করতে -timeout 1বলে x11vnc, এবং -deny_allনিশ্চিত করে যে কেউ উইন্ডোটির সময় সংযোগ করতে পারে না।

কখনও কখনও আটকে থাকা কীটি ডেস্কটপের সাথে কোনও অর্থবোধক মিথস্ক্রিয়াকে বাধা দেয়, সেক্ষেত্রে আমি এসএসএসের মাধ্যমে নিম্নলিখিতটি সম্পাদন করব:

env DISPLAY=:0 XAUTHORITY=/home/[username]/.Xauthority x11vnc -deny_all -clear_keys -timeout 1

4

আমি কোনও যুক্তি ছাড়াই "setxkbmap" ব্যবহার করি। মনে হচ্ছে এটি কীবোর্ডটি পুনরায় সেট করে। আমার প্যানেলে আমার একটি "শর্টকাট" রয়েছে যা আমি যখন মাউসটি ব্যবহার করতে পারি তখন কীবোর্ডটি সম্পূর্ণরূপে অক্ষম হয়।


0

x11vncউত্তর প্রতিভাশালী, কিন্তু ইনস্টল করার যদি x11vncক্লিয়ারিং সংশোধনকারীদের শুধু Overkill মত মনে হয়, এখানে ব্যাশ সমাধান ব্যবহারসমূহ এর xmodmap -pm'র আউটপুট সমস্ত জানা সংশোধনকারীদের করার জন্য একটি keyup জারি করার। হেক্স থেকে দশমিক কীকোডে রূপান্তর বাশের পাটিগণিতের বিস্তারের উপর নির্ভর করে।

for KEYCODE in $(xmodmap -pm | grep -Pio '(?<=\b0x)[0-9a-f]+\b'); do

    echo -e "xdotool keyup $((16#$KEYCODE))\n" >&2
    xdotool keyup $((16#$KEYCODE))

done

আপনি যদি এটি কোনও কীবোর্ড শর্টকাট থেকে চালাচ্ছেন sleep 1তবে শুরুতে যুক্ত করা (শারীরিক কীগুলি প্রকাশের সময় দেওয়ার জন্য) ভালভাবে পরামর্শ দেওয়া হবে। echoStderr হবে অবশ্যই, প্রয়োজন হয় না; আমি ঠিক ~/.xsession-errorsএই জাতীয় ফলাফলের জন্য আমার ফাইল চেক করতে সক্ষম হতে চাই।

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