misskey-dev / misskey

🌎 A completely free and open interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
10.13k stars 1.38k forks source link

Misskey内のウィンドウ上でマウスのサイドボタンを押したときにそのウィンドウだけページを進んだり戻ったりできるようにしてほしい #10735

Open kiritannplum opened 1 year ago

kiritannplum commented 1 year ago

何が言いたいかというと、Misskey内で複数ウィンドウを開いていろいろ見ているときに癖でマウスのサイドボタンでページを戻ろうとして、Misskeyを開いているブラウザタブ丸ごと戻って開いていたウィンドウが消えてしまうので、Misskey内でウィンドウごとにその操作ができるようになれば便利だなあと思った次第です。 開発経験者ではないので実装可能かはわかりませんが、可能であればそのような機能を追加していただけると非常に助かります。

syuilo commented 1 year ago

「サイドボタン」ってどのボタンのことでしょう?

kiritannplum commented 1 year ago

よく見るタイプだとこういうやつです。 mousesidebutton

syuilo commented 1 year ago

てことはバックスペースキーということかしらね

kiritannplum commented 1 year ago

すいません、わたしとsyuiloさんの間で認識のずれが発生しているように感じるので、一応認識を確認しておきたいのですが、 私はマウスのサイドボタンをネットブラウザなどのページの戻る・進むに使っていまして、それが一般的な使い方だと思っています。 バックスペースキーはそのような目的で使うことはなく、Windows10のchromeで試しましたがバックスペースキーを押してもブラウザのページは戻りませんでした。 またサイドボタンにバックスペースキーを割り当てているわけではありませんので、テキストを削除することにも使用できません。

syuiloさんは普段マウスのサイドボタンをどのように使用されているのでしょうか。

syuilo commented 1 year ago

マウスのサイドボタンはコピー/ペーストに使ってますね サイドボタンを戻る用途で使う場合はバックスペースキーが送信されるものと思ってましたが違うっぽい?

syuilo commented 1 year ago

戻るボタンが押されたときに何のキーが送られてくるのか情報募集中

EbiseLutica commented 1 year ago

https://developer.mozilla.org/ja/docs/Web/API/MouseEvent

  • 3: 第四ボタン。一般的にブラウザーの戻るボタン。
  • 4: 第五ボタン。一般的にブラウザーの進むボタン。

これかも

kiritannplum commented 1 year ago

chromeの戻るためのショートカットキーはChrome 52から[Alt]+[←]キーになっているようです。https://internet.watch.impress.co.jp/docs/news/1015279.html

syuilo commented 1 year ago

https://developer.mozilla.org/ja/docs/Web/API/MouseEvent

  • 3: 第四ボタン。一般的にブラウザーの戻るボタン。
  • 4: 第五ボタン。一般的にブラウザーの進むボタン。

これかも

キーボードとは別の入力なのか

EbiseLutica commented 1 year ago

サイドの2つはマウス入力として取れる

syuilo commented 1 year ago

これしゅいろさんみたいにサイドの2つをコピー/ペーストとかで使ってる場合もMouseEventは発火するのかしら

syuilo commented 1 year ago

発火する場合戻る目的で押されたのかコピーで押されたのか判別する必要があるな

EbiseLutica commented 1 year ago

横ボタンがマクロ対応してるタイプのマウスだと、マクロの挙動が優先されそう

kiritannplum commented 1 year ago

今使用しているLogicoolのG502 HEROというマウスの公式の設定ソフトからサイドボタンにコピーを割り当ててみましたが、キー入力を表示するソフトで確認したところCtrl+Cが送信されているようで、サイドボタンを押された表示は出なかったので、少なくとも私の環境ではMouseEventは発火しないのではないかと思います。

kiritannplum commented 1 year ago

このようなページを見つけました https://so-zou.jp/web-app/tech/programming/javascript/event/handler/mouse/ ちょっと下がったところにある赤枠内でのマウスボタン入力を進む・戻るを割り当てているサイドボタンも含め検出できていてかつ、ブラウザが戻ってしまうのも無効化できています。 また、マウスの設定ソフトでコピーを割り当てた場合は反応しません。(私の環境の場合ですが) ただChromeとEdgeではできますが、Firefoxではサイドボタンの入力を検出できず、ブラウザも戻ってしまうのを確認しました。

参考になれば幸いです。

EbiseLutica commented 1 year ago

以下のサンプルコードを動かしてみたけど、Firefoxだと確かにサイドボタンでmousedownが発火しないっぽい 特定のブラウザ限定の隠し機能として割り切るなら別にいいかも。

<div id="a">Press Mouse Button at here</div>

<style>
div {
  background: #eee;
  padding: 16px;
  width: fit-content;
  border-radius: 12px;
  cursor: pointer;
}
</style>

<script>
window.onload = () => { 
  document.getElementById('a').addEventListener('mousedown', e => {
    e.preventDefault();
    alert(e.button);
  }, { passive: true });
};
</script>