কীভাবে একজন Cmdজাভাস্ক্রিপ্টের মাধ্যমে ম্যাকের চাবিটি ক্যাপচার করতে পারে ?
কীভাবে একজন Cmdজাভাস্ক্রিপ্টের মাধ্যমে ম্যাকের চাবিটি ক্যাপচার করতে পারে ?
উত্তর:
সম্পাদনা করুন: 2019 পর্যন্ত e.metaKey
হয় MDN অনুযায়ী সমস্ত প্রধান ব্রাউজারে সমর্থিত ।
মনে রাখবেন উইন্ডোজে, ⊞ Windowsকীটি "মেটা" কী হিসাবে বিবেচিত হলেও , এটি ব্রাউজারগুলির দ্বারা ক্যাপচার করা হবে না।
এটি কেবলমাত্র ম্যাকস / কিবোর্ডের কমান্ড কী-এর জন্য।
Shift/ Alt/ এর বিপরীতে Ctrl, Cmd("অ্যাপল") কীটি কোনও সংশোধক কী হিসাবে বিবেচনা করা হয় না, পরিবর্তে, যখন একটি কী টিপানো হয় এবং তারপরে অবসন্ন হয় তখন আপনার keydown
/ keyup
এবং রেকর্ড করা উচিত event.keyCode
।
দুর্ভাগ্যক্রমে, এই মূল কোডগুলি ব্রাউজার-নির্ভর:
224
17
91
(বাম কমান্ড) বা 93
(ডান কমান্ড)আপনি জাভাস্ক্রিপ্ট ম্যাডনেস নিবন্ধটি পড়তে আগ্রহী হতে পারেন : কীবোর্ড ইভেন্টগুলি , যেখান থেকে আমি সেই জ্ঞানটি শিখেছি।
keydown
ইভেন্টগুলিতে কাজ করে , না keyup
।
আপনি event.metaKey
কীডাউন ইভেন্টগুলির সাথে কাজ করে থাকলে আপনি ইভেন্টটির বৈশিষ্ট্যটিও দেখতে পারেন। আমার জন্য আশ্চর্যজনকভাবে কাজ করেছেন! আপনি এটি এখানে চেষ্টা করতে পারেন ।
.metaKey
প্রকৃতপক্ষে সর্বশেষতম ফায়ারফক্স, সাফারি এবং অপেরাতে কাজ করে। ক্রোমে, .metaKey
নিয়ন্ত্রণে ট্রিগার (কমান্ড নয়)।
keydown
জন্য নয় । keyup
keypress
আমি দেখেছি যে সাফারি (7.0: 9537.71) এর সর্বশেষ সংস্করণে যদি কমান্ড কীটি অন্য কোনও কী এর সাথে একত্রে চাপানো হয় তবে আপনি কমান্ড কীটি সনাক্ত করতে পারেন। উদাহরণস্বরূপ, আপনি যদি ⌘ + x: সনাক্ত করতে চান, আপনি এক্স কীটি সনাক্ত করতে পারেন এবং ইভেন্ট.মেটাকি সত্যতে সেট করা আছে কিনা তা পরীক্ষা করতে পারেন। উদাহরণ স্বরূপ:
var key = event.keyCode || event.charCode || 0;
console.log(key, event.metaKey);
নিজের নিজের উপর টিপানোর সময়, এটি আউটপুট হবে 120, false
। যখন ⌘ + x টিপুন, এটি আউটপুট হবে120, true
এটি কেবল সাফারিতে কাজ করে বলে মনে হচ্ছে - ক্রোম নয়
ইলির ডেটা বেজায় আমি ম্যাকের মডিফায়ার কীগুলি সমর্থন করার জন্য একটি ভ্যানিলা জেএস লাইব্রেরি লিখেছি: https://github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
এটি কেবল এটির মতো ব্যবহার করুন, যেমন:
document.onclick = function (event) {
if (event.shiftKey || macKeys.shiftKey) {
//do something interesting
}
}
ক্রোম, সাফারি, ফায়ারফক্স, ম্যাকের অপেরাতে পরীক্ষিত। এটি আপনার জন্য কাজ করে কিনা তা পরীক্ষা করে দেখুন।
JQuery ব্যবহার করা লোকদের জন্য, কী ইভেন্টগুলি পরিচালনা করার জন্য একটি দুর্দান্ত প্লাগইন রয়েছে:
ধরে রাখার জন্য ⌘+ + Sএবং Ctrl+ + Sআমি এই ব্যবহার করছি:
$(window).bind('keydown.ctrl_s keydown.meta_s', function(event) {
event.preventDefault();
// Do something here
});
এখানে আমি AngularJS এ কীভাবে করেছি
app = angular.module('MM_Graph')
class Keyboard
constructor: ($injector)->
@.$injector = $injector
@.$window = @.$injector.get('$window') # get reference to $window and $rootScope objects
@.$rootScope = @.$injector.get('$rootScope')
on_Key_Down:($event)=>
@.$rootScope.$broadcast 'keydown', $event # broadcast a global keydown event
if $event.code is 'KeyS' and ($event.ctrlKey or $event.metaKey) # detect S key pressed and either OSX Command or Window's Control keys pressed
@.$rootScope.$broadcast '', $event # broadcast keyup_CtrS event
#$event.preventDefault() # this should be used by the event listeners to prevent default browser behaviour
setup_Hooks: ()=>
angular.element(@.$window).bind "keydown", @.on_Key_Down # hook keydown event in window (only called once per app load)
@
app.service 'keyboard', ($injector)=>
return new Keyboard($injector).setup_Hooks()
আপনি যদি ভয়েজগুলি ব্যবহার করেন তবে এটি কেবল ভ্যু-শর্টকি প্লাগইন দ্বারা তৈরি করুন, সবকিছু সহজ হবে
https://www.npmjs.com/package/vue-shortkey
v-shortkey="['meta', 'enter']"·
@shortkey="metaEnterTrigged"