Alguém sabe como fazer com que ctrl+n e ctrl+p naveguem para cima e para baixo na barra de endereços de um navegador em um layout personalizado do Ukelele em um Mac, como os layouts integrados fazem?
Um recurso menos conhecido, talvez não documentado, de vários navegadores é que você pode navegar para baixo com ctrl+ pe para cima com ctrl+ nna barra de endereços em um Mac, como com as setas para baixo/cima e tab/ shift- tab. Eu costumo usar os ctrlatalhos, pois eles são os mesmos no Vim. Isso funciona com qualquer layout de teclado integrado no Mac, por exemplo, "US" ou "Swedish".
Criei este layout personalizado no Ukelele com base no QWERTY dos EUA (removi uma camada para atender ao limite de caracteres):
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--Created by Ukelele version 396 on 2024-10-10 at 11:25 (EEST)-->
<!--Last edited by Ukelele version 396 on 2024-10-12 at 17:44 (EEST)-->
<keyboard group="126" id="-8526" name="US-SV" maxout="1">
<layouts>
<layout first="0" last="17" mapSet="ANSI" modifiers="Modifiers"/>
<layout first="18" last="18" mapSet="JIS" modifiers="Modifiers"/>
<layout first="21" last="23" mapSet="JIS" modifiers="Modifiers"/>
<layout first="30" last="30" mapSet="JIS" modifiers="Modifiers"/>
<layout first="33" last="33" mapSet="JIS" modifiers="Modifiers"/>
<layout first="36" last="36" mapSet="JIS" modifiers="Modifiers"/>
<layout first="194" last="194" mapSet="JIS" modifiers="Modifiers"/>
<layout first="197" last="197" mapSet="JIS" modifiers="Modifiers"/>
<layout first="200" last="201" mapSet="JIS" modifiers="Modifiers"/>
<layout first="206" last="207" mapSet="JIS" modifiers="Modifiers"/>
</layouts>
<modifierMap id="Modifiers" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyShift"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="anyOption"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="command"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyControl"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="`"/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" output="e"/>
<key code="15" output="r"/>
<key code="16" output="y"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="-"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="]"/>
<key code="31" output="o"/>
<key code="32" output="u"/>
<key code="33" output="["/>
<key code="34" output="i"/>
<key code="35" output="p"/>
<key code="36" output="
"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="'"/>
<key code="40" output="k"/>
<key code="41" output=";"/>
<key code="42" output="\"/>
<key code="43" output=","/>
<key code="44" output="/"/>
<key code="45" output="n"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="	"/>
<key code="49" output=" "/>
<key code="50" output="`"/>
<key code="51" output=""/>
<key code="53" output=""/>
<key code="64" output=""/>
<key code="65" output=""/>
<key code="66" output=""/>
<key code="67" output="*"/>
<key code="69" output="+"/>
<key code="70" output=""/>
<key code="71" output=""/>
<key code="72" output=""/>
<key code="75" output="/"/>
<key code="76" output=""/>
<key code="77" output=""/>
<key code="78" output="-"/>
<key code="79" output=""/>
<key code="80" output=""/>
<key code="81" output="="/>
<key code="82" output="0"/>
<key code="83" output="1"/>
<key code="84" output="2"/>
<key code="85" output="3"/>
<key code="86" output="4"/>
<key code="87" output="5"/>
<key code="88" output="6"/>
<key code="89" output="7"/>
<key code="91" output="8"/>
<key code="92" output="9"/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="106" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
<keyMap index="1">
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output=""/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" output="E"/>
<key code="15" output="R"/>
<key code="16" output="Y"/>
<key code="17" output="T"/>
<key code="18" output="!"/>
<key code="19" output="@"/>
<key code="20" output="#"/>
<key code="21" output="$"/>
<key code="22" output="^"/>
<key code="23" output="%"/>
<key code="24" output="+"/>
<key code="25" output="("/>
<key code="26" output="&"/>
<key code="27" output="_"/>
<key code="28" output="*"/>
<key code="29" output=")"/>
<key code="30" output="}"/>
<key code="31" output="O"/>
<key code="32" output="U"/>
<key code="33" output="{"/>
<key code="34" output="I"/>
<key code="35" output="P"/>
<key code="36" output="
"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="""/>
<key code="40" output="K"/>
<key code="41" output=":"/>
<key code="42" output="|"/>
<key code="43" output="<"/>
<key code="44" output="?"/>
<key code="45" output="N"/>
<key code="46" output="M"/>
<key code="47" output=">"/>
<key code="48" output="	"/>
<key code="49" output=" "/>
<key code="50" output="~"/>
<key code="51" output=""/>
<key code="53" output=""/>
<key code="64" output=""/>
<key code="65" output=""/>
<key code="66" output=""/>
<key code="67" output="*"/>
<key code="69" output="+"/>
<key code="70" output=""/>
<key code="71" output=""/>
<key code="72" output=""/>
<key code="75" output="/"/>
<key code="76" output=""/>
<key code="77" output=""/>
<key code="78" output="-"/>
<key code="79" output=""/>
<key code="80" output=""/>
<key code="81" output="="/>
<key code="82" output="0"/>
<key code="83" output="1"/>
<key code="84" output="2"/>
<key code="85" output="3"/>
<key code="86" output="4"/>
<key code="87" output="5"/>
<key code="88" output="6"/>
<key code="89" output="7"/>
<key code="91" output="8"/>
<key code="92" output="9"/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="106" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
<keyMap index="2">
<key code="0" output="ä"/>
<key code="1" output="s"/>
<key code="2" output=""/>
<key code="3" output=""/>
<key code="4" output=""/>
<key code="5" output=""/>
<key code="6" output=""/>
<key code="7" output=""/>
<key code="8" output=""/>
<key code="9" output=""/>
<key code="10" output=""/>
<key code="11" output=""/>
<key code="12" output=""/>
<key code="13" output="å"/>
<key code="14" output="€"/>
<key code="15" output=""/>
<key code="16" output=""/>
<key code="17" output=""/>
<key code="18" output=""/>
<key code="19" output=""/>
<key code="20" output=""/>
<key code="21" output=""/>
<key code="22" output=""/>
<key code="23" output=""/>
<key code="24" output=""/>
<key code="25" output=""/>
<key code="26" output=""/>
<key code="27" output="–"/>
<key code="28" output=""/>
<key code="29" output=""/>
<key code="30" output=""/>
<key code="31" output="ö"/>
<key code="32" output=""/>
<key code="33" output=""/>
<key code="34" output="i"/>
<key code="35" output="å"/>
<key code="36" output="
"/>
<key code="37" output=""/>
<key code="38" output=""/>
<key code="39" output=""/>
<key code="40" output=""/>
<key code="41" output=""/>
<key code="42" output=""/>
<key code="43" output=""/>
<key code="44" output=""/>
<key code="45" output=""/>
<key code="46" output=""/>
<key code="47" output=""/>
<key code="48" output="	"/>
<key code="49" output=""/>
<key code="50" output=""/>
<key code="51" output=""/>
<key code="53" output=""/>
<key code="64" output=""/>
<key code="65" output=""/>
<key code="66" output=""/>
<key code="67" output=""/>
<key code="69" output=""/>
<key code="70" output=""/>
<key code="71" output=""/>
<key code="72" output=""/>
<key code="75" output=""/>
<key code="76" output=""/>
<key code="77" output=""/>
<key code="78" output=""/>
<key code="79" output=""/>
<key code="80" output=""/>
<key code="81" output=""/>
<key code="82" output=""/>
<key code="83" output=""/>
<key code="84" output=""/>
<key code="85" output=""/>
<key code="86" output=""/>
<key code="87" output=""/>
<key code="88" output=""/>
<key code="89" output=""/>
<key code="91" output=""/>
<key code="92" output=""/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="106" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
<keyMap index="3">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output=""/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" output="e"/>
<key code="15" output="r"/>
<key code="16" output="y"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="-"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="]"/>
<key code="31" output="o"/>
<key code="32" output="u"/>
<key code="33" output="["/>
<key code="34" output="i"/>
<key code="35" output="p"/>
<key code="36" output="
"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="'"/>
<key code="40" output="k"/>
<key code="41" output=";"/>
<key code="42" output="\"/>
<key code="43" output=","/>
<key code="44" output="/"/>
<key code="45" output="n"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="	"/>
<key code="49" output=" "/>
<key code="50" output="`"/>
<key code="51" output=""/>
<key code="53" output=""/>
<key code="64" output=""/>
<key code="65" output=""/>
<key code="66" output=""/>
<key code="67" output="*"/>
<key code="69" output="+"/>
<key code="70" output=""/>
<key code="71" output=""/>
<key code="72" output=""/>
<key code="75" output="/"/>
<key code="76" output=""/>
<key code="77" output=""/>
<key code="78" output="-"/>
<key code="79" output=""/>
<key code="80" output=""/>
<key code="81" output="="/>
<key code="82" output="0"/>
<key code="83" output="1"/>
<key code="84" output="2"/>
<key code="85" output="3"/>
<key code="86" output="4"/>
<key code="87" output="5"/>
<key code="88" output="6"/>
<key code="89" output="7"/>
<key code="91" output="8"/>
<key code="92" output="9"/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="106" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
<keyMap index="4">
<key code="0" output=""/>
<key code="1" output=""/>
<key code="2" output=""/>
<key code="3" output=""/>
<key code="4" output=""/>
<key code="5" output=""/>
<key code="6" output=""/>
<key code="7" output=""/>
<key code="8" output=""/>
<key code="9" output=""/>
<key code="10" output=""/>
<key code="11" output=""/>
<key code="12" output=""/>
<key code="13" output=""/>
<key code="14" output=""/>
<key code="15" output=""/>
<key code="16" output=""/>
<key code="17" output=""/>
<key code="18" output=""/>
<key code="19" output=""/>
<key code="20" output=""/>
<key code="21" output=""/>
<key code="22" output=""/>
<key code="23" output=""/>
<key code="24" output=""/>
<key code="25" output=""/>
<key code="26" output=""/>
<key code="27" output=""/>
<key code="28" output=""/>
<key code="29" output=""/>
<key code="30" output=""/>
<key code="31" output=""/>
<key code="32" output=""/>
<key code="33" output=""/>
<key code="34" output=""/>
<key code="35" output=""/>
<key code="36" output="
"/>
<key code="37" output=""/>
<key code="38" output=""/>
<key code="39" output=""/>
<key code="40" output=""/>
<key code="41" output=""/>
<key code="42" output=""/>
<key code="43" output=""/>
<key code="44" output=""/>
<key code="45" output=""/>
<key code="46" output=""/>
<key code="47" output=""/>
<key code="48" output="	"/>
<key code="49" output=""/>
<key code="50" output=""/>
<key code="51" output=""/>
<key code="53" output=""/>
<key code="55" output=""/>
<key code="58" output=""/>
<key code="64" output=""/>
<key code="65" output=""/>
<key code="66" output=""/>
<key code="67" output=""/>
<key code="69" output=""/>
<key code="70" output=""/>
<key code="71" output=""/>
<key code="72" output=""/>
<key code="75" output=""/>
<key code="76" output=""/>
<key code="77" output=""/>
<key code="78" output=""/>
<key code="79" output=""/>
<key code="80" output=""/>
<key code="81" output=""/>
<key code="82" output=""/>
<key code="83" output=""/>
<key code="84" output=""/>
<key code="85" output=""/>
<key code="86" output=""/>
<key code="87" output=""/>
<key code="88" output=""/>
<key code="89" output=""/>
<key code="91" output=""/>
<key code="92" output=""/>
<key code="96" output=""/>
<key code="97" output=""/>
<key code="98" output=""/>
<key code="99" output=""/>
<key code="100" output=""/>
<key code="101" output=""/>
<key code="103" output=""/>
<key code="105" output=""/>
<key code="106" output=""/>
<key code="107" output=""/>
<key code="109" output=""/>
<key code="111" output=""/>
<key code="113" output=""/>
<key code="114" output=""/>
<key code="115" output=""/>
<key code="116" output=""/>
<key code="117" output=""/>
<key code="118" output=""/>
<key code="119" output=""/>
<key code="120" output=""/>
<key code="121" output=""/>
<key code="122" output=""/>
<key code="123" output=""/>
<key code="124" output=""/>
<key code="125" output=""/>
<key code="126" output=""/>
</keyMap>
</keyMapSet>
<keyMapSet id="JIS">
<keyMap index="0" baseMapSet="ANSI" baseIndex="0">
<key code="512" output=""/>
</keyMap>
<keyMap index="1" baseMapSet="ANSI" baseIndex="1">
<key code="512" output=""/>
</keyMap>
<keyMap index="2" baseMapSet="ANSI" baseIndex="2">
<key code="512" output=""/>
</keyMap>
<keyMap index="3" baseMapSet="ANSI" baseIndex="3">
<key code="512" output=""/>
</keyMap>
<keyMap index="4" baseMapSet="ANSI" baseIndex="4">
<key code="512" output=""/>
</keyMap>
</keyMapSet>
</keyboard>
Com esse layout selecionado, nada acontece quando pressiono ctrl+n ou ctrl+p na barra de endereços do Chrome ou Firefox. Alguém sabe o porquê? As combinações de teclas funcionam no Neovim rodando no kitty, então elas são registradas corretamente.
Tentei mapear ctrl+ npara a saída "n" diretamente alterando:
- <key code="45" output=""/>
+ <key code="45" output="n"/>
Em <keyMap index="5">
(a ctrlcamada), mas isso não funciona; somente "n" é a saída então. Eu tentei o mesmo para ctrl+ pcom o código de tecla 35, resultando no mesmo problema.
Consegui resolver o problema vinculando ctrl+ nà tecla de seta para baixo (

) e ctrl+ p à tecla de seta para cima (
) assim:Não tenho certeza se é assim que ele está vinculado, por exemplo, o layout padrão do Mac US, mas parece se comportar exatamente da mesma forma. Agora posso mover para baixo/cima na barra de endereços do Chrome com ctrl+ n/ p.