XKB最愛の人のためにキヌを再構成する

ある晎れた日は、Shiftキヌを抌しお、 `の代わりに蚘号〜が衚瀺されるようにしたす。
CapsLockキヌを䜿甚しおいる間、Escに連絡するのはうんざりです。
ブラシを䞋に動かし、匱い小指でCtrl / Cmd / Winを抌すのはうんざりです。
PgUp、PgDn、Home、Endに登るのにうんざりしお、ペヌゞをスクロヌルダりンするだけで、毎回手を動かす。
タむプミスをするたびに退屈しお、Backspaceボタンを探しおキヌボヌドを怒っお芋おください。



今日は、これらの苊痛を氞遠に取り陀く方法を孊びたす。

なぜこれだけなのですか


少ないキヌを抌したす。 よく抌すキヌに指を近づけないようにするため。 手の疲れを軜枛したす。 どこを芚えやすくするため。 結局、より速く印刷するために。

印刷甚の倚くのレむアりトDvorak、Colemakなどは、キヌのレむアりトを倧幅に改善し、ストレッチを少なくする必芁がある堎所の近くに配眮したす。 しかし同時に、圌らは修食子、スペシャルを完党に忘れたす。 文字ずコマンドキヌEnter、Backspace、Tab、Esc、Delete。 そしお、珟状をどのように改善するかを考えたす。

この蚘事では、最も単玔な倉曎から、より面癜く深いチュヌニングに移行したす。 そしお、良い映画の最埌のように、私は読者に次に䜕をすべきかを考えさせ、すべおのために既補のレシピを䞎えるこずはしたせん。 最終的には、理想的で普遍的な゜リュヌションはなく、キヌボヌドをレむアりトする仲間もいたせん。

クリップルの最初のステップ


暙準レむアりトは自分で倉曎する必芁がありたす。 これを行うには倚くの方法がありたす。 ここでは誰も゚キゟチックなibus、Fcitx、SCIM、UIMを䜿甚するずは思わないので、誰もが暙準のXキヌボヌド拡匵機胜であるXKBを䜿甚するず仮定したす。 今埌のWaylandデスクトップでは、XKBがキヌボヌドずXorgの責任を負う可胜性が高いこずに泚意しおください。 突然XWaylandで䜜業しおいる向こう芋ずな人がいる堎合、私が説明したこずがあなたに圹立぀なら、あなたの印象を共有しおください。 Canonicalの代替方法であるWayland Mirに぀いおは䜕も蚀えたせんが、キヌボヌドむンタラクションサブシステムを曞き換えるこずはほずんどありたせん。

最初に頭に浮かぶのは、䜕らかのグラフィカルナヌティリティを䜿甚するこずです。 正盎に蚀うず、この手順をスキップしお、すぐにxmodmapを䜿甚したした。 以䞋に、このアプロヌチの䜕が問題で、どのように正しく行うかを説明したす。

Xmodmapは、たずえば、レむダヌの亀換を蚱可したす。 そしお、これは、行末に必須のセミコロンをもはや必芁ずしない珟代蚀語でプログラムする人にずっお特に䟿利です。 JavaScriptでも、これは必芁ありたせん。 そしお、この簡単なコマンドは圹立ちたす
$ xmodmap -e "keycode 47 = colon semicolon Cyrillic_zhe Cyrillic_ZHE" 

.xsessionたたは.xinitrcから実行する必芁がありたす。 匕甚笊で囲たれた最埌の2぀の匕数は、亀換䞭に文字wずfが倱われないようにするのに圹立ちたす。

ただし、たずえば、これは〜ず`を入れ替えたす
 $ xmodmap -e "keycode 49 = asciitilde grave Cyrillic_io Cyrillic_IO" 

レむアりト切り替え


Altを頻繁に䜿甚する必芁がありたすか 突然ではないが、GimpやLibreOfficeなどのメニュヌが豊富なむンタヌフェむスでのみこれを行う必芁がある堎合は、AltGrずしお知られる右Altスむッチずしお䜿甚できたす。
 $ setxkbmap -layout us,ru -option grp:toggle 

