iPadで外部キーボードを利用するときもコピー・カット・切り取りがしたい
とりあえずIME ONでも動いたmeganii.icon
やっぱりIME ON のときcommand + cを押下したとき、cのキー入力が入ってしまうのは要調査
https://gyazo.com/4a7072ffa7971b84f4e3966844d12a14
前提
iPad Pro 11 inch (第2世代)
iPad OS 15.4.1
利用外部キーボード
設定 > Safari > 「デスクトップ用のWebページを表示」を有効
これにより、userAgentがデスクトップ用になり、外部キーボードでの範囲選択が有効になる
iPadOS Safariとして動作すると、外部キーボードによる
UserScript(調整中)
iPadで外部キーボードを利用するときにコピー・カット・切り取りがしたい
iPad Pro x Logicool Folio Touch Keyboard Case with Trackpadの環境だと、日本語入力モードのときはctrl+c, ctrl+v, ctrl+xがうまく働かず、単にc, v, xが入力されてしまうのは要調査
英字モードに切り替えると正常動作する
addEventListener("keydown", (e) => console.log(e))を実行すると、どちらかが原因なのかわかりますtakker.icon
押しても何も表示されない場合は、iPad Safariがキーイベントをそもそも発生させていない
以下のとおり、ctrl+c(command+c)をMousetrapでキャッチしているつもり、かつ、KeyboardEventは日本語入力モード時も cキー押下時のイベントは搬出しているみたいmeganii.icon
入力確定前だとMousetrapの挙動が違うのかな
code:js
console.log('Copy');
try {
const text = caret().selectedText;
if (!text) return;
await navigator.clipboard.writeText(text);
} catch (e: unknown) {
console.error(e);
alert(Faild to copy:\n${JSON.stringify(e)});
}
return false;
});
英字入力モード
https://gyazo.com/260eb55fc4544a958623891f65204f81
日本語入力モード
https://gyazo.com/8ea2251516e4256fa0e69f24981c8745
https://gyazo.com/3a508993afb31639733cd96b71568df5
日本語モードだとkeyCode:229、英字モードだとkeyCode: 67の違いがあった
https://gyazo.com/181866da20d10bb5503612a7ba1d7d7d
ctrl+x, ctrl+cの場合、keyCode 229
ctrl+vの場合、正しくkeyCode86になるっぽい。謎。。。
Mousetrapは数年前から開発が停止している
Mousetrapをやめてイベント処理を自前で書き直す他なさそうです
なるほど、ありがとうございます!試してみますmeganii.icon
Mousetrap をやめて、自前でハンドリングしたところIME ONでも動きました!!meganii.icon