четверг, 11 июня 2009 г.

Fedora 11 packages collection

[axet@axet-laptop ~]$ rpm -qa | wc
   1577    1577   50184
[axet@axet-laptop ~]$ rpm -qa | grep fc11 | wc
   1490    1490   47962
[axet@axet-laptop ~]$ rpm -qa | grep fc10 | wc
      2       2      52
[axet@axet-laptop ~]$ rpm -qa | grep fc10
libtar-1.2.11-11.fc10.i386
axis-1.2.1-4.1.fc10.i386
[axet@axet-laptop ~]$ rpm -qa | grep -v fc11 | grep -v fc10 | wc
     85      85    2170
[axet@axet-laptop ~]$ 

1577 - 1490 = 87

Keyboard mapping trough layout options

Продолжая эстафету по исправлению назойливой ошибки переключения клавиш для ноутбука MacBook Pro под линуксом я пробую победить ее через использование Layout options.

Проблема, которую я пытаюсь решить на протяжении длительно времени, заключается в том, что кнопки на клавиатуре MacBook Pro расположены не привычным для бывших пользователей MS Windows местах. В результате получаются перепутаны кнопки Windows Key и Alt. Что вносит хаос при работе с операционной системой Linux переключении окон, вызова системных меню и прочьи сложности.

Моя задача заставить X11 систему переназначить ряд кнопок с одних значений на другие. Проблема должна решаться штатными средствами, однако из за наличия ошибок в OS Linux, недоработок, и постоянных улучшениях внутри операционной системы я то нахожу частичное решение, то, после нового релиза операционной системы, откатываюсь назад и начинаю поиск сначала.

В предыдущей серии статей вы можете увидеть 2 способа исправления данной ситуации. Все они, к сожалению, содержат свои недостатки и ни один из них не решает указанную проблему полностью. В этот раз я подбираюсь к решению совсем близко, и практически нахожу рекомендованный (точнее единственный который работает) способ позволяющий переназначать кнопки.

Вот эти статьи:
- через использование xmodmap для fedora 9
- через использование xmodmap для fedora 10+
- через создание нового типа клавиатуры
- создание своей раскладки для консоли fedora
- переназначение кнопок для Mac OS X
- создание раскладки для Windows XP

Способы приведенные выше имеют различные проблемы. Некоторые способы требуют работы с исходниками, другие способы из за ошибок в X11 системе обработки событий не позволяют получить ожидаемый результат. И к сожалению ни один из выше приведенных способов не позволяет переключить кнопку Eject на кнопку PrintScreen.

http://blog.axet.ru/search/label/keyboard%20mapping


Рассматриваемый здесь очередной способ, так же не лишен недостатков среди которых:
- работа с исходниками
- не возможность переключить кнопку eject

Однако, на конец-то, у меня получилось достаточно прозрачно сделать требуемые изменения и получить наиболее приемлемый способ для преобразования кнопок. Теперь, все кнопки после преобразования работают как этого и ожидается, больше не происходит откатывания значения кнопки в различных ситуациях. Кроме того, часть работы уже выполнена за нас и такие преобразования как Windows key <-> Left Alt уже заложены в существующие правила Layout options и нам требуется только добавить два специфичных для нас правила:
- преобразование кнопки enter --> delete
- преобразование кнопки eject -> print scr

Итак. Для создания правил нам необходимо применить файл macuser.patch к пакету Федора 11 xkeyboard-config.

From: Alexey Kuznetsov <ak@axet.ru>
Date: Wed Jun 10 18:39:12 MSD 2009
Subject: [PATCH] add macoptions

diff -ur --new-file xkeyboard-config-1.5/rules/base.o_s.part xkeyboard-config-1.5.new/rules/base.o_s.part
--- xkeyboard-config-1.5/rules/base.o_s.part    2009-06-10 18:19:40.000000000 +0400
+++ xkeyboard-config-1.5.new/rules/base.o_s.part    2009-06-10 18:31:07.000000000 +0400
@@ -1,3 +1,5 @@
+  macuser:enter        =    +macuser(enter)
+  macuser:print        =    +macuser(print)
   altwin:menu        =    +altwin(menu)
   altwin:meta_alt    =    +altwin(meta_alt)
   altwin:ctrl_win    =    +altwin(ctrl_win)
diff -ur --new-file xkeyboard-config-1.5/rules/base.xml.in xkeyboard-config-1.5.new/rules/base.xml.in
--- xkeyboard-config-1.5/rules/base.xml.in    2009-06-10 18:19:40.000000000 +0400
+++ xkeyboard-config-1.5.new/rules/base.xml.in    2009-06-10 18:32:51.000000000 +0400
@@ -4596,6 +4596,24 @@
         </configItem>
       </option>
     </group>
+    <group allowMultipleSelection="true">
+      <configItem>
+        <name>macuser</name>
+        <_description>Mac User definitions</_description>
+      </configItem>
+      <option>
+        <configItem>
+          <name>macuser:enter</name>
+          <_description>Act enter key as delete key</_description>
+        </configItem>
+      </option>
+      <option>
+        <configItem>
+          <name>macuser:print</name>
+          <_description>Act eject key as print key</_description>
+        </configItem>
+      </option>
+    </group>
     <group allowMultipleSelection="false">
       <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) -->
       <configItem>
diff -ur --new-file xkeyboard-config-1.5/rules/evdev.xml.in xkeyboard-config-1.5.new/rules/evdev.xml.in
--- xkeyboard-config-1.5/rules/evdev.xml.in    2009-01-24 03:51:19.000000000 +0300
+++ xkeyboard-config-1.5.new/rules/evdev.xml.in    2009-06-10 18:33:09.000000000 +0400
@@ -4596,6 +4596,24 @@
         </configItem>
       </option>
     </group>