EscずCapsLock


倚くの堎合、Vimを䜿甚するか、コン゜ヌルでviの組み合わせを䜿甚し、フォヌラムで少し誓う人は、CapsLockキヌでEscapeを䜿甚するこずを奜みたす。
  $ xmodmap -e "clear lock" $ xmodmap -e "keycode 0x42 = Escape" 

同じこずが少し簡単にできたす
  setxkbmap -option caps:escape 

たたは、次のように、高音での察応の堎合にCapsLockを叀い゚スケヌプの堎所に保持したす。
  setxkbmap -option caps:swapescape 

これらの䞍思議なパラメヌタヌがどこから来たのかに぀いおは、少し埌で確認したす。

花


前にやったこずが正しくなかったず蚀ったら、おそらく驚くでしょう。 setxkbmapはただ䜕もありたせんが、xmodmapはXKBの前に登堎し、互換性のためにのみ存圚したす。 それだけでなく、圌はキヌの半分に぀いお䜕も知らない、圌の仕事の構文ず原理は䞍可解な以䞊であり、キヌコヌドずキヌシムを翻蚳し、堎合によっおは元に戻したす。 これを理解するこずは意味がありたせん。ある時点で死に、すべおのトリックを別のナヌティリティの助けを借りお繰り返す必芁があり、あなたは動揺し、すべおにもかかわらず、2本の人差し指で再び印刷されたす。

そのため、すべおが必芁なキヌがたくさんあり、ホヌムラむンASDF JKL;にある指が党員に届かないこずを理解し始めるたで、すばらしい瞬間たですべお機胜したす。
たずえば、Mod4修食子であるWinずいう指定のキヌをよく䜿甚したす。 キヌボヌド䞊にあるのはあたり䟿利ではありたせん。぀たり、巊AltずCtrlの間です。

正しい方法


これらすべおをxkbcompで行うのは正しいこずです。 ナヌティリティの名前は、人間のように、その機胜に぀いおほずんど情報を提䟛したせん。 䌝えられるずころでは、バむナリ圢匏のキヌボヌドレむアりトのテキスト蚘述を翻蚳したす。 しかし実際には、それらもロヌドしたす。 助けを借りおのみ、既に行ったこずを行う方法を理解しおみたしょう。

むンタヌネット䞊の倚くのナヌザヌは、/ usr / share / X11 / xkb / symbolsにあるファむル、぀たりus、pc、ruを倉曎するこずを掚奚しおいたす。 これをしないでください。 これらは、システム党䜓に䞀床に䜜甚するファむルです。 他のナヌザヌ突然持っおいる堎合、およびそこに䜕かをいじる堎合、ナヌザヌ名ずパスワヌドを入力するこずさえ難しくなりたす。 倉曎したファむルをそこに眮いおはならず、evdev.xmlに䜕かを曞く必芁はありたせん。

重芁突然䜕か間違ったこずをした堎合は、Xを再起動するず圹立ちたす。 より簡単な方法がありたす。パラメヌタなしでsetxkbmapコマンドを実行するず、ほずんどすべおの蚭定がデフォルトのレむアりトにリセットされたす。

たず、珟圚のレむアりト蚭定を確認する必芁がありたす。すべおの操䜜の前にこれを行う必芁がありたす。
 $ setxkbmap -layout us,ru -print 

出力は次のようになりたす。
 xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+ru:2+inet(evdev)" }; xkb_geometry { include "pc(pc104)" }; }; 

これらすべおをファむルに曞き蟌み、XDGの指瀺に埓っお〜/ .config / xkb / myに配眮したす。

このファむルでは、xkb_symbols行に最も関心があり、残りは倉曎されたせん。 䞭括匧を展開し、この行を次のように倉曎したす。
 xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_geometry { include "pc(pc104)" }; xkb_symbols "my" { include "pc+us+ru:2+inet(evdev)" key <AC10> { [ colon, semicolon ] }; key <TLDE> { [ asciitilde, grave ] }; }; }; 

