سلام.
الگوریتم تبدیل کد اسکن به کد اسکی؟
اگه کدش رو به زبان اسمبلی داشته باشید که چه بهتر.
تشکر.
سلام.
الگوریتم تبدیل کد اسکن به کد اسکی؟
اگه کدش رو به زبان اسمبلی داشته باشید که چه بهتر.
تشکر.
سلام
جدول اسکن کد وجود داره که برای هر نوع keyboard با هم فرق میکنه. انجا رو ببین:
http://www.quadibloc.com/comp/scan.htm
ولی به نطرم باید از WinAPI استفاده کنی. توی user32 چندتا تابع برای این کار هست که Layout صفحه کلید و اسکی کد کلید رو مشخص میکنه.
GetKeyNameText
GetKeyboardLayout
GetKeyboardLayoutName
من تا حالا مبدل اسمبلی برای این کار ندیدم.
خوش باشین
کد اسکن و اسکی هر کدوم جای خودشون رو دارند و معنی نداره که کد اسکن رو به اسکی تبدیل کنید.الگوریتم تبدیل کد اسکن به کد اسکی؟
اگه کدش رو به زبان اسمبلی داشته باشید که چه بهتر
ولی در کل خواسته نرم افزاری شما چی هست؟
اگر میخواهید بدانید که کدوم کلید کد اسکن داره و کدوم فقط میتونه اسکی باشه میتونید از وقفه 16h و تابع 0 استفاده کنید.
آقاي خاكپور جسارت نباشهکد اسکن و اسکی هر کدوم جای خودشون رو دارند و معنی نداره که کد اسکن رو به اسکی تبدیل کنید.
فكر كنم فقط جنبه تحقيق داشته تا ثابت شه ميشه از اسكن كد هم به اسكي رسيد يا مثلا استاندارد دلخواه گذاشت!
شدني هست چون اسكن كد در ah قرار ميگيرهالگوریتم تبدیل کد اسکن به کد اسکی؟
mov ah, 00h
int 16h
mov dl,ah
mov ah,02h
int 21h
وقتي نگاه كنيد متوجه ميشيد براي حروف كوچك و بزرگ عددي يكسان هست كه باز براي اين هم بايد قبلش متوجه بشي كليد شيفت يا كپس لاك فشار داده شده يا خير اگر فشرده شده حروف بزرگ نمايش داده شود در غير اينصورت كوچك
ضمنا جدول اسكن كد و اسكي رو دوست عزيز BobiFX لينك گذاشتن ميبينيد!
http://www.quadibloc.com/comp/scan.htm
پس كلا بايد طبق اون جدول اين كار رو انجام بديد چون حروف يا اعداد پشت سر هم قرار ندارد نميشه مثلا با يك عدد جمع كرد براي همه اعداد جواب بدهد
اين اسكن كد براي اين خوبه شما كاراكتر دلخواه رو نمايش بدي يا استاندارد هارو تغيير بدي
ضمنا آقاي ghasem1990 من در تاپيك قبلي كه گذاشتين لينك كار با تمام وقفه هاي كيبورد رو گذاشتم كه انگار نگاه نكردين
اونوقت وقتی کلیدهای جهت نما فشار داده بشه از کجا معلوم بشه که کلید جهت نماست؟وقتي نگاه كنيد متوجه ميشيد براي حروف كوچك و بزرگ عددي يكسان هست كه باز براي اين هم بايد قبلش متوجه بشي كليد شيفت يا كپس لاك فشار داده شده يا خير اگر فشرده شده حروف بزرگ نمايش داده شود در غير اينصورت كوچك
در حالت کلی برای اینکه تشخیص داده بشه که کلید توسعه یافته (مانند جهت نما ها) هست باید مقدار al را که در نتیجه استفاده از وقفه 16h و تابع 0 بدست می آید بررسی کنید اگر 0 باشد اونوقت ah حاوی کد اسکن هست.
با سلام
جناب خاكپوراونوقت وقتی کلیدهای جهت نما فشار داده بشه از کجا معلوم بشه که کلید جهت نماست؟
در حالت کلی برای اینکه تشخیص داده بشه که کلید توسعه یافته (مانند جهت نما ها) هست باید مقدار al را که در نتیجه استفاده از وقفه 16h و تابع 0 بدست می آید بررسی کنید اگر 0 باشد اونوقت ah حاوی کد اسکن هست.
ah هميشه داراي اسكن كد هست كه متمايز هست براي هر كليد اينكه نتيجه اسكي اين وقفه در al قرار ميگيره درست و چون اين كليد ها كنترلي هست مسلما اسكي مساوي با صفر هست اما شما به ah توجه نكرديد چون در ah به ازاي هر كليد اسكن كدي وجود دارد.
براي كليد جهت نما در سيستم من(IBM)
چپ 4B
راست 4D
بالا 48
پايين 50