― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2016年11月13日(日) 20:45 
Thunderbird 45.4.0
windows 10

現在「Menu wizard」というアドオンを利用しているのですが、
次の項目のホットキーが効かず、機能しておりません。

・メッセージフィルタ
・メッセージにフィルタを適用
・フォルダにフィルタを適用

通常メニューの「ツール→メッセージフィルタ」を選択して、
フィルタを使用するフォルダを選択後実行すると移動するのですが、
ショートカットキーで操作をできるようにしたいと思っています。

Menu wizardの項目設定画面の各種「コマンド」部分が空欄の為かもしれないのですが、
具体的なコマンドコードもわかっておりません…。

現在このような状況なのですが解決策ご存知の方がいらっしゃいましたら、ぜひご教授ください><
(情報不足あったらすいません!すぐに追加します)


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2016年11月13日(日) 22:46 
オフライン

登録日時: 2013年12月26日(木) 09:33
記事: 686
お住まい: 太陽系、地球、日本、ふてニャン県
va17 さんが書きました:
現在「Menu wizard」というアドオンを利用しているのですが、
次の項目のホットキーが効かず、機能しておりません。
・メッセージフィルタ
・メッセージにフィルタを適用
・フォルダにフィルタを適用

アドオンのカストマイズならアドオンの作者さんにお聞きください、でおしまいですが、それじゃあんまりですので。

「次の項目のホットキーが効かず」だから、他の項目に関してはできた、ということだと仮定します。
その場合は、Thunderbirdや他のアドオンのホットキーの定義が優先されているのだと思います。
そのアドオンがホットキーの設定をサポートしているのならば、空いているホットキーを使えば済む、という話だと思います。
Ctrl+Shift+Alt+Zとかだと、おそらく空いているでしょう。

直感的にわかりやすいのは、Custom Buttonsというアドオンを入れて、
(1) ツールバーボタンを定義し、そのボタンで、「Menu wizard」の「メッセージフィルタ」のメニューが行っているのと同じようにあるファンクションを呼びだし、
(大体はoncommandで指定で、コマンドコントローラーを使ってcommandで、は少ないはず)
(2) Custom Buttonsで作ったツールバーボタンの定義で、ボタンにホットキーをアサインする、
という、2段階で設定する方法です。
こういった手法は、Greesemonkeyで行う場合にも適用できるでしょうし、アドオンのメニューやボタンだけでなく、ThunderbirdやFirefoxのメニュー/ボタンにも適用できます。

正攻法は、Thunderbirdの持っているホットキーの定義を書き換えて、あるホットキーに「Menu wizard」の「メッセージフィルタ」のメニューが行っているのと同じファンクションを割り当てる、なんですが、
Custom Buttonsで作ったツールバーボタンのホットキーの定義に、デフォールトアクションを無効にする、というオプションがあるから、
一々現在のホットキーの定義を調べる必要がないCustom Buttonsを使って手抜き、という方法です。

Thunderbirdの持っているホットキーの定義、も、HTMLのフォームの要素などとそっくりな、XULで定義された要素で定義されているだけですから、
Custom Buttonsのスクリプトで、document.getElementIdやelement.setAttributeなどで、自由にアクセスして内容をチェックして変更できます。
現在のホットキーの定義も、Custom Buttonsのボタンに、内容的には非常に簡単なスクリプトを書くだけで、容易に知ることができますし、割り当てを変更することも、element.setAttributeなどで簡単にできます。
XULの要素のタグ名やIDなどは、DOM Imspecterなどでかなり簡単に知ることができます。
コンテキストメニューの要素については、クリックして要素を表示、ができないので、定義を探すのにちょっと苦労しますが。

なお、Custom ButtonsにしろGreesemonkeyにしろ、ちょこっとスクリプトを書くだけで、あるいは、どこからかもらってきたスクリプトを貼り付けるだけで、自分用の単機能のアドオンを作ってボタンなどを追加したのと同等のことができてしまいます。
その「ちょこっとスクリプト」は、chrome環境で動きますから、なんでもできてしまいます。
危険なスクリプトを貼り付けてしまえば、簡単にそのスクリプトにパソコンを乗っとられます。
自己責任でお使いください。

