Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№5111-09-2012 10:37:38

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 14.0

Re: SwitchKeyboardLayout

Inko7 пишет

На каком этапе он должен был появиться?

При попытке входа в настройки расширения.

Отсутствует

 

№5215-10-2012 09:20:47

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 17.0

Re: SwitchKeyboardLayout

Версия 1.23 с поддержкой веток 17.0 и 18.0. Доступна через автоапдейт. Поддерживаемые ветки: 10, 16, 17, 18.

Отсутствует

 

№5313-11-2012 18:28:33

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 16.0

Re: SwitchKeyboardLayout

hydrolizer
Тяжковато без вашего дополнения на Win x64 :(
Можете все-таки собрать библиотеку для 64-битных систем? Это сложно?
Если вы не хотите увеличивать размер аддона из-за двух библиотек одновременно, то может собрать одну версию только для x64 без дальнейшего обновления?

Отсутствует

 

№5413-11-2012 19:33:10

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 17.0

Re: SwitchKeyboardLayout

Inko7 пишет

Это сложно?

Ну как сказать... нужно развернуть виндовс x64 на виртуалке, внутрь виртуалки поставить visual studio со всем необходимым, собрать, потестировать. Не столько сложно, сколько достаточно долго. Попробую на выходных это сделать.

Отсутствует

 

№5513-11-2012 19:38:18

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 16.0

Re: SwitchKeyboardLayout

hydrolizer пишет

Попробую на выходных это сделать

Было бы здорово! Спасибо.

Отсутствует

 

№5620-11-2012 08:05:36

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 17.0

Re: SwitchKeyboardLayout

Возникли некоторые проблемы с вызовом методов WinAPI под Fx x64. Кто может - проверьте у себя под x64, как отработает вот такой код:

Выделить код

Код:

try
{
  Components.utils.import("resource://gre/modules/ctypes.jsm");
  Components.utils.import("resource://gre/modules/Services.jsm");
  var lib=ctypes.open("user32.dll");
  var method=lib.declare("GetKeyboardLayout",ctypes.winapi_abi,ctypes.uint32_t,ctypes.uint32_t);
  var res=method(0);
  lib.close();
  Services.prompt.alert(null, "test", Number(res).toString(16).toUpperCase());
}
catch(err)
{
  Components.utils.reportError(err);
}

- он выводит в алерте HKL текущей раскладки, т.е. должен вывести либо 4090409, либо 4190419. Если не будет никаких сообщений - загляните в консоль ошибок.
На всякий случай - под спойлером кастомная кнопка с этим кодом.

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3Ectypes%20test%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Btry%0A%7B%0A%09Components.utils.import%28%22resource%3A//gre/modules/ctypes.jsm%22%29%3B%0A%09Components.utils.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0A%09var%20lib%3Dctypes.open%28%22user32.dll%22%29%3B%0A%09var%20method%3Dlib.declare%28%22GetKeyboardLayout%22%2Cctypes.winapi_abi%2Cctypes.uint32_t%2Cctypes.uint32_t%29%3B%0A%09var%20res%3Dmethod%280%29%3B%0A%09lib.close%28%29%3B%0A%09Services.prompt.alert%28null%2C%20%22test%22%2C%20Number%28res%29.toString%2816%29.toUpperCase%28%29%29%3B%0A%7D%0Acatch%28err%29%0A%7B%0A%09Components.utils.reportError%28err%29%3B%0A%7D%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№5720-11-2012 13:53:07

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 16.0

Re: SwitchKeyboardLayout

hydrolizer пишет

он выводит в алерте HKL текущей раскладки, т.е. должен вывести либо 4090409, либо 4190419

Да, так и есть.
Проверил под Win7 Ultimate x64, но с 32-разр. Firefox, т.к. только его использую.

Отредактировано Inko7 (20-11-2012 13:55:17)

Отсутствует

 

№5820-11-2012 14:38:56

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 17.0

Re: SwitchKeyboardLayout

Inko7 пишет

Да, так и есть

Т.е. 4090409/4190419? У меня почему-то выбрасывает 998 - ERROR_NOACCESS, т.е. firefox не может достучаться до самой библиотеки (системной). Буду разбираться, в чем дело.

Inko7 пишет

но с 32-разр. Firefox

Да, именно так и нужно - пока не появится релизного firefox x64, за него даже нечего и браться, слишком там много может быть нестабильностей низкоуровневого характера.

Отсутствует

 

№5920-11-2012 14:52:50

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 16.0

Re: SwitchKeyboardLayout

hydrolizer пишет

Т.е. 4090409/4190419?

У меня две раскладки рус\англ и ничего кроме этого не выскакивало.
Консоль ошибок не смотрел.

Отсутствует

 

№6013-01-2013 08:03:34

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 19.0

Re: SwitchKeyboardLayout

Версия 1.24 с поддержкой ветки 19.0. Доступна через автоапдейт. Поддерживаемые ветки: 17, 18, 19.
С версией для x64 пока не получается - лезут ошибки компиляции откуда-то изнутри xulrunner sdk. Есть подозрение, что для сборки под x64 соответственно нужен sdk x64 - а его нет (и вроде как никогда не было); на ftp лежит только win32 sdk (в отличие от sdk для linux и macos).

Отсутствует

 

№6124-02-2013 15:01:03

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 19.0

Re: SwitchKeyboardLayout

Версия 1.25 с поддержкой ветки 20.0. Доступна через автоапдейт. Поддерживаемые ветки: 17, 19, 20.

Отсутствует

 

№6206-04-2013 06:40:24

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 21.0

Re: SwitchKeyboardLayout

Версия 1.26. Доступна через автоапдейт. Поддерживаемые ветки: теоретически - все начиная с 5.0. На практике - надо пробовать. Версия тестировалась под текущую бету (21.0b). Основное отличие этой версии от всех предыдущих - в ней удалось избавиться от бинарного XPCOM-компонента, и теперь нет надобности пересобирать и перепаковывать расширение под каждый новый релиз. Кроме того, совместимость расширения теперь будет такой же, как у всех прочих расширений - оно будет совместимым до тех пор, пока не будет доказано обратного. И, наконец, поскольку единственная оставшаяся в составе расширения библиотека является обычной платформенной сишной библиотекой, не зависящей от xulrunner SDK, то её можно адаптировать к x64, чем я и займусь.

технические подробности
Бинарный XPCOM-компонент в составе расширения делал следующее: вешал на главное окно Firefox shell-хук, в hook callback при code=HSHELL_LANGUAGE оповещал расширение о смене раскладки через observer notofications. И либо два года назад js-ctypes не поддерживали указатели на js-функции, либо я этот момент упустил, но определение момента смены раскладки делалось именно вышеописанным образом. А не так давно я случайно наткнулся на описание callbacks с помощью js-ctypes и js-функций. Выглядит в рабочем коде это вот так:

Выделить код

Код:

callback: null,
callNextHookEx: null,
hook: null,
installHook: function()
{
  let getCurrentThreadId = this.k32lib.declare("GetCurrentThreadId", ctypes.winapi_abi, ctypes.uint32_t);
  var threadId = getCurrentThreadId();
  var callbackType = ctypes.FunctionType(ctypes.stdcall_abi,
    ctypes.int32_t.ptr, [ctypes.int, ctypes.int32_t, ctypes.int32_t]);
  var setWindowsHookExW = this.u32lib.declare("SetWindowsHookExW", ctypes.winapi_abi, ctypes.uint64_t.ptr,
    ctypes.int, callbackType.ptr, ctypes.int32_t.ptr, ctypes.uint32_t);
  this.callback = callbackType.ptr(this.shellProc, this);
  this.callNextHookEx = this.u32lib.declare("CallNextHookEx", ctypes.winapi_abi, ctypes.uint64_t.ptr,
    ctypes.int32_t.ptr, ctypes.int, ctypes.int32_t.ptr, ctypes.uint64_t.ptr);
  this.hook = setWindowsHookExW(10, this.callback, ctypes.int32_t.ptr(0), threadId);
},

shellProc: function(code, wParam, lParam)
{
  if (code<0)
    return this.callNextHookEx(0, code, wParam, lParam);
  if (code==8)
    this.fireLayoutChanged(lParam, SKLConst.CHANGED_FROM_OS);
  return this.callNextHookEx(0, code, wParam, lParam);
},

uninstallHook: function()
{
  let unhookWindow = this.u32lib.declare("UnhookWindowsHookEx", ctypes.winapi_abi, ctypes.bool, ctypes.uint64_t.ptr);
  var res = unhookWindow(this.hook);
  if (res)
    this.hook = null;
},

Отсутствует

 

№6306-04-2013 16:41:46

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 158
UA: Firefox 20.0

Re: SwitchKeyboardLayout

Inko7
Под х64 работает Transliterator

Отсутствует

 

№6406-04-2013 18:47:45

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 20.0

Re: SwitchKeyboardLayout

VORON
Спасибо, но оно какое-то не такое...
А раз еще и hydrolizer пишет:

hydrolizer пишет

... то её можно адаптировать к x64, чем я и займусь.

то вообще ничего другого искать не придется!

Отсутствует

 

№6506-04-2013 20:38:33

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 21.0

Re: SwitchKeyboardLayout

Inko7
Собственно, вот: https://dl.dropbox.com/u/14131025/FMR/S … x.1.26.xpi - можно пробовать.
Даже не пришлось делать отдельную библиотеку - расширение на х64 работает с той же dll, что и на х86. Пришлось только подкорректировать ряд функций.
Это тестовая версия с тем же номером, что и у версии, выложенной сегодня утром. Если все будет в порядке - сделаю отдельную версию с автоапдейтом.
У себя работу проверял на Fx 21.0b и Win 7 Prof. x64 SP1 (чистая установка с дистрибутива, в систему были установлены только Far x64 и Firefox).

> Под х64 работает Transliterator
еще бы ему не работать - в его составе нет бинарников (и значит, он как минимум не переключает раскладку)

Отсутствует

 

№6606-04-2013 21:00:57

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 20.0

Re: SwitchKeyboardLayout

hydrolizer
Да, все работает отлично!!! :rock:

Отсутствует

 

№6707-04-2013 08:08:58

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 21.0

Re: SwitchKeyboardLayout

Inko7
Если нетрудно - проверьте, как работает функция исправления регистра (в настройках выставить Состояние CapsLock при исправлении регистра - выключить, нажать капс, набрать текст, нажать хоткей исправления регистра). У меня на виртуалке с Win7x64 сам регистр исправляется, а вот состояние капслока не изменяется (при описанной последовательности действий он должен выключиться). Без каких-либо ошибок. На Win7x86 (не на виртуалке) всё работает так, как надо. Просто есть подозрение, что виновата именно виртуалка - хотелось бы это проверить.

Отредактировано hydrolizer (07-04-2013 08:10:35)

Отсутствует

 

№6807-04-2013 10:26:54

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 158
UA: Firefox 20.0

Re: SwitchKeyboardLayout

Inko7 пишет

VORONСпасибо, но оно какое-то не такое...

Ну за  год я даже к её дурацкой CTRL+SHIFT+Q комбинации клавиш привык ,-как говорится за неимением гербовой....

hydrolizer пишет

еще бы ему не работать - в его составе нет бинарников (и значит, он как минимум не переключает раскладку)

-и чего ж с таким апломбом об этом полтора года назад не говорить,а?

Отсутствует

 

№6907-04-2013 10:47:15

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 20.0

Re: SwitchKeyboardLayout

hydrolizer пишет

Просто есть подозрение, что виновата именно виртуалка - хотелось бы это проверить.

Скорей всего, это именно так.
У меня на Win7Pro x64 все сработало как надо.

Отсутствует

 

№7007-04-2013 16:42:24

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 21.0

Re: SwitchKeyboardLayout

Inko7 пишет

У меня на Win7Pro x64 все сработало как надо.

Спасибо. Версия 1.27. Доступна через автоапдейт, совместима с версиями 5.0 - 22.0 и выше, как для windows x86, так и для windows x64.

Отсутствует

 

№7112-05-2014 14:40:35

ninaanin
Участник
 
Группа: Members
Зарегистрирован: 21-03-2010
Сообщений: 76
UA: Firefox 28.0

Re: SwitchKeyboardLayout

hydrolizer
Кто нибудь знает как запретить открываться пустым вкладкам? Из за дополнений бывают ситуации когда открывается пустая вкладка, и дополнение не отключить, потому как нужное, вот и хочется запретить срабатывание пустых вкладок, а то достало.


Я учусь у Вас ! Спасибо Вам !

Отсутствует

 

№7215-06-2015 00:10:23

VINRARUS
Забанен
 
Группа: Members
Откуда: Чернобыль
Зарегистрирован: 05-04-2013
Сообщений: 518
UA: Firefox 39.0
Веб-сайт

Re: SwitchKeyboardLayout

На [firefox] 39 менюшка с настройками не работает, а на 64 бит [firefox] даже контекстное меню не работает. :sick:

Отсутствует

 

№7315-06-2015 12:54:02

DreamC
Участник
 
Группа: Members
Зарегистрирован: 31-08-2009
Сообщений: 569
UA: Firefox 39.0

Re: SwitchKeyboardLayout

VINRARUS
Как обладатель 39x64 говорю, что работает все ;)

Отсутствует

 

№7415-06-2015 15:05:20

VINRARUS
Забанен
 
Группа: Members
Откуда: Чернобыль
Зарегистрирован: 05-04-2013
Сообщений: 518
UA: Firefox 39.0
Веб-сайт

Re: SwitchKeyboardLayout

DreamC
Да, это интересно...
У меня даже меню с настройками ни на 39 х64 [firefox] ни на 40 х32 [firefox] не работает, окно открывается пустым и даже ОК не нажимается. :/
[windows] 8 х64 если что. Версия плагина 1.27.

Отредактировано VINRARUS (15-06-2015 15:06:13)

Отсутствует

 

№7515-06-2015 16:24:29

DreamC
Участник
 
Группа: Members
Зарегистрирован: 31-08-2009
Сообщений: 569
UA: Firefox 39.0

Re: SwitchKeyboardLayout

VINRARUS
Упс... Извиняюсь - я перепутал тему...
Но специально (чтобы исправиться ;) ) поставил это расширение версии 1.27 (правильно ведь?) и проверил.
Меню работает и контекстное тоже. Может галки какие нужно потыкать?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]