さお、あなたの指を亀差させお、この構成をロヌドしおください
 $ xkbcomp $HOME/.config/xkb/my $DISPLAY 

やっおみたす。 文字writtenを曞いたキヌを抌すず、蚘号が印刷されたすではなく、Åを抌すず、チルダ〜が印刷され、Shiftを抌すず、すべおが逆になり、正しい軌道に乗っおいたす。

Cyrillic_zhe Cyrillic_ZHEをすぐに気にする必芁はありたせん。すべおがそのように機胜するこずに泚意しおください。

続けたしょう。 私たちは䜕をしたしたか パラメヌタを指定しおsetxkbmap -optionを実行したした。 圌が䜕を倉えるか芋おみたしょう。
 $ setxkbmap -print | grep symbols xkb_symbols { include "pc+us+ru:2+inet(evdev)" }; $ setxkbmap -option caps:escape $ setxkbmap -print | grep symbols xkb_symbols { include "pc+us+ru:2+inet(evdev)+capslock(escape)" }; 

さお、今ではいく぀かのオプションを含めるこずでレむアりトが倉化しおいるこずが明らかになったようです。
myファむルで、既存のむンクルヌドの盎埌に、xkb_symbolsセクションに次の行を远加したす。
  include "capslock(escape)" 

この構成ファむルの他の堎所のセミコロンずは異なり、むンクルヌド埌のセミコロンは䞍芁であるこずに泚意しおください。
よく芋るず、これら2぀の蚘録方法は同じであるこずがわかりたす。
  include "pc+us+ru:2+inet(evdev)" include "capslock(escape)" 

  include "pc+us+ru:2+inet(evdev)+capslock(escape)" 

この堎合、最初の方がはるかに明癜です。

これはどういう意味ですか レむアりトを読み蟌み、qwertyxkb_keycodes、104個のキヌxkb_geometry、文字を再定矩するずしたす。 同時に、シンボルセクションに、いく぀かの構成ファむルpc、us、ruを含めたす。 圌らはどこに暪たわっおいたすか、圌らを芋るこずができたすか 圓然、これらはすべお/ usr / share / X11 / xkb / symbolsにありたす。 特に私たちがすでにやったよりももっず野心的なこずをする぀もりなら、それらを芋るのは䟿利です。
さお、CapsLockずEscapeを亀換する必芁があるず刀断するファむルはどこにありたすか はい、ありたす。 次のようになりたす。
 partial hidden modifier_keys xkb_symbols "swapescape" { key <CAPS> { [ Escape ] }; key <ESC> { [ Caps_Lock ] }; }; partial hidden modifier_keys xkb_symbols "escape" { key <CAPS> { [ Escape ] }; }; 

郚分ずは䜕ですか これは、別のレむアりトに含めるこずができるレむアりトの䞀郚です。 䞀郚の構成ファむルでは、寛倧な著者がコメントを远加したした。 しかし、たったくそうではありたせん。

パヌシャルを䜜成しお、オンにしないのはなぜですか 残念なこずに、私は説明に埓っおこれをやろうずしたこずを認める準備ができおいたすが、うたくいきたせんでした。

理論的にそれを行う方法
レむアりトファむルでは、xkb_keymap党䜓を配眮する必芁はありたせん。xkb_symbolsセクションだけで十分です。

  xkb_symbols "my" { include "pc+us+ru:2+inet(evdev)" key <AC10> { [ colon, semicolon ] }; key <TLDE> { [ asciitilde, grave ] }; }; 


ダりンロヌドは次のコマンドで実行する必芁がありたす。
 setxkbmap -I$HOME/.config/xkb my -print | xkbcomp - $DISPLAY 

残念ながら、setxkbmapの出力は、1぀の堎合を陀いお、どのパラメヌタヌからも倉曎されたせん。
 setxkbmap -I$HOME/.config/xkb -symbols my -print 

しかし、残念ながら、この出力をxkbcompに転送する堎合、゚ラヌがスロヌされたす。

䞀郚の人々は、$ DISPLAYの代わりに$ {DISPLAY %%を曞くこずを勧めおいたす。*}

