unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* how to add hwdb of keyboard
@ 2020-09-11 16:47 Stefan Huchler
  2020-09-11 23:51 ` Stefan Huchler
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Huchler @ 2020-09-11 16:47 UTC (permalink / raw)
  To: help-guix

I use a custom keyboard layout on one of my laptops:

https://github.com/spiderbit/emacs-ergo-thinkpad-kb-layout

I use a hwdb which has the advantage that it works on tty and x11 and
that it's keyboard specific so if I connect a external keyboard it does
not swap keys on it.

I would be ok with giving up the keyboard specific part, I could live
with X11 only for a start, but I would like to have it in the config.scm
file configured and not only in some home based modifications.

Any idea how to do that best in guix, patching a custom my-modified-dvorak
keyboard-layout into the xkeyboard-config package maybe?



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: how to add hwdb of keyboard
  2020-09-11 16:47 how to add hwdb of keyboard Stefan Huchler
@ 2020-09-11 23:51 ` Stefan Huchler
  2020-09-14 21:41   ` Stefan Huchler
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Huchler @ 2020-09-11 23:51 UTC (permalink / raw)
  To: help-guix

I build a package for it:

(define-module (x220-hwdb)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (gnu packages compression)
  #:use-module (guix build-system copy)
  #:use-module (guix licenses))

(define-public x220-hwdb
  (package
   (name "x220-hwdb")
   (version "1.0")
   (source (origin
	    (method url-fetch)
	    (uri "https://github.com/spiderbit/emacs-ergo-thinkpad-kb-layout/archive/master.zip")
	    (sha256
	     (base32
	      "0rx791b7mq5visa9ckyf7py4lz5ml51hn4mzz4rmlpnlrcds4x8v"))))
   (build-system copy-build-system)
   (inputs `(("unzip" ,unzip)))
   (synopsis "Bla")
   (description "Bla bla bla")
   (home-page "https://www.gnu.org/blablabla")
   (license gpl3+)))

and tried to link it to the expected location:

(service special-files-service-type
		  `(("/etc/udev/hwdb.d/90-X220-keyboard.hwdb"
		     ,(file-append x220-hwdb "90-X220-keyboard.hwdb"))))

the problem is that the hwdb is compiled but read only, so the file must
basically be there before the eudev package builds this db.

Is there a better way doing this?

Stefan Huchler <stefan.huchler@mail.de> writes:

> I use a custom keyboard layout on one of my laptops:
>
> https://github.com/spiderbit/emacs-ergo-thinkpad-kb-layout
>
> I use a hwdb which has the advantage that it works on tty and x11 and
> that it's keyboard specific so if I connect a external keyboard it does
> not swap keys on it.
>
> I would be ok with giving up the keyboard specific part, I could live
> with X11 only for a start, but I would like to have it in the config.scm
> file configured and not only in some home based modifications.
>
> Any idea how to do that best in guix, patching a custom my-modified-dvorak
> keyboard-layout into the xkeyboard-config package maybe?



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: how to add hwdb of keyboard
  2020-09-11 23:51 ` Stefan Huchler
@ 2020-09-14 21:41   ` Stefan Huchler
  2020-09-14 23:46     ` Ricardo Wurmus
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Huchler @ 2020-09-14 21:41 UTC (permalink / raw)
  To: help-guix

I forked now the eudev definition to add my hwdb data:

(add-before 'build-hwdb 'add-my-hwdb-file
		     (lambda* (#:key outputs #:allow-other-keys)
		       (let ((out (assoc-ref outputs "out")))
			 (call-with-output-file
			     (string-append out "/etc/udev/hwdb.d/90-X220-keyboard.hwdb")
			   (lambda (port)
			     (display
			      "keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPadX220*\n" port)
			     (display "KEYBOARD_KEY_7b=compose\n" port)
			     (display "KEYBOARD_KEY_39=enter\n" port)
			     (display "KEYBOARD_KEY_79=space\n" port)
			     (display "KEYBOARD_KEY_70=tab\n" port)
			     (display "KEYBOARD_KEY_0f=backspace\n" port)
			     (display "KEYBOARD_KEY_3a=home\n" port)
			     (display "KEYBOARD_KEY_1c=end\n" port)
			     (display "KEYBOARD_KEY_0e=backspace\n" port)
			     (display "KEYBOARD_KEY_7d=backspace\n"
		     port))))))

Is there a way to make guix system priotise my modified eudev over the
upstream one?


Stefan Huchler <stefan.huchler@mail.de> writes:

> I build a package for it:
>
> (define-module (x220-hwdb)
>   #:use-module (guix packages)
>   #:use-module (guix download)
>   #:use-module (gnu packages compression)
>   #:use-module (guix build-system copy)
>   #:use-module (guix licenses))
>
> (define-public x220-hwdb
>   (package
>    (name "x220-hwdb")
>    (version "1.0")
>    (source (origin
> 	    (method url-fetch)
> 	    (uri "https://github.com/spiderbit/emacs-ergo-thinkpad-kb-layout/archive/master.zip")
> 	    (sha256
> 	     (base32
> 	      "0rx791b7mq5visa9ckyf7py4lz5ml51hn4mzz4rmlpnlrcds4x8v"))))
>    (build-system copy-build-system)
>    (inputs `(("unzip" ,unzip)))
>    (synopsis "Bla")
>    (description "Bla bla bla")
>    (home-page "https://www.gnu.org/blablabla")
>    (license gpl3+)))
>
> and tried to link it to the expected location:
>
> (service special-files-service-type
> 		  `(("/etc/udev/hwdb.d/90-X220-keyboard.hwdb"
> 		     ,(file-append x220-hwdb "90-X220-keyboard.hwdb"))))
>
> the problem is that the hwdb is compiled but read only, so the file must
> basically be there before the eudev package builds this db.
>
> Is there a better way doing this?
>
> Stefan Huchler <stefan.huchler@mail.de> writes:
>
>> I use a custom keyboard layout on one of my laptops:
>>
>> https://github.com/spiderbit/emacs-ergo-thinkpad-kb-layout
>>
>> I use a hwdb which has the advantage that it works on tty and x11 and
>> that it's keyboard specific so if I connect a external keyboard it does
>> not swap keys on it.
>>
>> I would be ok with giving up the keyboard specific part, I could live
>> with X11 only for a start, but I would like to have it in the config.scm
>> file configured and not only in some home based modifications.
>>
>> Any idea how to do that best in guix, patching a custom my-modified-dvorak
>> keyboard-layout into the xkeyboard-config package maybe?



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: how to add hwdb of keyboard
  2020-09-14 21:41   ` Stefan Huchler
@ 2020-09-14 23:46     ` Ricardo Wurmus
  2020-09-15  1:44       ` Stefan Huchler
  0 siblings, 1 reply; 5+ messages in thread
From: Ricardo Wurmus @ 2020-09-14 23:46 UTC (permalink / raw)
  To: Stefan Huchler; +Cc: help-guix


Hi Stefan,

it took me a while to reply to your original message, because I didn’t
know what hwdb was supposed to mean.  The code snippet in this mail made
it clearer to me.

> I forked now the eudev definition to add my hwdb data:
>
> (add-before 'build-hwdb 'add-my-hwdb-file
> 		     (lambda* (#:key outputs #:allow-other-keys)
> 		       (let ((out (assoc-ref outputs "out")))
> 			 (call-with-output-file
> 			     (string-append out "/etc/udev/hwdb.d/90-X220-keyboard.hwdb")
> 			   (lambda (port)
> 			     (display
> 			      "keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPadX220*\n" port)
> 			     (display "KEYBOARD_KEY_7b=compose\n" port)
> 			     (display "KEYBOARD_KEY_39=enter\n" port)
> 			     (display "KEYBOARD_KEY_79=space\n" port)
> 			     (display "KEYBOARD_KEY_70=tab\n" port)
> 			     (display "KEYBOARD_KEY_0f=backspace\n" port)
> 			     (display "KEYBOARD_KEY_3a=home\n" port)
> 			     (display "KEYBOARD_KEY_1c=end\n" port)
> 			     (display "KEYBOARD_KEY_0e=backspace\n" port)
> 			     (display "KEYBOARD_KEY_7d=backspace\n"
> 		     port))))))
>
> Is there a way to make guix system priotise my modified eudev over the
> upstream one?

No, you would need to rebuild with your eudev as a replacement.  But
let’s take a step back: is it possible to provide this hwdb with the
udev-service?  If not, perhaps we should augment the udev-service to not
only accept udev rules, but also custom hwdb files.

-- 
Ricardo


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: how to add hwdb of keyboard
  2020-09-14 23:46     ` Ricardo Wurmus
@ 2020-09-15  1:44       ` Stefan Huchler
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Huchler @ 2020-09-15  1:44 UTC (permalink / raw)
  To: help-guix

Hello Ricardo,

doesn't guix system not use eudev, in base.scm I see under
udev-configuration under package udev-configuration-udev (default eudev)

I think that file is very specific and if you have custom rule files why
not custom hwdb files. The problem is that this more a flavor, I use a
japanese keyboard layout and use the many thumbkeys in a "ergonomic"
way. So space as enter and the enter button as end, that is not what
everybody would want with such hardware.

So again in short, yes I think if you can add custom rule files I think
you should also be able to add custom hwdb files.


Ricardo Wurmus <rekado@elephly.net> writes:

> Hi Stefan,
>
> it took me a while to reply to your original message, because I didn’t
> know what hwdb was supposed to mean.  The code snippet in this mail made
> it clearer to me.
>
>> I forked now the eudev definition to add my hwdb data:
>>
>> (add-before 'build-hwdb 'add-my-hwdb-file
>> 		     (lambda* (#:key outputs #:allow-other-keys)
>> 		       (let ((out (assoc-ref outputs "out")))
>> 			 (call-with-output-file
>> 			     (string-append out "/etc/udev/hwdb.d/90-X220-keyboard.hwdb")
>> 			   (lambda (port)
>> 			     (display
>> 			      "keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPadX220*\n" port)
>> 			     (display "KEYBOARD_KEY_7b=compose\n" port)
>> 			     (display "KEYBOARD_KEY_39=enter\n" port)
>> 			     (display "KEYBOARD_KEY_79=space\n" port)
>> 			     (display "KEYBOARD_KEY_70=tab\n" port)
>> 			     (display "KEYBOARD_KEY_0f=backspace\n" port)
>> 			     (display "KEYBOARD_KEY_3a=home\n" port)
>> 			     (display "KEYBOARD_KEY_1c=end\n" port)
>> 			     (display "KEYBOARD_KEY_0e=backspace\n" port)
>> 			     (display "KEYBOARD_KEY_7d=backspace\n"
>> 		     port))))))
>>
>> Is there a way to make guix system priotise my modified eudev over the
>> upstream one?
>
> No, you would need to rebuild with your eudev as a replacement.  But
> let’s take a step back: is it possible to provide this hwdb with the
> udev-service?  If not, perhaps we should augment the udev-service to not
> only accept udev rules, but also custom hwdb files.



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-09-15  8:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-11 16:47 how to add hwdb of keyboard Stefan Huchler
2020-09-11 23:51 ` Stefan Huchler
2020-09-14 21:41   ` Stefan Huchler
2020-09-14 23:46     ` Ricardo Wurmus
2020-09-15  1:44       ` Stefan Huchler

unofficial mirror of help-guix@gnu.org 

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/guix-user/0 guix-user/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guix-user guix-user/ https://yhetil.org/guix-user \
		help-guix@gnu.org
	public-inbox-index guix-user

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.gnu.guix.user
	nntp://news.gmane.io/gmane.comp.gnu.guix.user


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git