もう一つの方法は、アドオンのxpiファイルの拡張子をzipに書き換えて解凍し、必要な個所をちょこっと書き換えて圧縮し(拡張子はzipのままでもxpiでもどっちでも構わない)、自分専用版のアドオンを作ってしまう、です。
デフォールトでホットキーを使っているものがあったら、それと同じように、空いているホットキーにあるファンクションを割り当てるだけ。
わけのわからないカストマイズ方法で苦労するよりも、圧倒的に早くて簡単なケースもあります。

ご参考までに。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年11月14日(月) 20:24 
横から失礼します。

Menu Wizard(現時点で 5.05)
https://addons.mozilla.org/ja/thunderbi ... nu-wizard/
を使うことを前提として、コマンドとキーボードショートカットの設定に関して知っていることを書きます。
ただし、専門知識を持たない一介のエンドユーザーであるぼくが、自己流で試してきた経験則に過ぎないことをご承知おきください。

Menu Wizard の [ホットキー] の設定([Shift] + [Alt] + [M])は、Thunderbird(や一部のアドオン)が既定値として持っているキーボードショートカット(ホットキー)をカスタマイズする機能です。
メッセージフィルタ関連の項目は、もともとキーボードショートカットが割り当てられていないので、Menu Wizard の [ホットキー] からは設定できません。
新たにキーボードショートカットを追加設定することになります。

【手順 -- 概略】
Menu Wizard の設定画面(タブ)を開きます。
画面左上に「+ Thunderbird」「+ メニューバー」「+ タブ コンテキスト メニュー」…… といった項目が並んでいると思います。

とりあえず次の項目を展開します。(+ メニューバー > + ツール でもかまいませんが...。)
+ Thunderbird
  + appmenuSecondaryPane
   + メッセージフィルタ
     + メッセージフィルタ     …(A)
     + フォルダにフィルタを適用  …(B)
     + メッセージにフィルタを適用 …(C)

(A)の [メッセージフィルタ] の先頭にあるレンチ型のアイコンをクリックすると、[プロパティ:メッセージフィルタ] の設定画面が開きます。
ここにある設定項目のうち、[コマンド:] の [onCommand] 欄に次のコードを入力します。
goDoCommand('cmd_displayMsgFilters');

次に [キーボードショートカット] にチェックを付け、好みのキーを割り当てます。設定したいキーを実際に押すと、そのキーの組み合わせが自動的に入力されます。
ここでは仮に次のようにします。
[Ctrl] + [Alt] + [F]

【注】既存のキーアサインと重複しないようにしてください。重複していると警告が出ます。

[OK] ボタンで設定画面を閉じ、Thunderbird を再起動します。

起動後、Thunderbird のメイン画面で [Ctrl] + [Alt] + [F] を押すと、メッセージフィルタのウィンドウが表示されるようになっているはずです。

同じ要領で(B)(C)を設定します。
(B)のコマンドは
goDoCommand('cmd_applyFilters');

(C)のコマンドは
goDoCommand('cmd_applyFiltersToSelection');

―― となります。
これらの command は、DOM Inspector でメニュー項目の [メッセージフィルタ] や [フォルダにフィルタを適用] や [メッセージにフィルタを適用] を調べて取得しています。

Menu Wizard でキーボードショートカットを設定すると、追加したそれらが該当メニューに表示されます。
上記の例ですと、メールツールバー右端にある [三] 型のメニューボタン(アプリメニュー)を開いて [メッセージフィルタ] をたどると、サブメニューに表示される [メッセージフィルタ] に [Ctrl + Alt + F] というキーアサインが追加されているのがわかるはずです。
Menu Wizard の設定画面で、+ Thunderbird > + appmenuSecondaryPane ではなく + メニューバー > + ツール から設定を施したのなら、Thunderbird のメニューバーの項目にキーアサインが表示されるようになるのがわかるでしょう。

どちらで設定しても、グローバルなコマンドとして設定しているので、キーボードショートカットは働くはずです。

新しく追加設定されたキーボードショートカット(ホットキー)は、Menu Wizard の [ホットキー] の設定からキーアサインを変更できるようになります。

とりあえず以上です。
おかしなことを書いていたら容赦なくツッコミを入れてください。ぼくも勉強させていただきたいと思います。

(補足)
キーボードショートカットではなく、アクセスキーを使ったキーボード操作は、特別な設定を施さなくても使えます。
例えば、[メッセージフィルタ] のウィンドウを開きたいのなら、[Alt] - [T] - [F] と押せばいい、といった具合です。
[Alt] - [T] が [メニューバー] -> [ツール] を開くことを含め、各メニュー名の末尾に記されたアクセスキー(アンダースコア付きのアルファベット)に注目することで、どのキーを操作するかは一目瞭然です。
 [メッセージフィルタ(F)]
 [フォルダにフィルタを適用(R)]
 [メッセージにフィルタを適用(U)]