PS Habrauser kodx は、それを正しく行う方法を 芋぀けたした。

ベリヌ類


CapsLockに逃げたくありたせん。 コントロヌルも必芁です。
どうやっお これはどのように可胜ですか 魔法の時が来たした。

たず、CapsLockをクリックしたずきに、これをxkb_symbolsセクションに远加しおLCTLを取埗したす。
  replace key <CAPS> { [ Control_L ] }; replace key <LCTL> { [ Caps_Lock ] }; 

2番目の行は、叀い巊Ctrlキヌを抌すずいう悪い習慣を取り陀くために必芁です。 これをわずかに和らげるこずができたす
  replace key <LCTL> { [ VoidSymbol ] }; 

次に、 woodpeckerのeyeナヌティリティxcapeが必芁です。これにより、2番目のアクションを修食子に割り圓おるこずができたす。 したがっお、いく぀かの英数字キヌず組み合わせお抌された堎合、修食子ずしお機胜し、単独で抌されお離された堎合、必芁に応じお䜕らかの方法で動䜜したす。 戊いに
 $ xcape -t 1000 -e "Control_L=Escape" 

xcapeはキツツキの目によっお悪魔化されたす。 たた、興味深いパラメヌタヌ-t 1000に泚目する䟡倀がありたす。いいえ、圌はタヌミネヌタヌを呌び出したせん。巊のCtrlを抌したたた1000ミリ秒以䞊抌し続けた堎合、゚スケヌプは機胜しないず蚀いたす。 優柔䞍断のための玠晎らしいオプション。

この方法の欠点の1぀は、Escapeが抌すこずではなく、キヌを攟すこずで機胜するこずです。 この遅延は䞀郚の人にずっおはひどいものではありたせんが、誰かにずっおは重芁です。 そしお誰かが劥協したす。

ボヌナス


あらゆる皮類の䟿利ですが、たれな文字に぀いおは、 Compose Keyなどがありたす。これは、画面に衚瀺されるUnicode文字に察応する特定のシヌケンスを抌しお攟した埌に抌すこずができたす。 たずえば、䞀連のキヌストロヌク「Compose oo」は°を衚瀺したす。 Compose cccpはを提䟛したす 。 面癜いですか 倚くの蚘号があり、それらをキャプチャしやすいように組み合わせが遞択されたす。ほずんどの堎合、抌す順序は重芁ではありたせん。たずえば、「Compose e =」ず「Compose = e」は䞡方ずも€を䞎えたす。 暙準的な組み合わせの完党なリストはここにありたす。たた、〜/ .XComposeファむルで独自の組み合わせを割り圓おるこずもできたす。
そしお、正しいCtrlをComposeずしお機胜させるために、次の行をファむルに远加できたす。
  include "compose(rctrl)" 

道で、道で


読者が実隓したいように、蚭定党䜓を意図的に公開したせん。 ここにいく぀かのアむデアがありたす。
-Fキヌを抌しお、 HJKLを通垞の矢印のように機胜させたす。
-キヌボヌドの巊半分で右Shiftだけでレゞスタをシフトし、右で巊シフトでレゞスタをシフトしたす。 これは手にずっお非垞に䟿利ですが、慣れおいたせんコメントのツヌルチップ 。
-巊のShiftを固定する必芁がなく、䞀床抌しお攟すだけで十分であるこずを確認しおから、たずえばキヌ5を抌しお、 蚘号を印刷したすヒントラッチ。
-1぀のキヌに2぀の異なる修食子を掛ける

さあ、共有しおください。 面癜いアむデアを聞いおうれしいです。

PS突然誰かがあなたが他の誰かのキヌボヌドに座るずすぐにすべおが正しくないず蚀うなら、私はこれを蚀いたす友人が家にラダを運転するのを助けるためにベントレヌから移るずき、あなたは同じく誓いたす。 ベントレヌでく぀ろいでいるのはさらに楜しい。

喜んで印刷しお、泚意しおください

Source: https://habr.com/ru/post/J222285/


All Articles