টি এল; ডিআর
এখানে একটি শ্রেণি রয়েছে:
KeyManager: new Lang.Class({
Name: 'MyKeyManager',
_init: function() {
this.grabbers = new Map()
global.display.connect(
'accelerator-activated',
Lang.bind(this, function(display, action, deviceId, timestamp){
log('Accelerator Activated: [display={}, action={}, deviceId={}, timestamp={}]',
display, action, deviceId, timestamp)
this._onAccelerator(action)
}))
},
listenFor: function(accelerator, callback){
log('Trying to listen for hot key [accelerator={}]', accelerator)
let action = global.display.grab_accelerator(accelerator)
if(action == Meta.KeyBindingAction.NONE) {
log('Unable to grab accelerator [binding={}]', accelerator)
} else {
log('Grabbed accelerator [action={}]', action)
let name = Meta.external_binding_name_for_action(action)
log('Received binding name for action [name={}, action={}]',
name, action)
log('Requesting WM to allow binding [name={}]', name)
Main.wm.allowKeybinding(name, Shell.ActionMode.ALL)
this.grabbers.set(action, {
name: name,
accelerator: accelerator,
callback: callback,
action: action
})
}
},
_onAccelerator: function(action) {
let grabber = this.grabbers.get(action)
if(grabber) {
this.grabbers.get(action).callback()
} else {
log('No listeners [action={}]', action)
}
}
})
এবং এটিই আপনি এটি ব্যবহার করেন:
let keyManager = new KeyManager()
keyManager.listenFor("<ctrl><shift>a", function(){
log("Hot keys are working!!!")
})
আপনার প্রয়োজন হবে আমদানি:
const Lang = imports.lang
const Meta = imports.gi.Meta
const Shell = imports.gi.Shell
const Main = imports.ui.main
শুনতে বন্ধ করতে:
for (let it of keyManager.grabbers) {
global.display.ungrab_accelerator(it[1].action)
Main.wm.allowKeybinding(it[1].name, Shell.ActionMode.NONE)
}
ব্যাখ্যা
আমি ভীষণ ভুল হতে পারি, তবে গত কয়েকদিনে আমি যা আবিষ্কার করেছি।
সবার আগে হ'ল হটকি বাজানোর জন্য দায়ী দায়িত্বে থাকা মাটার। মুটার উইন্ডো ম্যানেজার তৈরির জন্য একটি কাঠামো, এটি নিজে উইন্ডো ম্যানেজার নয়। জিনোম শেলের জেএস-এ লেখা একটি ক্লাস রয়েছে এবং এটি "উইন্ডো ম্যানেজার" নামে পরিচিত - এটি আসল উইন্ডো ম্যানেজার যা সমস্ত নিম্ন-স্তরের স্টাফ করার জন্য অভ্যন্তরীণভাবে মাটার ব্যবহার করে। মিটারের একটি মেটাডিজপ্লে রয়েছে। হটকি শোনার অনুরোধ করতে আপনি এটি ব্যবহার করেন। কিন্ত! তবে এই হটকি ব্যবহার অনুমোদনের জন্য মুটারকে উইন্ডো ম্যানেজারের প্রয়োজন হবে। হটকি চাপলে কী হয়? - মেটাডিসপ্লে ইভেন্ট 'ফিল্টার-কি-বাইন্ডিং' উত্পন্ন করে। - এই হটকিটি প্রক্রিয়া করার অনুমতি দেয় কিনা জিনোম শেলের উইন্ডো ম্যানেজার পরীক্ষা করে। - উইন্ডো ম্যানেজার মেটাডিসপ্লেতে যথাযথ মান প্রদান করে - যদি এই হটকিটি প্রক্রিয়া করার অনুমতি দেওয়া হয় তবে মেটাডিসপ্লে ইভেন্ট 'এক্সিলারেটর-অ্যাক্টিভেটড' উত্পন্ন করে