ユーザーが任意にキーボードショートカットを設定する方法はいくつかあり、WADA さんが基本点をご説明くださっています。
アドオンを使ったナビゲーションのカスタマイズは、ユーザーの好みに応じて深い部分まで簡単に変更できるメリットがある半面、そのアドオンが動作不良を起こしたり未対応になったときは変更点が全滅してしまうというデメリットがついて回ります。
カスタマイズの度合が大きい環境に慣れるほど、標準状態の環境に戻ったとき作業効率が一気に落ちることもあります。
もし既定のアクセスキーで許容できるなら、余分なカスタマイズをしない分だけ動作の安定性に期待が持てますし、環境が変わっても戸惑うことが少ないと思います。
最終的にはユーザーの判断次第なのですが、目先のことだけでなく中・長期的な観点も視野に入れておくことを、お勧めしておきます。

_________________
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2016年11月15日(火) 06:29 
オフライン

登録日時: 2013年12月26日(木) 09:33
記事: 686
お住まい: 太陽系、地球、日本、ふてニャン県
偶然的通行人 さんが書きました:
Menu Wizard の [ホットキー] の設定([Shift] + [Alt] + [M])は、Thunderbird(や一部のアドオン)が既定値として持っているキーボードショートカット(ホットキー)をカスタマイズする機能です。
メッセージフィルタ関連の項目は、もともとキーボードショートカットが割り当てられていないので、Menu Wizard の [ホットキー] からは設定できません。
新たにキーボードショートカットを追加設定することになります。

[Shift] + [Alt] + [M]、が関係するということで、先に書いたCustom Buttonのちょこっとスクリプトで<key>のアトリビュートを見て、ちょっと気になったことがあります。

Thunderbird 45.4.0でのKeyMapのM/mの設定:
key = M , modifiers = accel , command = cmd_newMessage , id = key_newMessage
key = m , oncommand = goDoCommand('cmd_toggleRead'); , id = key_toggleRead
key = m , modifiers = accel, shift , oncommand = goDoCommand('cmd_moveToFolderAgain') , id = key_moveToFolderAgain
ここで、Ctrlキー(マックだとCommand)がaccelで、Altキー(マックだとOption)はaltかな。「 <key>のmodifiers
(Deleteキーの設定の意味がわかりにくくなるので、LightningはDisableにしてチェックしています)
(Greesemonkeyあたりも入れていますが、ここは変えていないと思います)

Mは、普通のキーボードで普通の設定だと、Shift+mキーで入力することになるはず。
Caps Lockとかキーの入れ替えをしているとどうなるか知りませんが。
上記のKeyMapの場合、[Shift] + [Alt] + [M]は、どこに行くのでしょう?
key=M,modifiers=shift,alt は、Caps Lock=On用で、key=m,modifiers=shift,alt は、Caps Lock=Off用?

[追記 2016/11/15 14:30]
で、既存のkeymapしか変更させてくれない場合には、
(1) DOM Inspecterで見て適当な<keyset>のid=”IDX”を選び、getElementById(IDX”)でkeysetを得て、
(2) その下に、createElement、appendChildで、idがユニークで、キーバインディングが重複しない、<key>を追加してやればいいことになります。
再起動時にうまくいくようにするには、Custom Buttonsのボタンの初期化スクリプトで上記を行えばいいのですが、
Menu Wizard の [ホットキー] の設定で変えたものを、Menu Wizard のアドオンが再起動時に再設定を行う前に上記を行わせる必要があるので、
そのあたりで苦労しそうですけどね。
Menu Wizardで「新たにキーボードショートカットを追加設定する」方は、おそらく、自前の<keyset>を持っていて、そこに自由に<key>の追加ができるのでしょう。
[追記終わり]


最後に編集したユーザー WADA [ 2016年11月15日(火) 15:16 ], 累計 3 回

通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年11月15日(火) 06:54 
オフライン

