xinput testএক্স সার্ভারে সমস্ত কীবোর্ড ইভেন্টগুলি প্রতিবেদন করতে পারে। একটি জিএনইউ সিস্টেমে:
xinput list |
grep -Po 'id=\K\d+(?=.*slave\s*keyboard)' |
xargs -P0 -n1 xinput test
আপনি যদি কী কোডগুলি থেকে মূল নামগুলি পেতে চান, আপনি সেই আউটপুটটির সাথে পোস্ট-প্রক্রিয়া করতে পারেন:
awk 'BEGIN{while (("xmodmap -pke" | getline) > 0) k[$2]=$4}
{print $0 "[" k[$NF] "]"}'
যোগ > file.logএকটি লগ ফাইলে দোকান থেকে। অথবা | tee file.logউভয় লগইন এবং এটি দেখতে।
xinputএক্স সার্ভারের জিনপুট এক্সটেনশন অনুসন্ধান করে। এটি আপনি যেমন একটি স্ট্যান্ডার্ড হিসাবে পেতে যাচ্ছেন ততই কাছাকাছি (এক্স ইউটিলিটিগুলি কভার করে এমন কোনও মান সম্পর্কে আমি অবগত নই) বা এটি করতে সাধারণ কমান্ড। এটিরও মূল সুবিধার দরকার নেই।
যদি এক্স সার্ভার এবং এক্সপুট এক্সটেনশনের এক্সিনপুট সমর্থন সংস্করণ 2, আপনি এর test-xi2পরিবর্তে testআরও তথ্য সরবরাহ করতে পারেন তবে বিশেষত সংশোধনকারীগুলির স্থিতি (শিফট, সিটিআরএল, ওল্ট ...)। উদাহরণ:
$ xinput test-xi2 --root
EVENT type 2 (KeyPress)
device: 11 (11)
detail: 54
flags:
root: 846.80/451.83
event: 846.80/451.83
buttons:
modifiers: locked 0 latched 0 base 0x4 effective: 0x4
group: locked 0 latched 0 base 0 effective: 0
valuators:
windows: root 0x26c event 0x26c child 0x10006e6
আপনি আবার detailসহায়তার সাহায্যে কী- কোড (ইন ) কিসিম-এ xmodmap -pkeএবং effectiveমডিফায়ার বিটমাস্কের সাহায্যে আরও সহায়ক কিছুতে অনুবাদ করতে পারেন xmodmap -pm। এই ক্ষেত্রে:
xinput test-xi2 --root | perl -lne '
BEGIN{$"=",";
open X, "-|", "xmodmap -pke";
while (<X>) {$k{$1}=$2 if /^keycode\s+(\d+) = (\w+)/}
open X, "-|", "xmodmap -pm"; <X>;<X>;
while (<X>) {if (/^(\w+)\s+(\w*)/){($k=$2)=~s/_[LR]$//;$m[$i++]=$k||$1}}
close X;
}
if (/^EVENT type.*\((.*)\)/) {$e = $1}
elsif (/detail: (\d+)/) {$d=$1}
elsif (/modifiers:.*effective: (.*)/) {
$m=$1;
if ($e =~ /^Key/){
my @mods;
for (0..$#m) {push @mods, $m[$_] if (hex($m) & (1<<$_))}
print "$e $d [$k{$d}] $m [@mods]"
}
}'
আউটপুট হবে:
KeyPress 24 [q] 0x19 [Shift,Alt,Num_Lock]
যখন আমি নাম-লক চালু থাকে তখন আমি Shift + Alt + q টিপুন।
নোট করুন যে কোনও প্রোগ্রাম ইনস্টল করার জন্য আপনার কাছে সুপার-ব্যবহারকারীর অধিকারের দরকার নেই । আপনার যদি ফাইল সিস্টেমে যেখানে এক্সিকিউট করার অনুমতি দেওয়া হয় (যেখানে আপনার হোম ডিরেক্টরি /tmp,, /var/tmp...) এর লেখার অ্যাক্সেস থাকে তবে আপনি xinputসেখানে উপযুক্ত সিস্টেম থেকে একটি কমান্ড অনুলিপি করতে পারেন এবং সম্পাদন করতে পারেন।