PDA

View Full Version : تبدیل کد اسکن به کد اسکی



ghasem1990
شنبه 20 آذر 1389, 18:15 عصر
سلام.

الگوریتم تبدیل کد اسکن به کد اسکی؟
اگه کدش رو به زبان اسمبلی داشته باشید که چه بهتر.

تشکر.

BobiFX
سه شنبه 23 آذر 1389, 08:02 صبح
سلام
جدول اسکن کد وجود داره که برای هر نوع keyboard با هم فرق میکنه. انجا رو ببین:
http://www.quadibloc.com/comp/scan.htm

ولی به نطرم باید از WinAPI استفاده کنی. توی user32 چندتا تابع برای این کار هست که Layout صفحه کلید و اسکی کد کلید رو مشخص میکنه.
GetKeyNameText
GetKeyboardLayout
GetKeyboardLayoutName

من تا حالا مبدل اسمبلی برای این کار ندیدم.

خوش باشین

tdkhakpur
سه شنبه 23 آذر 1389, 11:50 صبح
الگوریتم تبدیل کد اسکن به کد اسکی؟
اگه کدش رو به زبان اسمبلی داشته باشید که چه بهتر

کد اسکن و اسکی هر کدوم جای خودشون رو دارند و معنی نداره که کد اسکن رو به اسکی تبدیل کنید.
ولی در کل خواسته نرم افزاری شما چی هست؟
اگر میخواهید بدانید که کدوم کلید کد اسکن داره و کدوم فقط میتونه اسکی باشه میتونید از وقفه 16h و تابع 0 استفاده کنید.

xman_1365_x
سه شنبه 23 آذر 1389, 23:03 عصر
کد اسکن و اسکی هر کدوم جای خودشون رو دارند و معنی نداره که کد اسکن رو به اسکی تبدیل کنید.

آقاي خاكپور جسارت نباشه
فكر كنم فقط جنبه تحقيق داشته تا ثابت شه ميشه از اسكن كد هم به اسكي رسيد يا مثلا استاندارد دلخواه گذاشت!


الگوریتم تبدیل کد اسکن به کد اسکی؟

شدني هست چون اسكن كد در ah قرار ميگيره



mov ah, 00h
int 16h

mov dl,ah
mov ah,02h
int 21h

وقتي نگاه كنيد متوجه ميشيد براي حروف كوچك و بزرگ عددي يكسان هست كه باز براي اين هم بايد قبلش متوجه بشي كليد شيفت يا كپس لاك فشار داده شده يا خير اگر فشرده شده حروف بزرگ نمايش داده شود در غير اينصورت كوچك
ضمنا جدول اسكن كد و اسكي رو دوست عزيز BobiFX لينك گذاشتن ميبينيد!
http://www.quadibloc.com/comp/scan.htm
پس كلا بايد طبق اون جدول اين كار رو انجام بديد چون حروف يا اعداد پشت سر هم قرار ندارد نميشه مثلا با يك عدد جمع كرد براي همه اعداد جواب بدهد
اين اسكن كد براي اين خوبه شما كاراكتر دلخواه رو نمايش بدي يا استاندارد هارو تغيير بدي
ضمنا آقاي ghasem1990 (http://barnamenevis.org/member.php?168556-ghasem1990) من در تاپيك قبلي كه گذاشتين لينك كار با تمام وقفه هاي كيبورد رو گذاشتم كه انگار نگاه نكردين

tdkhakpur
سه شنبه 23 آذر 1389, 23:50 عصر
وقتي نگاه كنيد متوجه ميشيد براي حروف كوچك و بزرگ عددي يكسان هست كه باز براي اين هم بايد قبلش متوجه بشي كليد شيفت يا كپس لاك فشار داده شده يا خير اگر فشرده شده حروف بزرگ نمايش داده شود در غير اينصورت كوچك

اونوقت وقتی کلیدهای جهت نما فشار داده بشه از کجا معلوم بشه که کلید جهت نماست؟
در حالت کلی برای اینکه تشخیص داده بشه که کلید توسعه یافته (مانند جهت نما ها) هست باید مقدار al را که در نتیجه استفاده از وقفه 16h و تابع 0 بدست می آید بررسی کنید اگر 0 باشد اونوقت ah حاوی کد اسکن هست.

xman_1365_x
چهارشنبه 24 آذر 1389, 10:41 صبح
با سلام

اونوقت وقتی کلیدهای جهت نما فشار داده بشه از کجا معلوم بشه که کلید جهت نماست؟
در حالت کلی برای اینکه تشخیص داده بشه که کلید توسعه یافته (مانند جهت نما ها) هست باید مقدار al را که در نتیجه استفاده از وقفه 16h و تابع 0 بدست می آید بررسی کنید اگر 0 باشد اونوقت ah حاوی کد اسکن هست.
جناب خاكپور
ah هميشه داراي اسكن كد هست كه متمايز هست براي هر كليد اينكه نتيجه اسكي اين وقفه در al قرار ميگيره درست و چون اين كليد ها كنترلي هست مسلما اسكي مساوي با صفر هست اما شما به ah توجه نكرديد چون در ah به ازاي هر كليد اسكن كدي وجود دارد.
براي كليد جهت نما در سيستم من(IBM)
چپ 4B
راست 4D
بالا 48
پايين 50