登録日時: 2013年12月26日(木) 09:33
記事: 686
お住まい: 太陽系、地球、日本、ふてニャン県
偶然的通行人 さんが書きました:
Menu Wizard(現時点で 5.05)
https://addons.mozilla.org/ja/thunderbi ... nu-wizard/
を使うことを前提として、コマンドとキーボードショートカットの設定に関して知っていることを書きます。
ただし、専門知識を持たない一介のエンドユーザーであるぼくが、自己流で試してきた経験則に過ぎないことをご承知おきください。

いつもながらの、詳しい解説ありがとうございます。

jsファイルもtxtファイルもアップロードさせてくれないので、100行くらいになりますが、KeyMapをCustom Buttonsのボタンで見るための、ちょこっとスクリプトを貼り付けておきます。
やっていることは、document.getElementsByTagName("key")で<key>タグを取り出し、KeyTag.attributesで<key>タグの属性名を取り出し、KeyTag.getAttribute(属性名)で属性値を取り出し、それをコンソールに出力するだけの、非常に単純なスクリプトです。
keyの値が空白だけではなくて""(長さゼロの文字列)のものがあったり、oncomanndの値の中にCRやLFがあったりして、出力を乱すのを避けるためのコードと、
属性名の並びを見やすくしたり、コンソールへの出力の順番を簡単に見やすいようにするために苦労したコードと、
ThunderbirdとFirefoxで異なるコンソール出力に対応するためのコードが、
かなりの部分を占めています。
[追記]大文字と小文字が同じところにリストされるようにした修正版に、更新しました。[追記おわり]
コード:
/*CODE*/

var IamFirefox = false ; // true or false
var IamThunderbird = true ; // true or false

if(true==IamFirefox)
{
var Firefox={};
Components.utils.import("resource://gre/modules/Console.jsm",Firefox);
var console=Firefox.console;
var logger="log";
}
else if(true==IamThunderbird || !IamFirefox || !IamThunderbird)
{
var console =
Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
var logger="logStringMessage" ;
}

// *******************************************************:
// Firefox Browser Console
// var Firefox={};
// Components.utils.import("resource://gre/modules/Console.jsm",Firefox);
// var console=Firefox.console;
// console.log( string ) ;
// Thunderbird Error Console
// var console =
// Components.classes["@mozilla.org/consoleservice;1"]
// .getService(Components.interfaces.nsIConsoleService);
// console.logStringMessage( string ) ;
// *******************************************************:

var msg=new Array();

var keyworddef = {} ;
keyworddef["key"] = true;
keyworddef["keycode"] = true;
keyworddef["modifiers"] = true;
keyworddef["observes"] = true;
keyworddef["command"] = true;
keyworddef["oncommand"] = true;
keyworddef["onpopupshowing"] = true;
keyworddef["onpopuphiding"] = true;
keyworddef["disabled"] = true;
keyworddef["name"] = true;
keyworddef["id"] = true;

var keytags = document.getElementsByTagName("key");

var KeyTable = {}
var SortKeyTable = new Array();

for(var nn=0;nn<keytags.length;nn++)
{
var KeyTag=keytags[nn] ;

var additionalkeyworddef={} ;
var ATTR=KeyTag.attributes ;
for(var pp=0;pp<ATTR.length;pp++)
{
var Attribute=ATTR[pp];
if( keyworddef[Attribute.name] ) continue;
additionalkeyworddef[Attribute.name] = true;
}

var Data={};
for(var AttribName in keyworddef)
{
// to put upper case and lower case at same place
Data["LowKey"] = "" ;
if( KeyTag.hasAttribute(AttribName) ) Data[AttribName] = KeyTag.getAttribute(AttribName) ;
}
for(var AttribName in additionalkeyworddef)
{
Data["LowKey"] = "" ; // to put upper case and lower case at same place
if( KeyTag.hasAttribute(AttribName) ) Data[AttribName] = KeyTag.getAttribute(AttribName) ;
}
var NoLowKeyData = " " ;
for(var AttribName in Data)
{
// put upper case and lower case at same place
if(Data["key"]) Data["LowKey"] = Data["key"].toLowerCase() ;
else Data["LowKey"] = NoLowKeyData ;
}

// for sorting
var Kpart; if(Data["key"]) Kpart="3" + Data["key"] ;
else if(" "==Data["key"]) Kpart="2" + Data["key"] ;
else if("" ==Data["key"]) Kpart="1" + " " ;
else Kpart="0" + " " ;
var Cpart; if(Data["keycode"]) Cpart="1" + Data["keycode"] ;
else Cpart="0" ;
var Mpart; if(Data["modifiers"]) Mpart="1" + Data["modifiers"] ;
else Mpart="0" ;
var SortKey = Data["LowKey"] + Kpart + Cpart + Mpart + nn ;
SortKeyTable[SortKeyTable.length] = SortKey ;
KeyTable[SortKey] = Data ;

}

