Open kiritannplum opened 1 year ago
「サイドボタン」ってどのボタンのことでしょう?
よく見るタイプだとこういうやつです。
てことはバックスペースキーということかしらね
すいません、わたしとsyuiloさんの間で認識のずれが発生しているように感じるので、一応認識を確認しておきたいのですが、 私はマウスのサイドボタンをネットブラウザなどのページの戻る・進むに使っていまして、それが一般的な使い方だと思っています。 バックスペースキーはそのような目的で使うことはなく、Windows10のchromeで試しましたがバックスペースキーを押してもブラウザのページは戻りませんでした。 またサイドボタンにバックスペースキーを割り当てているわけではありませんので、テキストを削除することにも使用できません。
syuiloさんは普段マウスのサイドボタンをどのように使用されているのでしょうか。
マウスのサイドボタンはコピー/ペーストに使ってますね サイドボタンを戻る用途で使う場合はバックスペースキーが送信されるものと思ってましたが違うっぽい?
戻るボタンが押されたときに何のキーが送られてくるのか情報募集中
https://developer.mozilla.org/ja/docs/Web/API/MouseEvent
3
: 第四ボタン。一般的にブラウザーの戻るボタン。4
: 第五ボタン。一般的にブラウザーの進むボタン。
これかも
chromeの戻るためのショートカットキーはChrome 52から[Alt]+[←]キーになっているようです。https://internet.watch.impress.co.jp/docs/news/1015279.html
https://developer.mozilla.org/ja/docs/Web/API/MouseEvent
3
: 第四ボタン。一般的にブラウザーの戻るボタン。4
: 第五ボタン。一般的にブラウザーの進むボタン。これかも
キーボードとは別の入力なのか
サイドの2つはマウス入力として取れる
これしゅいろさんみたいにサイドの2つをコピー/ペーストとかで使ってる場合もMouseEventは発火するのかしら
発火する場合戻る目的で押されたのかコピーで押されたのか判別する必要があるな
横ボタンがマクロ対応してるタイプのマウスだと、マクロの挙動が優先されそう
今使用しているLogicoolのG502 HEROというマウスの公式の設定ソフトからサイドボタンにコピーを割り当ててみましたが、キー入力を表示するソフトで確認したところCtrl+Cが送信されているようで、サイドボタンを押された表示は出なかったので、少なくとも私の環境ではMouseEventは発火しないのではないかと思います。
このようなページを見つけました https://so-zou.jp/web-app/tech/programming/javascript/event/handler/mouse/ ちょっと下がったところにある赤枠内でのマウスボタン入力を進む・戻るを割り当てているサイドボタンも含め検出できていてかつ、ブラウザが戻ってしまうのも無効化できています。 また、マウスの設定ソフトでコピーを割り当てた場合は反応しません。(私の環境の場合ですが) ただChromeとEdgeではできますが、Firefoxではサイドボタンの入力を検出できず、ブラウザも戻ってしまうのを確認しました。
参考になれば幸いです。
以下のサンプルコードを動かしてみたけど、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>
何が言いたいかというと、Misskey内で複数ウィンドウを開いていろいろ見ているときに癖でマウスのサイドボタンでページを戻ろうとして、Misskeyを開いているブラウザタブ丸ごと戻って開いていたウィンドウが消えてしまうので、Misskey内でウィンドウごとにその操作ができるようになれば便利だなあと思った次第です。 開発経験者ではないので実装可能かはわかりませんが、可能であればそのような機能を追加していただけると非常に助かります。