Страницы: 1
Input Language Assistant ( 52.3.0)
Автор: difabor (на основе расширения Input Language Assistant (автор: RomCraft)
Версия: от 08.09.2017
Описание: автоматически переключает язык ввода на английский при вводе в строке адреса. При помещении фокуса ввода в строку адреса текущий язык ввода запоминается и затем автоматически переключается на английский. Затем, когда фокус ввода перемещается в какое-нибудь другое место, текущий язык ввода восстанавливается обратно. Во время ввода в строке адреса сохраняется возможность переключать язык на любой другой обычным образом.
В дополнение к этим штатным функциям расширения, введены следующее:
1. Пробел сначала сразу же возвращает исходную раскладку.
2. Два пробела подряд в любом месте тоже возвращают исходную раскладку.
Это сделано для того, чтобы обеспечить поиск в строке адреса на родном языке.
Кнопка работает только на Windows (в исходном расширении обеспечивается работа и на MacOs, но у меня нет MacOs и проверить я не могу.
После установки кнопки требуется перезапуск (Restart).
Использование: положите код в инициализацию.
/*Initialization Code*/ //return(0); if (!ru) var ru = {}; if (!ru.net) ru.net = {}; if (!ru.net.rvk) ru.net.rvk = {}; if (!ru.net.rvk.ilaff) ru.net.rvk.ilaff = {}; ru.net.rvk.ilaff = { cnt32: 1, Windows:{ init: function() { try { this.lib = ctypes.open("user32.dll"); this.ActivateKeyboardLayout = this.lib.declare("ActivateKeyboardLayout", ctypes.winapi_abi, ctypes.voidptr_t, // return HKL ctypes.voidptr_t, // HKL hkl ctypes.uint32_t); // UINT Flags this.KLF_SETFORPROCESS = 0x00000100; this.HKL_ENGLISH = ctypes.voidptr_t(0x00000409); // United States (US) return true; } catch (err) { this.uninit(); return false; } }, uninit: function() { try { if (this.lib) { this.lib.close();} } catch (err) {} }, focus: function() { try {if (this.ActivateKeyboardLayout) {this.hkl = this.ActivateKeyboardLayout(this.HKL_ENGLISH, this.KLF_SETFORPROCESS);}} catch (err){} }, blur: function() { try {if (this.ActivateKeyboardLayout && this.hkl) {this.ActivateKeyboardLayout(this.hkl, this.KLF_SETFORPROCESS);}} catch (err) {} } }, // Windows !!MacOS:{} -> removed, can be added from addon of own responcibility//ubral init: function (){try { Components.utils.import("resource://gre/modules/ctypes.jsm"); if (this.Windows.init()) {this.engine = this.Windows;} else if (this.MacOS.init()){this.engine = this.MacOS;} else {alert("Unsupported platform: " + navigator.platform);return;} var urlbar = document.getElementById('urlbar'); //Zdes wmesto etogo - mojo dolzhno byt if (urlbar) {addEventListener("focus", function() {ru.net.rvk.ilaff.cnt32=1; ru.net.rvk.ilaff.focus();},false,urlbar); addEventListener("blur", function() { ru.net.rvk.ilaff.blur();},false,urlbar); addEventListener('keydown', function(e){//var cnt32=1; if (e.keyCode==32) {ru.net.rvk.ilaff.cnt32++; if (ru.net.rvk.ilaff.cnt32>1) ru.net.rvk.ilaff.blur();} if ((e.keyCode!=32)&&(e.keyCode!=46)&&(e.keyCode!=8)) ru.net.rvk.ilaff.cnt32=0;},false,urlbar);} } catch (err) {} }, uninit: function () { try {if (this.engine){this.engine.uninit();}} catch (err) {} }, focus: function () {try {if (this.engine) { this.engine.focus();}} catch (err){} }, blur: function (){ try {if (this.engine) { this.engine.blur();}} catch (err) {} } } ru.net.rvk.ilaff.init();
Отредактировано difabor (08-09-2017 18:52:24)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Это не работает и не нужно:
window.addEventListener("load", function() { ru.net.rvk.ilaff.init(); }, false); window.addEventListener("unload", function() { ru.net.rvk.ilaff.uninit(); }, false);
проверь при старте брузера:
Обработчики в Сustom Buttons надо добавлять вот так:
элемент на который ставят обработчик надо указывать за false иначе обработчик в некоторых случаях будет дублироваться и не будет удалятся после удаления кнопки.
Отсутствует
Это не работает и не нужно:
Выделить кодКод:
window.addEventListener("load", function() { ru.net.rvk.ilaff.init(); }, false); window.addEventListener("unload", function() { ru.net.rvk.ilaff.uninit(); }, false);проверь при старте брузера:
Обработчики в Сustom Buttons надо добавлять вот так:
элемент на который ставят обработчик надо указывать за false иначе обработчик в некоторых случаях будет дублироваться и не будет удалятся после удаления кнопки.
Спасибо большое!
Я исправил как Вы сказали и подредактировал алгоритм с пробелами. Я ещё дилетант и только учусь.
Я думаю, что лучше отредактировать свой первый пост, чем помещать новый с исправленной версией.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Немного модифицировал код. Сейчас можно переходить из родной раскладки в английскую и наоборот сколько угодно раз: два delete подряд тоже переводят в английскую, запоминая предыдущую
Вот как выглядит поиск в адресной строке: , когда я в раскладке RU.
Здесь: ng - keyword для нигмы, затем два пробела (один можно стереть, а можно и не стирать), затем идёт русский текст "смотреть", затем пробел, дважды delete -> переходим в английскую раскладку и продолжаем латиницей, затем Alt-Enter и поиск будет в новой вкладке. Покидаем urlbar, фокусируемся кликом где угодно - остаёмся в русской раскладке (RU). На любителя, конечно, кому лень следить за раскладками - с какой зашли, в такую и вернулись, а в urlbarе можно и "попрыгать"
/*Initialization Code*/ //return(0); if (!ru) var ru = {}; if (!ru.net) ru.net = {}; if (!ru.net.rvk) ru.net.rvk = {}; if (!ru.net.rvk.ilaff) ru.net.rvk.ilaff = {}; ru.net.rvk.ilaff = { cnt32: 1, cnt46: 0, Windows:{ init: function() { try { this.lib = ctypes.open("user32.dll"); this.ActivateKeyboardLayout = this.lib.declare("ActivateKeyboardLayout", ctypes.winapi_abi, ctypes.voidptr_t, // return HKL ctypes.voidptr_t, // HKL hkl ctypes.uint32_t); // UINT Flags this.KLF_SETFORPROCESS = 0x00000100; this.HKL_ENGLISH = ctypes.voidptr_t(0x00000409); // United States (US) return true; } catch (err) { this.uninit(); return false; } }, uninit: function() { try { if (this.lib) { this.lib.close();} } catch (err) {} }, focus: function() { try {if (this.ActivateKeyboardLayout) {this.hkl = this.ActivateKeyboardLayout(this.HKL_ENGLISH, this.KLF_SETFORPROCESS);}} catch (err){} }, blur: function() { try {if (this.ActivateKeyboardLayout && this.hkl) {this.ActivateKeyboardLayout(this.hkl, this.KLF_SETFORPROCESS);}} catch (err) {} } }, // Windows !!MacOS:{} -> removed, can be added from addon of own responcibility//ubral init: function (){try { Components.utils.import("resource://gre/modules/ctypes.jsm"); if (this.Windows.init()) {this.engine = this.Windows;} else if (this.MacOS.init()){this.engine = this.MacOS;} else {alert("Unsupported platform: " + navigator.platform);return;} var urlbar = document.getElementById('urlbar'); //Zdes wmesto etogo - mojo dolzhno byt if (urlbar) {addEventListener("focus", function() {ru.net.rvk.ilaff.cnt32=1; ru.net.rvk.ilaff.focus();},false,urlbar); addEventListener("blur", function() { ru.net.rvk.ilaff.blur();},false,urlbar); addEventListener('keydown', function(e){//var cnt32=1; if (e.keyCode==32) {ru.net.rvk.ilaff.cnt32++; if (ru.net.rvk.ilaff.cnt32>1) ru.net.rvk.ilaff.blur()} if (e.keyCode==46) {ru.net.rvk.ilaff.cnt46++; if (ru.net.rvk.ilaff.cnt46>1) ru.net.rvk.ilaff.focus()} if ((e.keyCode!=32)&&(e.keyCode!=46)&&(e.keyCode!=8)) { ru.net.rvk.ilaff.cnt32=0;ru.net.rvk.ilaff.cnt46=0}},false,urlbar);} } catch (err) {} }, uninit: function () { try {if (this.engine){this.engine.uninit();}} catch (err) {} }, focus: function () {try {if (this.engine) { this.engine.focus();}} catch (err){} }, blur: function (){ try {if (this.engine) { this.engine.blur();}} catch (err) {} } } ru.net.rvk.ilaff.init();
Отредактировано difabor (16-09-2017 19:16:28)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Здравствуйте, можно сделать так чтоб если писать на русском жмешь ЛКМ длинным кликом и раскладка EN, Я пользуюсь ноутбуком и нажать на тач проще и бистрее чем тянутся до кл. делл. спасибо за внимание.
Кстати кнопка очень удобная, как меня бесила ситуация когда набирал текст а он в крякозябры
Отредактировано broker (08-12-2017 17:35:04)
Отсутствует
difabor
Здравствуйте, можно сделать так чтоб если писать на русском жмешь ЛКМ длинным кликом и раскладка EN, Я пользуюсь ноутбуком и нажать на тач проще и бистрее чем тянутся до кл. делл. спасибо за внимание.
Кстати кнопка очень удобная, как меня бесила ситуация когда набирал текст а он в крякозябры
Я сделал то, что Вы просили - по длинному ЛКМ переводит в EN, но независимо от того, в какой раскладке Вы были.
Кроме этого добавил ещё следующее:
Два пробела с Ctrl тоже переводит в EN (а два пробела без Ctrl переводит как и раньше - в исходную.
Кроме того добавил ещё две операции:
а) Длинный ЛКМ с Shift - стандартное меню кнопки (то, что открывается по ПКМ на кнопку)
б) Длинный ЛКМ с Ctrl - открывает редактор кнопки (то, что открывается по менюитему Edit button;
Эти две операции добавлены по следующей причине.
Сама кнопка не требует никаких кликов по ней и нет смысла, чтобы она занимала место на тулбаре.
Её вообще можно спрятать стилем, например, если у вас есть Classic Theme Restorer, то там в Custom css code напишите:
#CB_ID {visibility: collapse !important;} #CB_ID > menupopup {visibility: visible !important;}
где CB_ID - ИД кнопки (напр. custombuttons-button30)
Тогда это будет выглядеть так:
#custombuttons-button30 {visibility: collapse !important;}#custombuttons-button30 > menupopup {visibility: visible !important;}
Тогда эту кнопку надо будет вызывать лишь в двух случаях: чтобы что-то отредактировать в ней или зачем-то вызвать её стандартное меню.
Именно для этого я и добавил эти две операции - а) и б).
Они требуются редко, поэтому длинный клик с модификатором ( Shift или Ctrl), хоть и не очень удобен, но это приемлемо
Код кнопки:
/*Initialization Code*/ //return(0); var btn = this; var mdown = [Date.now(),0,0],B=Date.now(),tlong=800,dlow=10; if (!ru) var ru = {}; if (!ru.net) ru.net = {}; if (!ru.net.rvk) ru.net.rvk = {}; if (!ru.net.rvk.ilaff) ru.net.rvk.ilaff = {}; ru.net.rvk.ilaff = { cnt32: 1, cnt46: 0, Windows:{ init: function() { try { this.lib = ctypes.open("user32.dll"); this.ActivateKeyboardLayout = this.lib.declare("ActivateKeyboardLayout", ctypes.winapi_abi, ctypes.voidptr_t, // return HKL ctypes.voidptr_t, // HKL hkl ctypes.uint32_t); // UINT Flags this.KLF_SETFORPROCESS = 0x00000100; this.HKL_ENGLISH = ctypes.voidptr_t(0x00000409); // United States (US) return true; } catch (err) { this.uninit(); return false; } }, uninit: function() { try { if (this.lib) { this.lib.close();} } catch (err) {} }, focus: function() { try {if (this.ActivateKeyboardLayout) {this.hkl = this.ActivateKeyboardLayout(this.HKL_ENGLISH, this.KLF_SETFORPROCESS);}} catch (err){} }, blur: function() { try {if (this.ActivateKeyboardLayout && this.hkl) {this.ActivateKeyboardLayout(this.hkl, this.KLF_SETFORPROCESS);}} catch (err) {} } }, // Windows !!MacOS:{} -> removed, can be added from addon of own responcibility//ubral init: function (){try { Components.utils.import("resource://gre/modules/ctypes.jsm"); if (this.Windows.init()) {this.engine = this.Windows;} else if (this.MacOS.init()){this.engine = this.MacOS;} else {alert("Unsupported platform: " + navigator.platform);return;} var urlbar = document.getElementById('urlbar'); //Zdes wmesto etogo - mojo dolzhno byt if (urlbar) {addEventListener("focus", function() {ru.net.rvk.ilaff.cnt32=1; ru.net.rvk.ilaff.focus();},false,urlbar); addEventListener("blur", function() { ru.net.rvk.ilaff.blur();},false,urlbar); addEventListener('keydown', function(e){//var cnt32=1; if (e.keyCode==32) {ru.net.rvk.ilaff.cnt32++; if ((ru.net.rvk.ilaff.cnt32>1)&&!e.ctrlKey) ru.net.rvk.ilaff.blur(); if ((ru.net.rvk.ilaff.cnt32>1)&&e.ctrlKey) ru.net.rvk.ilaff.focus();} if (e.keyCode==46) {ru.net.rvk.ilaff.cnt46++; if (ru.net.rvk.ilaff.cnt46>1) ru.net.rvk.ilaff.focus()} if ((e.keyCode!=32)&&(e.keyCode!=46)&&(e.keyCode!=8)&&!e.ctrlKey) { ru.net.rvk.ilaff.cnt32=0;ru.net.rvk.ilaff.cnt46=0}},false,urlbar); addEventListener('mousedown',(e)=>{mdown=[Date.now(),e.clientX,e.clientY];},0,urlbar); addEventListener('mouseup',(e)=> {var dx=e.clientX-mdown[1],dy=e.clientY-mdown[2]; var trem=dx*dx+dy*dy, TfromDown = Date.now()-mdown[0]; var LongClick = ((trem<dlow)&&(TfromDown>tlong)&&!e.ctrlKey&&!e.shiftKey&&!e.altKey); var CtrlClick = ((trem<dlow)&&(TfromDown>tlong)&&e.ctrlKey&&!e.shiftKey&&!e.altKey); var ShiftClick = ((trem<dlow)&&(TfromDown>tlong)&&!e.ctrlKey&&e.shiftKey&&!e.altKey); if ((e.button==0)&&LongClick) ru.net.rvk.ilaff.focus(); if ((e.button==0)&&ShiftClick) gShowPopup(btn); if ((e.button==0)&&CtrlClick) {custombuttons.editButton(btn)};},0,urlbar); } } catch (err) {} }, uninit: function () { try {if (this.engine){this.engine.uninit();}} catch (err) {} }, focus: function () {try {if (this.engine) { this.engine.focus();}} catch (err){} }, blur: function (){ try {if (this.engine) { this.engine.blur();}} catch (err) {} } } ru.net.rvk.ilaff.init();
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Спасибо большое прям праздник какой то.
я сейчас работаю ещё над одной кнопкой, которая должна исправлять крякозябры - но уже не в адресной строке (urlbar), а текстовых полях и других местах, где можно писать.
Когда что-то получится, я её выложу, а в этой ветке дам на неё ссылку. Она Вам тоже может пригодиться.
Хорошо, будем тестить заодно форумчане подтянутся.
Должен признаться кнопка у меня не работает или конфликт с кнопкой открыть длинным кликом ссилку или я чет не то делаю.
Два пробела с Ctrl тоже переводит в EN (а два пробела без Ctrl переводит как и раньше - в исходную.
нет изменений
а) Длинный ЛКМ с Shift - стандартное меню кнопки (то, что открывается по ПКМ на кнопку)
б) Длинный ЛКМ с Ctrl - открывает редактор кнопки (то, что открывается по менюитему Edit button;
также
Отредактировано broker (11-12-2017 20:20:13)
Отсутствует
broker,
попробуйте сделать рестарт.
Вы уверены, что обновили предыдущую версию, а не создали новую кнопку?
broker,
Вы взяли код из того моего поста №7?
Я начальную версию ещё не обновлял.
Нажмите на скрытый текст - там будет новый код для Вас.
Если всё будет ОК, я со временем либо обновлю версию в старттопике, либо добавлю туда ссылку на эту версию.
Отредактировано difabor (12-12-2017 03:56:44)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
попробуйте сделать рестарт.
Вы уверены, что обновили предыдущую версию, а не создали новую кнопку?
Я предыдущую удалил, создал новую, на новой кнопке ПКМ работает меню кустомбуттон а не должно.
Вы взяли код из того моего поста №7?
Да я оттуда брал, не первый год на форуме.
Что било сделано с моей стороны.
Отключил все скрипты, убрал все кнопки кроме обсуждаемой и отключил ublock. Тест проводил здесь на форуме печатаю соющение нажимаю ЛКМ длинный клик и ничего не меняется, хотя кнопка работает например если курсор в урлбаре включает EN раскладку в текстовом поле снова RU.
Система виндовс 7 х86 Максимальная Антивируски нет.
Мозила 57.0 (32бит) разширения: Custom Buttons 0.0.5.8.9.5, Forecastfox (fix version)4.11 Hoxx VPN Proxy , Stylish Legacy2.0.8 ,uBlock Origin1.14 и Violentmonkey.
Где копать то подскажите?
Отсутствует
difabor
difabor пишетпопробуйте сделать рестарт.
Вы уверены, что обновили предыдущую версию, а не создали новую кнопку?
Я предыдущую удалил, создал новую, на новой кнопке ПКМ работает меню кустомбуттон а не должно.
difabor пишетВы взяли код из того моего поста №7?
Да я оттуда брал, не первый год на форуме.
Что било сделано с моей стороны.
Отключил все скрипты, убрал все кнопки кроме обсуждаемой и отключил ublock. Тест проводил здесь на форуме печатаю соющение нажимаю ЛКМ длинный клик и ничего не меняется, хотя кнопка работает например если курсор в урлбаре включает EN раскладку в текстовом поле снова RU.
Система виндовс 7 х86 Максимальная Антивируски нет.
Мозила 57.0 (32бит) разширения: Custom Buttons 0.0.5.8.9.5, Forecastfox (fix version)4.11 Hoxx VPN Proxy , Stylish Legacy2.0.8 ,uBlock Origin1.14 и Violentmonkey.
Где копать то подскажите?
1. ПКМ по кнопке должно выдавать меню кустомбуттон, но кроме того - ещё и по Shift+ЛКМ на urlbarе.
2. Попробуйте сделать просто ЛКМ, затем длинный ЛКМ - может просто по длинному ЛКМ убегает курсор (вернее, он оказывается там, откуда Вы начинали. Проследите, чтобы он был в конце набранного текста!)
3. Попробуйте Ctrl+пробел,пробел. Или пробел+Ctrl+пробел.
Важно, чтобы последний пробел был с Ctrl. Ctrl+пробел не делает пробел на urlbarе, поэтому если Вы сразу после этого сделаете ещё пробел без Ctrl, то опять будет русская раскладка.
Поэтому, если хотите, чтобы был пробел, сделайте пробел+Ctrl+пробел, а если без пробела - удерживая Ctrl, сделайте два пробела. Но после этого не делайте ещё один пробел без Ctrl!!!
4. Shift+ЛКМ для меню и Ctrl+ЛКМ для редактора кнопки надо делать на urlbarе, а не на кнопке!!!
Отредактировано difabor (12-12-2017 18:45:08)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
4. Shift+ЛКМ для меню и Ctrl+ЛКМ для редактора кнопки надо делать на urlbarе, а не на кнопке!!!
Здесь работает, хорошо но манипуляции
3. Попробуйте Ctrl+пробел,пробел. Или пробел+Ctrl+пробел.
Ctrl+пробел не работает.
Проследите, чтобы он был в конце набранного текста!)
Курсор никуда не убегает в конце текста на ЛКМ не реагирует.
А если сделать двойной клик будет работать? я немогу понять кнопка у меня не работает или з системой браузером связано.
Отсутствует
Добавил ещё одну возможность переводить в EN раскладку.
Ниже перечисляю все возможности по переводу в EN раскладу и назад, в исходную.
1. Переключает в EN, когда курсор фокусируется на urlbar
2. Переключается в исходную раскладку, если сделать два пробела подряд без Ctrl (если Вы хотите сразу начать с исходной раскладки - достаточно одного пробела)
3. Переключается в EN, если:
3.1 Нажать стрелку вправо
3.2 Если сделать два пробела с Ctrl
3.3 при длинном клике ЛКМ без модификаторов
Примечание к 3.2:
Пробел при нажатом Ctrl не делает самого пробела, указатель остаётся на том же месте. Например, если у вас была русская раскладка (напр. буква "я" , Вы сделали два пробела с Ctrl и нажали клавишу "q", у вас будет набрано "яq" без пробела
Поэтому, если хотите, чтобы был пробел, сделайте пробел+Ctrl+пробел, а если без пробела - удерживая Ctrl, сделайте два пробела. Но после этого не делайте ещё один пробел без Ctrl!!! Иначе - опять переведёте urlbar в исходную раскладку!
Примечание к 3.3:
Надо отличать положение курсора и положение указателя.
Когда вы набирали какой-то текст, указатель перемещался вместе с набором текста, а курсор - нет. Поэтому если просто сделать длинный клик ЛКМ - будет плохо.
Надо переместить курсор тоже вправо (не уходя из urlbarа) и лишь потом сделать длинный клик ЛКМ.
--------------------------------------
Я бы рекомендовал нажатие на стрелочку вправо для перевода в EN - это и проще, и нет нюансов, как в случае 3.2 и 3.3
4. Поскольку сама СВ кнопка не требует никаких кликов по ней то нет смысла, чтобы она занимала место на тулбаре.
Единственно, когда она может потребоваться - это что-то отредактировать в ней или зачем-то вызвать её стандартное меню.
Поэтому введены ещё две операции на urlbarе:
4.1 Длинный ЛКМ с Shift - стандартное меню кнопки (то, что открывается по ПКМ на кнопку)
4.2 Длинный ЛКМ с Ctrl - открывает редактор кнопки (то, что открывается по менюитему Edit button;
Тогда саму СВ кнопку вообще можно спрятать стилем, например, если у вас есть Classic Theme Restorer, то там в Custom css code напишите:
#CB_ID {visibility: collapse !important;} #CB_ID > menupopup {visibility: visible !important;}
#custombuttons-button30 {visibility: collapse !important;}#custombuttons-button30 > menupopup {visibility: visible !important;}
/*Initialization Code*/ //return(0); var btn = this; var mdown = [Date.now(),0,0],B=Date.now(),tlong=800,dlow=10; if (!ru) var ru = {}; if (!ru.net) ru.net = {}; if (!ru.net.rvk) ru.net.rvk = {}; if (!ru.net.rvk.ilaff) ru.net.rvk.ilaff = {}; ru.net.rvk.ilaff = { cnt32: 1, cnt46: 0, Windows:{ init: function() { try { this.lib = ctypes.open("user32.dll"); this.ActivateKeyboardLayout = this.lib.declare("ActivateKeyboardLayout", ctypes.winapi_abi, ctypes.voidptr_t, // return HKL ctypes.voidptr_t, // HKL hkl ctypes.uint32_t); // UINT Flags this.KLF_SETFORPROCESS = 0x00000100; this.HKL_ENGLISH = ctypes.voidptr_t(0x00000409); // United States (US) return true; } catch (err) { this.uninit(); return false; } }, uninit: function() { try { if (this.lib) { this.lib.close();} } catch (err) {} }, focus: function() { try {if (this.ActivateKeyboardLayout) {this.hkl = this.ActivateKeyboardLayout(this.HKL_ENGLISH, this.KLF_SETFORPROCESS);}} catch (err){} }, blur: function() { try {if (this.ActivateKeyboardLayout && this.hkl) {this.ActivateKeyboardLayout(this.hkl, this.KLF_SETFORPROCESS);}} catch (err) {} } }, // Windows !!MacOS:{} -> removed, can be added from addon of own responcibility//ubral init: function (){try { Components.utils.import("resource://gre/modules/ctypes.jsm"); if (this.Windows.init()) {this.engine = this.Windows;} else if (this.MacOS.init()){this.engine = this.MacOS;} else {alert("Unsupported platform: " + navigator.platform);return;} var urlbar = document.getElementById('urlbar'); //Zdes wmesto etogo - mojo dolzhno byt if (urlbar) {addEventListener("focus", function() {ru.net.rvk.ilaff.cnt32=1; ru.net.rvk.ilaff.focus();},false,urlbar); addEventListener("blur", function() { ru.net.rvk.ilaff.blur();},false,urlbar); addEventListener('keydown', function(e){//var cnt32=1; if (e.keyCode==32) {ru.net.rvk.ilaff.cnt32++; if ((ru.net.rvk.ilaff.cnt32>1)&&!e.ctrlKey) ru.net.rvk.ilaff.blur(); if ((ru.net.rvk.ilaff.cnt32>1)&&e.ctrlKey) ru.net.rvk.ilaff.focus();} if (e.keyCode==46) {ru.net.rvk.ilaff.cnt46++; if (ru.net.rvk.ilaff.cnt46>1) ru.net.rvk.ilaff.focus()} if (e.keyCode==39) ru.net.rvk.ilaff.focus(); if ((e.keyCode!=32)&&(e.keyCode!=46)&&(e.keyCode!=8)&&!e.ctrlKey) { ru.net.rvk.ilaff.cnt32=0;ru.net.rvk.ilaff.cnt46=0}},false,urlbar); addEventListener('mousedown',(e)=>{mdown=[Date.now(),e.clientX,e.clientY];},0,urlbar); addEventListener('mouseup',(e)=> {var dx=e.clientX-mdown[1],dy=e.clientY-mdown[2]; var trem=dx*dx+dy*dy, TfromDown = Date.now()-mdown[0]; var LongClick = ((trem<dlow)&&(TfromDown>tlong)&&!e.ctrlKey&&!e.shiftKey&&!e.altKey); var CtrlClick = ((trem<dlow)&&(TfromDown>tlong)&&e.ctrlKey&&!e.shiftKey&&!e.altKey); var ShiftClick = ((trem<dlow)&&(TfromDown>tlong)&&!e.ctrlKey&&e.shiftKey&&!e.altKey); if ((e.button==0)&&LongClick) ru.net.rvk.ilaff.focus(); if ((e.button==0)&&ShiftClick) gShowPopup(btn); if ((e.button==0)&&CtrlClick) {custombuttons.editButton(btn)};},0,urlbar); } } catch (err) {} }, uninit: function () { try {if (this.engine){this.engine.uninit();}} catch (err) {} }, focus: function () {try {if (this.engine) { this.engine.focus();}} catch (err){} }, blur: function (){ try {if (this.engine) { this.engine.blur();}} catch (err) {} } } ru.net.rvk.ilaff.init();
Отредактировано difabor (15-12-2017 02:58:27)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
broker, я немного подправил код. Скопируйте ещё раз. Думаю, что стрелочка вправо заработает
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Страницы: 1