SortKeyTable.sort() ;
for(var kk=0;kk<SortKeyTable.length;kk++)
{
var KeyValue = SortKeyTable[kk] ;
var Data = KeyTable[KeyValue] ;

var Work = new Array() ;

// modify key data for reading key value
if ( " "==Data["key"] ) Data["key"] = '" "' ;
else if( Data["key"] ) Data["key"] = Data["key"] + ' ' ;
else if( "" ==Data["key"] ) Data["key"] = Data["key"] + '""' ;
else Data["key"] = Data["key"] = 'N/A' ;

for(var AttrName in Data)
{
var AttrValue = Data[AttrName].split("\n").join(" ").split("\r").join(" ") ;
Work[Work.length] = AttrName + " = " + AttrValue ;
}
var ReportLine = Work.join(" , ") ;
msg[msg.length] = ReportLine ;
}

// convert string array to string for logging
var LogData = "Key Map" + "\n" + msg.join("\n") ;
console[logger](LogData) ;


最後に編集したユーザー WADA [ 2016年11月16日(水) 05:16 ], 累計 1 回

通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年11月15日(火) 20:17 
WADA さん、お世話になります。

WADA さんが書きました:
[Shift] + [Alt] + [M]、が関係するということで、先に書いたCustom Buttonのちょこっとスクリプトで<key>のアトリビュートを見て、ちょっと気になったことがあります。

 (snip)

Mは、普通のキーボードで普通の設定だと、Shift+mキーで入力することになるはず。
Caps Lockとかキーの入れ替えをしているとどうなるか知りませんが。
上記のKeyMapの場合、[Shift] + [Alt] + [M]は、どこに行くのでしょう?

Menu Wizard をインストールしている環境では、[Shift] + [Alt] + [M] は Menu Wizard 自身が既定で持っているキーボードショートカット(s3menuwizard_openOptions_key)として、Menu Wizard の設定画面をストレートに開きます。 ...... という答えでいいのでしょうか?

[Shift] + [Alt] という組み合わせは珍しいと思います。
Thunderbird では、[Alt] + [M] はメニューバーの [メッセージ(M)] を展開するアクセスキーですし、続けて [M] キー押下で [別のフォルダに移動(M)] が開きます。メッセージ作成ウィンドウや検索欄などのテキストエリアにカーソルがあると、[Shift] + [M] は単純に大文字の "M" をインプットします。
きっちり [Shift] キーと [Alt] キーが押されたあと [M] キーを押さないと、タイミングによってはおかしな結果を招くことがあるかもしれません。
Menu Wizard を無効化すると、[Shift] + [Alt] + [M] はメニューバーの [メッセージ(M)] を展開する動作になります。

Thunderbird 本体はもちろん、多数のアドオンを導入している環境では、キーアサインが重複してしまっているケースは多いかもしれません。もっとも、キー操作を使わなければ不都合に出会わないだろうし、気にすることもないのでしょうけど......。

Menu Wizard が認識できている範囲での話になると思いますが、[ホットキー] の設定項目を見ると、重複しているキーアサインには警告表示が付きますから、そのあたりを手軽に把握することができ、各キーアサインを変更して重複を回避することが比較的簡単にできます。(変更結果を維持するためには、Menu Wizard が働いていることが前提になりますが...。)

しかし、あまりいじりすぎると(とくに Thunderbird や Firefox 本体のキーアサインを...)、Menu Wizard が導入されていない別環境の Thunderbird や Firefox を使った時などに、かえって混乱することがあります。

WADA さんが書きました:
jsファイルもtxtファイルもアップロードさせてくれないので、100行くらいになりますが、KeyMapをCustom Buttonsのボタンで見るための、ちょこっとスクリプトを貼り付けておきます。

ありがとうございます。
Thunderbird には Custom Buttons を入れていませんが、Firefox には入れているので、Key Map を調べる機会があったら使わせていただこうかと思います。
Firefox の場合は、ブラウザコンソール([Ctrl] + [Shift] + [J])に結果が出力されると考えていいのですよね。

_________________
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0


通報する
ページトップ
  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 6 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[158人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean