انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: sajed68 در 30 تیر 1394، 10:13 ق‌ظ

عنوان: دزدیدن سیگنال خروجی صفحه کلید!(حل شد)
ارسال شده توسط: sajed68 در 30 تیر 1394، 10:13 ق‌ظ
سلام به همگی
اول بگم نمیخوام کار ترسناکی انجام بدم! فقط میخوام با پایتون (نمیدونم چرا ولی ترجیحا ۲) یک برنامه بنویسم که مسیر کلیدها رو عوض کنه. مثلا اگه کلید ۵ ماشین حسابی رو زدم چیزی ننویسه یا یک حرف دیگه بجاش بنویسه، ویا اشاره گر جابجا بشه. کلا دنبال چیزی شبیه :
https://pypi.python.org/pypi/PyUserInput/0.1.9 (https://pypi.python.org/pypi/PyUserInput/0.1.9)
هستم. ولی مشکلش اینه که نمیتونم بهش بگم وقتی وقفه صفحه کلید اتفاق افتاد، فقط به من خبر بده چیزی ننویس ( به قول خودم سیگنال صفحه کلید رو بدزده!).
این رو هم بگم که میخوام این وقفه روی کل صفحه اعمال بشه نه روی پنجره ای مثل tkinter یا امثال این( یعنی وقتی برنامه اجرا هست، هرجایی که کاربر کلید رو فشار میده برنامه بتونه کلیدها رو تغییر مسیر بده)
عنوان: پاسخ : دزدیدن سیگنال خروجی صفحه کلید!
ارسال شده توسط: { AliReaza } در 30 تیر 1394، 05:20 ب‌ظ
سلام به همگی
اول بگم نمیخوام کار ترسناکی انجام بدم! فقط میخوام با پایتون (نمیدونم چرا ولی ترجیحا ۲) یک برنامه بنویسم که مسیر کلیدها رو عوض کنه. مثلا اگه کلید ۵ ماشین حسابی رو زدم چیزی ننویسه یا یک حرف دیگه بجاش بنویسه، ویا اشاره گر جابجا بشه. کلا دنبال چیزی شبیه :
https://pypi.python.org/pypi/PyUserInput/0.1.9 (https://pypi.python.org/pypi/PyUserInput/0.1.9)
هستم. ولی مشکلش اینه که نمیتونم بهش بگم وقتی وقفه صفحه کلید اتفاق افتاد، فقط به من خبر بده چیزی ننویس ( به قول خودم سیگنال صفحه کلید رو بدزده!).
این رو هم بگم که میخوام این وقفه روی کل صفحه اعمال بشه نه روی پنجره ای مثل tkinter یا امثال این( یعنی وقتی برنامه اجرا هست، هرجایی که کاربر کلید رو فشار میده برنامه بتونه کلیدها رو تغییر مسیر بده)
قبلا یکی از دوستان بنده همچین کاری انجام داده بود.

یادمه که همین مشکل شما را داشت و فقط می تونست در برنامه از روش فوق استفاده کنه. در حالی که مثل شما می خواست در همه جا کار کنه.

بعد چند وقت بهم گفت که باید کاری میکرد که برنامه در اولیت درخواست های ورودی قرار داشته باشه، و با توجه به دستور دریافتی خروجی را تنظیم کرد. و مثالی برام گفت، مشابه مثال شما.

تا اونجایی که من میدونم، روش کار به این شکل میشه که شما باید یک برنامه KeyBoard درست کنید و آنرا جایگزین برنامه فعلی کنید.

