<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Keyd on Roguer</title>
        <link>https://roguer.info/tags/keyd/</link>
        <description>Recent content in Keyd on Roguer</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sat, 15 Aug 2026 18:23:00 +0900</lastBuildDate><atom:link href="https://roguer.info/tags/keyd/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>CachyOS &#43; KDE Plasma(Wayland)で物理的に壊れたキーをkeydで代用する</title>
            <link>https://roguer.info/p/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97/</link>
            <pubDate>Sat, 15 Aug 2026 18:23:00 +0900</pubDate>
            <guid>https://roguer.info/p/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97/</guid>
            <description>&lt;img src=&#34;https://roguer.info/&#34; alt=&#34;Featured image of post CachyOS + KDE Plasma(Wayland)で物理的に壊れたキーをkeydで代用する&#34; /&gt;&lt;p&gt;キーボードの &lt;code&gt;:&lt;/code&gt;(コロン)/&lt;code&gt;;&lt;/code&gt;(セミコロン)キーが壊れてしまい、入力できなくなりました。物理キーを買い替える前に、使っていないキーの組み合わせで代用できないか試してみました。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OS: CachyOS(Arch系)&lt;/li&gt;&#xA;&lt;li&gt;デスクトップ環境: KDE Plasma(Wayland)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Waylandでは、X11の&lt;code&gt;setxkbmap&lt;/code&gt;のような手軽な方法が使えないことが多く、GUIのキーボード設定でも「Alt+P → &lt;code&gt;;&lt;/code&gt;」のような任意のキー組み合わせへのカスタムマッピングはできません。そこで、カーネルレベルで動作しX11/Wayland/デスクトップ環境を問わず使える&lt;code&gt;keyd&lt;/code&gt;を採用しました。&lt;/p&gt;&#xA;&lt;h2 id=&#34;keydとは&#34;&gt;keydとは&#xA;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;keyd&lt;/code&gt;はLinuxのキーリマップ用デーモンで、&lt;code&gt;/dev/input&lt;/code&gt;のイベントを直接フックして仮想キーボードとして出力し直します。ディスプレイサーバーやウィンドウマネージャーに依存しないため、Wayland環境でも問題なく動作します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;インストール&#34;&gt;インストール&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pacman -S keyd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;設定&#34;&gt;設定&#xA;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/etc/keyd/default.conf&lt;/code&gt; を作成します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[ids]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;*&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[main]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;leftalt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;overload(altremap, leftalt)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;rightalt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;overload(altremap, rightalt)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[altremap]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;semicolon&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;o&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;S-semicolon&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ポイントは以下の通りです。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;overload(altremap, leftalt)&lt;/code&gt; によって、Altキーは単独で押せば通常のAltとして機能し、他のキーと同時に押されたときだけ&lt;code&gt;altremap&lt;/code&gt;レイヤーが有効になります&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;p = semicolon&lt;/code&gt; で &lt;strong&gt;Alt+P → &lt;code&gt;;&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;o = S-semicolon&lt;/code&gt; で &lt;strong&gt;Alt+O → &lt;code&gt;:&lt;/code&gt;&lt;/strong&gt;(Shift+セミコロン相当)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;サービスを有効化します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; --now keyd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;ハマった所-右ctrlで日本語変換ができなくなった&#34;&gt;ハマった所: 右Ctrlで日本語変換ができなくなった&#xA;&lt;/h2&gt;&lt;p&gt;設定を反映した直後、右Ctrlキーによる日本語入力の変換切り替え(fcitx/ibus)が効かなくなる問題が発生しました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;sudo keyd monitor&lt;/code&gt; で右Ctrlキーを押したときのイベントを確認したところ、原因がわかりました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;keyd virtual keyboard   0fac:0ade:bea394c0      leftcontrol down&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;keyd virtual keyboard   0fac:0ade:bea394c0      leftcontrol up&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;右Ctrlキーを押しているのに、keydの出力は&lt;code&gt;leftcontrol&lt;/code&gt;になっていました。これでは右Ctrl固有のショートカットに割り当てていたIMEの変換トリガーが反応しません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;[main]&lt;/code&gt;セクションに右Ctrlを明示的にそのまま通す設定を追加します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[main]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;leftalt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;overload(altremap, leftalt)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;rightalt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;overload(altremap, rightalt)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;rightcontrol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rightcontrol&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで右Ctrlが正しく&lt;code&gt;rightcontrol&lt;/code&gt;として出力されるようになり、日本語変換も元通り動くようになりました。&lt;/p&gt;&#xA;&lt;h2 id=&#34;最終的な設定ファイル&#34;&gt;最終的な設定ファイル&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[ids]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;*&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[main]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;leftalt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;overload(altremap, leftalt)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;rightalt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;overload(altremap, rightalt)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;rightcontrol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rightcontrol&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[altremap]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;semicolon&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;o&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;S-semicolon&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wayland環境でも&lt;code&gt;keyd&lt;/code&gt;を使えばDE非依存でキーの自由なリマップができます。&lt;code&gt;overload()&lt;/code&gt;を使うと、修飾キーの通常の機能を保ったままレイヤー切り替えキーとしても使えるのが便利でした。&lt;/p&gt;&#xA;&lt;p&gt;keydはデフォルトで一部のキー(今回の場合は右Ctrl)を暗黙的に別のキーとして正規化して出力することがあるようです。既存のショートカットに影響が出た場合は&lt;code&gt;sudo keyd monitor&lt;/code&gt;で実際の出力イベントを確認し、必要なキーは明示的にパススルー設定するとよさそうです。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
