<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rde.git/src/Rahm/Desktop/Keys, branch wip_mapping_keycodes</title>
<subtitle>Rahm's Rice'd Desktop Environment
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/'/>
<entry>
<title>Overhaul how Wml is implemented.</title>
<updated>2024-02-04T22:26:10+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2024-02-04T22:20:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=3a5d965333bb2d7a115e4de05d88ada48fd1d677'/>
<id>3a5d965333bb2d7a115e4de05d88ada48fd1d677</id>
<content type='text'>
This adds a new "KeyFeed" monad which is reminiscent of a parsec-type
monad. This allows keys like 'g' to be mapped using a subbind and the
actual WML part be handled in the catch-all handler.

This also significantly cleans up the typing and complexity of the Wml
implementation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds a new "KeyFeed" monad which is reminiscent of a parsec-type
monad. This allows keys like 'g' to be mapped using a subbind and the
actual WML part be handled in the catch-all handler.

This also significantly cleans up the typing and complexity of the Wml
implementation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Break out some stuff in Dsl2.</title>
<updated>2024-02-03T23:12:45+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2024-02-03T23:12:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=63342cd6e7979eeb177a08d42868be972aab2b47'/>
<id>63342cd6e7979eeb177a08d42868be972aab2b47</id>
<content type='text'>
Create new Grab and KeyCodeMapping modules to support keycode mapping.
That subsystem did not belong in Dsl2.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Create new Grab and KeyCodeMapping modules to support keycode mapping.
That subsystem did not belong in Dsl2.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add support for root-level keycode mappings.</title>
<updated>2024-02-02T20:42:38+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2024-02-02T20:42:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=8d077511f2d06a79e2dc638f46877a394c78d66e'/>
<id>8d077511f2d06a79e2dc638f46877a394c78d66e</id>
<content type='text'>
The code is a bit of a mess, and should probably be moved out of Dsl2
and into a dedicated place, but it works.

I had to do a bit of a hack to get around XMonad's ungrabbing the
keyboard after a Mapping event, which is not the best, but I don't have
a better way of doing it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The code is a bit of a mess, and should probably be moved out of Dsl2
and into a dedicated place, but it works.

I had to do a bit of a hack to get around XMonad's ungrabbing the
keyboard after a Mapping event, which is not the best, but I don't have
a better way of doing it.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add limited ability to bind directly to keycodes.</title>
<updated>2024-01-31T19:11:44+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2024-01-31T19:11:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=cf51fa2e89b92754fda0664e57ba647491eac610'/>
<id>cf51fa2e89b92754fda0664e57ba647491eac610</id>
<content type='text'>
Binding to keycodes is good for nonmnemonic key bindings -- where the
choice of key is due to its position on the keyboard rather than the
character associated with it.

Right now only window bindings and subbindings can use keycode bindings.
Root bindings can still only be keysyms and buttons.

I've been using this feature to map some movement keys to Hyper. This
emulates the function key on my M770 keyboard where fn+ijkl are used as
arrow keys. I use the tab key as my hyper key. With xcape it can operate
as a Tab key when release, or a modifier key when held down, which is
awesome.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Binding to keycodes is good for nonmnemonic key bindings -- where the
choice of key is due to its position on the keyboard rather than the
character associated with it.

Right now only window bindings and subbindings can use keycode bindings.
Root bindings can still only be keysyms and buttons.

I've been using this feature to map some movement keys to Hyper. This
emulates the function key on my M770 keyboard where fn+ijkl are used as
arrow keys. I use the tab key as my hyper key. With xcape it can operate
as a Tab key when release, or a modifier key when held down, which is
awesome.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add &lt;M-a&gt; and &lt;S-M-a&gt; to cycle between monitors.</title>
<updated>2024-01-29T21:09:33+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2024-01-29T21:09:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=12335234034a16fce3d324e92030963d3ceacbc1'/>
<id>12335234034a16fce3d324e92030963d3ceacbc1</id>
<content type='text'>
This is more general than it was before. It's quicker than typing its
synonymous equivalent, &lt;M-f&gt;,. as a bonus it's the same on both dvorak
and qwerty keyboards.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is more general than it was before. It's quicker than typing its
synonymous equivalent, &lt;M-f&gt;,. as a bonus it's the same on both dvorak
and qwerty keyboards.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add withNextWorkspaceOrKey.</title>
<updated>2024-01-26T21:59:59+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2024-01-26T21:59:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=0f33a79450f4a56e52c90e045ebf1ffcd0fbc86f'/>
<id>0f33a79450f4a56e52c90e045ebf1ffcd0fbc86f</id>
<content type='text'>
This function invokes a handler if a WML workspace is entered, or if a
non-Wml key is entered, it invokes a different handler.

This allows Wml-tied keys like 'g' to handle non-wml sequences. I.e. "g
&lt;F1&gt;" now displays help.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This function invokes a handler if a WML workspace is entered, or if a
non-Wml key is entered, it invokes a different handler.

This allows Wml-tied keys like 'g' to handle non-wml sequences. I.e. "g
&lt;F1&gt;" now displays help.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add some documentation to Dsl2.hs</title>
<updated>2023-12-14T08:26:58+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>joshuarahm@gmail.com</email>
</author>
<published>2023-12-14T08:26:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=836991558eefc53e7ff1f1db6a8faaf59aee9bb8'/>
<id>836991558eefc53e7ff1f1db6a8faaf59aee9bb8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Added documentation ability for Dsl2 keys.</title>
<updated>2023-12-13T23:48:10+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2023-12-13T23:48:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=4c14fed7b852296af422a9d2f7166abced2c52b9'/>
<id>4c14fed7b852296af422a9d2f7166abced2c52b9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add multi-select Rofi support and allow multiselect for windows.</title>
<updated>2023-12-13T19:40:15+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2023-12-13T19:40:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=2604f0608d176d89a4e307c90a5f904b8d06921a'/>
<id>2604f0608d176d89a4e307c90a5f904b8d06921a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Replacing existing binder DSL with a better and more expressive DSL.</title>
<updated>2023-12-13T19:03:16+00:00</updated>
<author>
<name>Josh Rahm</name>
<email>rahm@google.com</email>
</author>
<published>2023-12-13T19:01:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rde.git/commit/?id=4cdab9f06cd0ecf5ad7d5ee15dd83c4dc4eb396a'/>
<id>4cdab9f06cd0ecf5ad7d5ee15dd83c4dc4eb396a</id>
<content type='text'>
This new DSL is cleaner and more powerful. This new DSL allows mixing
key and mouse bindings in submappings, which can be very useful.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This new DSL is cleaner and more powerful. This new DSL allows mixing
key and mouse bindings in submappings, which can be very useful.
</pre>
</div>
</content>
</entry>
</feed>