البته دوستان دیگر در این مورد اطلاعات بیشتری دارند. من فقط اطلاعات خودم را در میان گذاشتم. امیدارم اطلاعاتم اشتباه نباشه.
عنوان: پاسخ : دزدیدن سیگنال خروجی صفحه کلید!
ارسال شده توسط: alireza.crs در 30 تیر 1394، 08:00 ب‌ظ
میتونی keymap خودتو بسازی و کاری کنی کاربر از اون استفاده کنه
https://wiki.archlinux.org/index.php/Keyboard_configuration_in_console
عنوان: پاسخ : دزدیدن سیگنال خروجی صفحه کلید!
ارسال شده توسط: sajed68 در 30 تیر 1394، 09:38 ب‌ظ
نقل‌قول
میتونی keymap خودتو بسازی و کاری کنی کاربر از اون استفاده کنه
ممنون البته پاسخ :
نقل‌قول
تا اونجایی که من میدونم، روش کار به این شکل میشه که شما باید یک برنامه KeyBoard درست کنید و آنرا جایگزین برنامه فعلی کنید.
رو که خوندم داشتم به یه همچین چیزی فکر میکردم!
حالا باید ببینم چقدر این کار میتونه پیچیده باشه.
به هر حال ممنونم از شما دوستان
عنوان: پاسخ : دزدیدن سیگنال خروجی صفحه کلید!(حل شد)
ارسال شده توسط: sajed68 در 01 امرداد 1394، 03:43 ب‌ظ
ممنون از دوستان «alireza.crs» و « { AliReaza }» که راهنمایی مفیدی کردن.
جایی خوندم که گفت به تنهایی با پایتون نمیشه این کار رو کرد، البته درستی حرفش رو نمیدونم یعنی علمم اونقدری نیست که بتونم فعلا نقضش کنم! گفت باید یک چیزی شبیه درایور بنویسم!
خب من هم که کار سخت بلد نیستم رفتم سراغ دستکاری نقشه صفحه کلید، و یک نقشه واسه خودم طراحی کردم.
واسه کسانی که مثل خودم نمیدونن باید چکار کنن:
تو مسیر:
/usr/share/X11/xkb/symbolsنقشه ها اونجا هست. من از keypad میخواستم استفاده دیگه ای بکنم، خب اون رو ویرایش کردم.( فقط حتما قبل از ویرایش، پشتیبان یادتون نره- چون من یک بار خرابکاری کردم، صفحه کلید رو از کار انداختم :) ;D)
بعد یک نگاه به مسیر زیر بندازید:
/var/lib/xkbاونجا هرچی فایل با پسوند .xkm هست رو پاک کنید و دستور زیر رو بزنید:
sudo dpkg-reconfigure xkb-dataو در نهایت راه اندازی مجدد.
---------------------------------------------------------
چنانچه خرابکاری شد:
Recovery mode> chrootبعد نسخه پشتیبانتون رو جایگزین کنید و دوباره دستور زیر رو وارد کنید:
dpkg-reconfigure xkb-data
عنوان: پاسخ : دزدیدن سیگنال خروجی صفحه کلید!(حل شد)
ارسال شده توسط: sajjadsec در 02 امرداد 1394، 10:39 ق‌ظ
ممنون از دوستان «alireza.crs» و « { AliReaza }» که راهنمایی مفیدی کردن.
جایی خوندم که گفت به تنهایی با پایتون نمیشه این کار رو کرد، البته درستی حرفش رو نمیدونم یعنی علمم اونقدری نیست که بتونم فعلا نقضش کنم! گفت باید یک چیزی شبیه درایور بنویسم!
خب من هم که کار سخت بلد نیستم رفتم سراغ دستکاری نقشه صفحه کلید، و یک نقشه واسه خودم طراحی کردم.
واسه کسانی که مثل خودم نمیدونن باید چکار کنن:
تو مسیر:
/usr/share/X11/xkb/symbolsنقشه ها اونجا هست. من از keypad میخواستم استفاده دیگه ای بکنم، خب اون رو ویرایش کردم.( فقط حتما قبل از ویرایش، پشتیبان یادتون نره- چون من یک بار خرابکاری کردم، صفحه کلید رو از کار انداختم :) ;D)
بعد یک نگاه به مسیر زیر بندازید:
/var/lib/xkbاونجا هرچی فایل با پسوند .xkm هست رو پاک کنید و دستور زیر رو بزنید:
sudo dpkg-reconfigure xkb-dataو در نهایت راه اندازی مجدد.
---------------------------------------------------------
چنانچه خرابکاری شد:
Recovery mode> chrootبعد نسخه پشتیبانتون رو جایگزین کنید و دوباره دستور زیر رو وارد کنید:
dpkg-reconfigure xkb-data
خوب من پایتون بلد نیستم اما این چیزی که شما گفتی یه cd و یه دستور دیگه هست که خوب توی هر زبانی میشه ازش استفاده کرد مثلا با system() توی پرل میشه اجراش کرد و مطئنا میشه توی پایتون هم اینکار رو کرد...
عنوان: پاسخ : دزدیدن سیگنال خروجی صفحه کلید!(حل شد)
ارسال شده توسط: sajed68 در 02 امرداد 1394، 12:48 ب‌ظ
نقل‌قول
خوب من پایتون بلد نیستم اما این چیزی که شما گفتی یه cd و یه دستور دیگه هست که خوب توی هر زبانی میشه ازش استفاده کرد مثلا با system() توی پرل میشه اجراش کرد و مطئنا میشه توی پایتون هم اینکار رو کرد...
بله این تغییرات مربوط به سیستم عامل میشه نه پایتون، برا همین قبلش یک پشتیبان از اون پرونده هایی که میخواستم تغییر بدم،گرفتم، یعنی اگه من پیشفرض keypadرو تغییر دادم توی کل برنامه ها ( حتی صفحه login) هم این این تغییرات هست.
البته این رو هم گفتم که :
نقل‌قول
جایی خوندم که گفت به تنهایی با پایتون نمیشه این کار رو کرد
و همینطور :
نقل‌قول
خب من هم که کار سخت بلد نیستم رفتم سراغ دستکاری نقشه صفحه کلید، و یک نقشه واسه خودم طراحی کردم.
و تغییر نقشه صفحه کلید هم ربط مستقیمی به پایتون نداره