26

背景: 過去 5 年ほどの間、人間工学に基づいたキーボードを備えた典型的な PC ハードウェアで Gnu/Linux を長年使用した後、私は Mac ハードウェア (大部分はハイエンドの MacBook Pro ラップトップ) とソフトウェアを使用してきました。さらに重要なことに、Emacs のヘビー ユーザーとして、Mac への切り替えは苦痛でした。Apple の標準的な短いキーボードは、腹立たしく、避けられませんでした。カラビナを使ってRSIの発症を防いだ小さいながらも非常に重要な 2 つの変更を行うためのツール: 1) capslock キーを変更して、単独で押されたときにメニュー (f13) キーを生成し、別のキーで押されたときにコントロール キーを変更したキーコードを生成します。2) 同様の方法でリターン キーを変更すると、単独で押されたときにリターンが取得され、別のキーで押されたときにキーコードが変更されたコントロール キーが取得されます。ハードウェアとソフトウェアの両方に関する最近の Apple の決定に失望したので、私は今 Gnu/Linux (問題があれば Ubuntu) に戻りますが、Mac ラップトップを使い続けています。

質問: Karabiner は OS X 専用のツールであり、すぐに利用できる Gnu/Linux 対応ツールがないため、Karabiner が有効にする capslock と return の主要な二重機能動作を実現するには、いくつかのコードを記述および/または変更する必要があるようです。Karabiner の作成者、xbindkeys と rbindkeys がキーの再マッピングを行うと書いていますが、一見すると、二重機能の動作を処理していないように見えます。現在、Karabiner の移植またはまったく新しいツールの作成に取り組んでいます。そして間違いなく、他のアプローチもあるかもしれません。私の質問は、この問題を解決するためにどのようなプログラミングのアドバイスを提案しますか? 特に、数か月ではなく、数時間、数日、または数週間で開発できるもの。

:

1) コントロール キーとコマンド キーの交換など、動作の変更を伴うさまざまなアプローチがあります。多くの人が、さまざまな程度の満足度で試されてきました。Karabiner のデュアル機能アプローチは、キーボードのホーム行とすべてのアプリケーションでコントロール キーの対称性を提供するという点で、非常に効果的です。

2) 別のハードウェアも提案される可能性があります。Dell、HP、Lenovo、Acer のシステムを試し、さらに多くのシステムを調べました。プレミアム価格ではありますが、アップルのトップエンド製品のパワー、サイズ、感触、スタイルの組み合わせに匹敵するものはありません. たとえば、Dell Precision 7510 はかさばり、サンドペーパーのような感触のトラックパッドを備えています。Lenovo X1 (非常に優れたシステム) には Thunderbolt ポートがありません。等

3) ラップトップが必要なため、外付けキーボードもスターターではありません。飛行機や電車での外付けキーボードは起きていません。

4

1 に答える 1

10

これは、 libevdevおよびlibudevと直接対話するInterception Toolsを使用して、TTYまたはX11のWaylanで実現できます。

ウェイランド、TTY または X11

傍受ツールと、 caps2escやInterception -k2kなどのプラグインをインストールします。次に、このプラグインを使用するようにInterceptionを構成する必要があります。caps2escの場合、次の/etc/udevmon.yamlファイルを使用できます。

- JOB: "intercept -g $DEVNODE | caps2esc | uinput -d $DEVNODE"
  DEVICE:
    EVENTS:
      EV_KEY: [KEY_CAPSLOCK, KEY_ESC]

次に、ルートとして実行します。

nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml

ログイン時に開始することを確認する必要があります。systemdの場合、次のサービスを使用できます。

[Unit]
Description=udevmon

[Service]
ExecStart=/usr/bin/nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml

[Install]
WantedBy=multi-user.target

X11のみ

代わりに、またはudevを使用しない古いシステムでは、 setxkbmapおよびxcapeを使用できます。

Caps Lock修飾子として機能するための最初の変更Ctrl:

setxkbmap -option caps:ctrl_modifier

次に、タイムアウト (デフォルトは 500 ミリ秒) 未満で押されたときにキーCaps Lockとして機能するように設定します。Menu

xcape -e 'Caps_Lock=Menu'

xcapeはデーモンとして実行されるため、 loginで確実に開始する必要があります。setxkbmap現在の X セッションのみのキーボード レイアウトを設定します。 xinitrcxprofile、またはX 構成ファイルで永続的に設定できます。


PS外付けキーボードを使用したい場合は、オープン ソース (ソフトウェアおよびハードウェア) のUltimate Hacking Keyboard (UHK)を使用すると、この機能を使用できます。

于 2019-08-10T18:28:53.657 に答える