+    <group allowMultipleSelection="true">
+      <configItem>
+        <name>macuser</name>
+        <_description>Mac User definitions</_description>
+      </configItem>
+      <option>
+        <configItem>
+          <name>macuser:enter</name>
+          <_description>Act enter key as delete key</_description>
+        </configItem>
+      </option>
+      <option>
+        <configItem>
+          <name>macuser:print</name>
+          <_description>Act eject key as print key</_description>
+        </configItem>
+      </option>
+    </group>
     <group allowMultipleSelection="false">
       <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) -->
       <configItem>
diff -ur --new-file xkeyboard-config-1.5/symbols/macuser xkeyboard-config-1.5.new/symbols/macuser
--- xkeyboard-config-1.5/symbols/macuser    1970-01-01 03:00:00.000000000 +0300
+++ xkeyboard-config-1.5.new/symbols/macuser    2009-06-10 18:26:53.000000000 +0400
@@ -0,0 +1,13 @@
+// $XKeyboardConfig$
+
+// $XFree86: xc/programs/xkbcomp/symbols/macuser,v 1.5 2003/12/03 14:09:08 pascal Exp $
+
+partial modifier_keys 
+xkb_symbols "enter" {
+    key <KPEN> {    [     Delete            ]    };
+};
+
+partial modifier_keys 
+xkb_symbols "print" {
+    key <I169> {    [     Print, Sys_Req        ]    };
+};
diff -ur --new-file xkeyboard-config-1.5/symbols/Makefile.am xkeyboard-config-1.5.new/symbols/Makefile.am
--- xkeyboard-config-1.5/symbols/Makefile.am    2009-01-14 01:14:47.000000000 +0300
+++ xkeyboard-config-1.5.new/symbols/Makefile.am    2009-06-10 18:33:16.000000000 +0400
@@ -29,7 +29,7 @@
 tj tr \
 ua us uz vn \
 za \
-altwin capslock compose ctrl eurosign group inet \
+macuser altwin capslock compose ctrl eurosign group inet \
 keypad kpdl level3 level5 nbsp olpc shift srvr_ctrl typo

 dir_data = $(dist_symbols_DATA)
diff -ur --new-file xkeyboard-config-1.5/symbols/Makefile.in xkeyboard-config-1.5.new/symbols/Makefile.in
--- xkeyboard-config-1.5/symbols/Makefile.in    2009-01-28 01:25:37.000000000 +0300
+++ xkeyboard-config-1.5.new/symbols/Makefile.in    2009-06-10 18:33:24.000000000 +0400
@@ -229,7 +229,7 @@
 tj tr \
 ua us uz vn \
 za \
-altwin capslock compose ctrl eurosign group inet \
+macuser altwin capslock compose ctrl eurosign group inet \
 keypad kpdl level3 level5 nbsp olpc shift srvr_ctrl typo

 dir_data = $(dist_symbols_DATA)
diff -ur --new-file xkeyboard-config-1.5/symbols/symbols.dir xkeyboard-config-1.5.new/symbols/symbols.dir
--- xkeyboard-config-1.5/symbols/symbols.dir    2009-01-28 01:42:11.000000000 +0300
+++ xkeyboard-config-1.5.new/symbols/symbols.dir    2009-06-10 18:33:43.000000000 +0400
@@ -253,6 +253,8 @@
 -dp----- a------- cn(basic)
 --p----- a------- cn(tib)
 --p----- a------- cn(tib_asciinum)
+--p----- -m------ macuser(enter)
+--p----- -m------ macuser(print)
 --p----- -m------ altwin(meta_alt)
 --p----- -m------ altwin(ctrl_win)
 --p----- -m------ altwin(ctrl_alt_win)

Далее, изменить файл xkeyboard-config.spec:

--- xkeyboard-config.spec    2009-04-09 09:31:10.000000000 +0400
+++ xkeyboard-config.spec.new    2009-06-11 18:14:51.000000000 +0400
@@ -20,6 +20,7 @@
 Patch6: xkeyboard-config-1.5-evdevkbds.patch
 Patch7: xkeyboard-config-1.5-suspend-hibernate.patch
 Patch8: xkeyboard-config-1.5-terminate.patch
+Patch10: macuser.patch

 BuildArch: noarch

После чего скомпилировать rpm-пакет командой rpmbuild -ba xkeyboard-config.spec

После установки пакета необходимо в программе gnome-keyboard-properties найти закладки Layouts/Layout Options. И изменить параметры:

- Mac User defenitions/Act enter key as delete key
- Mac User defenitions/Act eject key as print key

вторник, 9 июня 2009 г.

Маленький коренастый OpenSource

Открывая двери к механизмам управления и разработки системы Opensource завоевывает доверие и с каждым годом получает все большее распростронение среди простых пользователей.

Новая модель распростронения кода всего-лишь небольшая революция по переделки собственности, передача ее от упрямых взрослых корпораций в руки модолдых и талантливых инженеров. Новая жизнь побеждает старую, запреты уходят с теми кто в них вцеплялся руками и чахнул над мнимым богатством...

Отдавая код, вы получаете свободу.



Ребенку можно все говорить, - все; меня всегда поражала мысль, как плохо знают большие детей, отцы и матери даже своих детей? От детей ничего не надо утаивать, под предлогом, что они маленькие и что им рано знать. Какая грустная и несчастная мысль! И как хорошо сами дети подмечают, что отцы считают их слишком маленькими и ничего не понимающими, тогда как они все понимают. Большие не знают, что ребенок даже в самом трудном деле может дать чрезвычайно важный совет. О боже! 


Ф. М. Достоевский