প্রতিটি কীস্ট্রোক রেকর্ড এবং একটি ফাইল স্টোর


31

আমি প্রতি কীস্ট্রোক এবং রেকর্ড করতে প্রয়োজন দোকান ব্যবহারকারী ডিরেক্টরির মধ্যে একটি ফাইলে ~, যখন আমার অ্যাকাউন্ট ব্যবহার করে, আমি না sudoer এবং আমি (যেমন প্রোগ্রাম ইনস্টল করা যাবে না logKeys কোন ভাবেই)। টার্মিনালটি ব্যবহার করে আমি কীভাবে এটি করতে পারি?

দ্রষ্টব্য: এই প্রশ্নটি অন্য উল্লেখ করা প্রশ্নের সদৃশ নয়; এই প্রশ্নে আমি প্রতিটি কীস্ট্রোক সম্পর্কে জিজ্ঞাসা করছি, অন্যদিকে প্রশ্নকর্তা টার্মিনাল সেশনে কীস্ট্রোক সম্পর্কে জিজ্ঞাসা করেছেন।


আপনি কি কোনও প্রদত্ত টার্মিনাল ডিভাইস থেকে আসা কোনও মূল চরিত্র / বাইট, বা হোস্ট কম্পিউটারের সাথে সংযুক্ত যে কোনও কীবোর্ড থেকে কোনও কী প্রেস / রিলিজ বোঝাতে চান?
স্টাফেন চেজেলাস

প্রতিটি সংযুক্ত kryboard
Mitro

2
@ এথফিশ এটি একটি সদৃশ নয় কারণ কোনও প্রোগ্রাম চলমান না থাকায় আমি কেবল টার্মিনাল সেশনেই নয়, প্রতিটি কীস্ট্রোক ডেস্কটপেও।
মাইট্রো

1
জিইউআই (এক্স 11) সেশনে? অথবা লিনাক্স কনসোলের উপর? একটি টার্মিনাল এটির সাথে কি করতে পারে, যেহেতু আপনি টার্মিনালে টাইপ করেছেন তার কেবল একটি রেকর্ডই চান না?
গিলস 23'16

1
@AlessioMTX- এ আপনি সঠিক আছেন আমার ভুল.
ইথার ফিশ

উত্তর:


47

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সেখানে উপযুক্ত সিস্টেম থেকে একটি কমান্ড অনুলিপি করতে পারেন এবং সম্পাদন করতে পারেন।


এটি খুব ভাল, আউটপুট কী টিপুন এন 1 কী টিপুন এন 2 কী রিলিজ .. কোনও সংখ্যার ইন্সটাড লেটার দেখানোর উপায় আছে কি? এবং কিভাবে একটি ফাইল "লগ" সংরক্ষণ করবেন? পিএস: দুর্ভাগ্যক্রমে আমার পিসিতে এই প্রোগ্রামটি ডিফল্টরূপে ইনস্টল করা নেই এবং আমি এই মুহুর্তে কিছু ইনস্টল করতে পারি না, আমি অন্য পিসিতে চেষ্টা করেছি।
মাইট্রো

তবুও আমি 2 বা "
মিত্রো

2
@ অ্যালাসিওএমটিএক্স, শিফট এবং ক্যাপস্লকগুলি সহ সমস্ত কী প্রেসগুলি লগ করা হবে। কী-কোডগুলির পরিবর্তে কী লেবেল / চিহ্নগুলির জন্য আমার সম্পাদনাটি দেখুন See
স্টাফেন চেজেলাস

1
@ অ্যালেসিওএমটিএক্স, আপনার প্রয়োজন xinput 1.6.1বা এর জন্য আরও নতুন --root। এক্স ইউটিলিটিগুলি xorg.freedesktop.org/releases/individual/app থেকে পৃথকভাবে ডাউনলোড করা যায় । আপনি যদি উত্স থেকে সংকলন করতে না চান। ডেবিয়ান টি xinput 1.6.1 লিনাক্স বা kfreebsd জন্য বিভিন্ন আর্কিটেকচারের জন্য।
স্টাফেন চেজেলাস

1
@ অ্যালেসিওএমটিএক্স, এটি এক্স সার্ভারের ইভেন্টগুলির জন্য। xmodmapকমপক্ষে 1987 সাল থেকে রেফারেন্স এক্স প্রয়োগে রয়েছে। আমরা এখানে কোন সিস্টেমের কথা বলছি? এটি কি xmodmapআপনার $PATH( /usr/dt/binবা অন্য?) তে নেই?
স্টাফেন চেজেলাস

3

আপনি scriptকমান্ড ব্যবহার বিবেচনা করেছেন ?


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