2018年11月8日木曜日

CentOS6 で ThinkPad USB トラックポイントキーボード を使う

lenovo が販売していた頃にはあまり興味を持てず、買いそびれていた ThinkPad USB トラックポイントキーボード (55Y9024) を、中古で入手することができました。
CentOS6 が動いている NEC 製 PC (Mate) で使い始めましたが、若干設定が必要でしたので、その備忘録です。

まず、何も設定しないと TrackPoint が重すぎて、人差し指がつります。
これについては、以前 ThinkPad X300 の TrackPoint が重くて、調べた際の調整方法が使えました。
[root@hoge ~]# xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint    id=6    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint    id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
[root@hoge ~]# xinput set-float-prop 6 "Device Accel Constant Deceleration" 0.35
[root@hoge ~]# xinput list-props 6
Device 'Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint':
        Device Enabled (150):   1
        Coordinate Transformation Matrix (152): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (278):     0
        Device Accel Constant Deceleration (279):       0.350000
        Device Accel Adaptive Deceleration (280):       1.000000
        Device Accel Velocity Scaling (281):    10.000000
        Device Product ID (282):        6127, 24585
        Device Node (283):      "/dev/input/event4"
        Evdev Axis Inversion (284):     0, 0
        Evdev Axes Swap (286):  0
        Axis Labels (287):      "Rel X" (160), "Rel Y" (161)
        Button Labels (288):    "Button Left" (153), "Button Middle" (154), "Button Right" (155), "Button Wheel Up" (156), "Button Wheel Down" (157), "Button Horiz Wheel Left" (158), "Button Horiz Wheel Right" (159), "Button 3" (273), "Button Extra" (275), "Button Unknown" (269), "Button Back" (276), "Button Task" (277), "Button Unknown" (269), "Button Unknown" (269), "Button Unknown" (269), "Button Unknown" (269), "Button Unknown" (269), "Button Unknown" (269), "Button Unknown" (269), "Button Unknown" (269)
        Evdev Scrolling Distance (289): 0, 0, 0
        Evdev Middle Button Emulation (290):    0
        Evdev Middle Button Timeout (291):      50
        Evdev Third Button Emulation (292):     0
        Evdev Third Button Emulation Timeout (293):     1000
        Evdev Third Button Emulation Button (294):      3
        Evdev Third Button Emulation Threshold (295):   20
        Evdev Wheel Emulation (296):    1
        Evdev Wheel Emulation Axes (297):       6, 7, 4, 5
        Evdev Wheel Emulation Inertia (298):    10
        Evdev Wheel Emulation Timeout (299):    200
        Evdev Wheel Emulation Button (300):     2
        Evdev Drag Lock Buttons (301):  0
[root@hoge ~]# 
わたしの場合は、Device Accel Constant Deceleration を 0.35 に設定することで、十分な軽さになりました。

もう1点、TrackPoint の真ん中ボタンによるスクロールを使うのに、設定が必要でした。
openSUSE ユーザで、先人の方が居られたので、ありがたく写経させてもらいました。設定ファイルのパスだけ、若干異なりますが、内容はそのまま使えました。
[root@hoge ~]# cat /etc/X11/xorg.conf.d/20-thinkpad.conf 
# File is /usr/lib/X11/xorg.conf.d/20-thinkpad.conf
Section "InputClass"
    Identifier "Trackpoint Wheel Emulation"
    MatchProduct "TrackPoint"
    MatchDevicePath "/dev/input/event*"
    Driver "evdev"
    Option "EmulateWheel" "true"
    Option "EmulateWheelButton" "2"
    Option "Emulate3Buttons" "false"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection

55Y9024 キーボードの打ち心地は、十分快適に使えるレベルという感想を持ちましたが、ネットで散見されるように、形状こそ本物の ThinkPad の 7列 キーボードとそっくりですが、やはり別物でした。キートップの印刷品質が低く (雑な感じ) 、タイプした時の感触もだいぶ異なります。いわゆる剛性の差でしょうかね。本物の ThinkPad のほうが重量があり、どっしりとしているから、打ち心地がよく感じるのかも。
しかしながら、この配列はやはり絶妙と思いました。それから、地味にボリューム調整のボタンが便利かもしれません (何も設定しなくても CentOS6 で使えました) 。

2018年11月3日土曜日

Fedora 28 で QR コードを読み取る

最近ほとんど自宅メインマシンとして使っている ThinkPad 25 の Web カメラで、QR コードを読み取りたいと思ったのですが、なぜか Windows10 環境ではカメラが動かず (まったく映らない) でした。
ThinkPad 25 を使い始めてから約1年、今までに1回も Web カメラを使ったことがなかったし、これはもしかすると初期不良だったのかも?
それで、Windows10 の状態 (ドライバの状態や、新しいドライバがリリースされてないか等) を調べたり、BIOS のメニューでカメラが disable になっていたりしないか?を確認したのですが、わからずでした。Windows 環境でのこの手の調査は疲れるー。

しばらく休んで気を取り直したのち、マルチブートで Fedora 28 が動くようにしてあるので、そういえば試したことがありませんでしたが、Linux で Web カメラって使えるの?と、ネット検索してみると、わりと普通に使えるらしいと知りました。まず、そもそもカメラが初期不良なのかを切り分けるため、camorama というツールをインストールして試してみたところ、ちゃんと撮影可能でした。初期不良 (or 故障) だったら lenovo に連絡とるなど面倒臭いので、まずはよかった!

それなら、Fedora で使える QR コードリーダーがあればよいと思い、chrome 用プラグインの ScanQR というのが Linux でも使えそうだったので試しました。しかし、ScanQR では、どういうわけかノイズだらけで使えませんでした。

このように、マトリックス状態です。なんじゃこりゃ です。
なお、dmesg には次のようなメッセージが出ていました。
[15220.355888] uvcvideo: Failed to query (SET_CUR) UVC control 4 on unit 1: -32 (exp. 4).
uvcvideo というドライバが Web カメラの制御に関係するようだとわかり、ArchLinux のページなどを彷徨ったのですが、とうとう ScanQR を正常動作させられませんでした。

もっと他に QR コードリーダーはないか?と、ネット検索して辿りついたのが、zbar というツールです。
この zbar というパッケージに含まれる zbarcam で読み取れそうでしたが、またしても マトリックス 状態。

zbarcam の help を見てみると、こうなってました。
[root@hoge ~]# zbarcam --help
usage: zbarcam [options] [/dev/video?]

scan and decode bar codes from a video stream

options:
    -h, --help      display this help text
    --version       display version information and exit
    -q, --quiet     disable beep when symbol is decoded
    -v, --verbose   increase debug output level
    --verbose=N     set specific debug output level
    --xml           use XML output format
    --raw           output decoded symbol data without symbology prefix
    --nodisplay     disable video display window
    --prescale=x
                    request alternate video image size from driver
    -S[=], --set [=]
                    set decoder/scanner  to  (or 1)

[root@hoge ~]# ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 11月  3 18:57 /dev/video0
crw-rw----+ 1 root video 81, 1 11月  3 18:57 /dev/video1
crw-rw----+ 1 root video 81, 2 11月  3 18:57 /dev/video2
crw-rw----+ 1 root video 81, 3 11月  3 18:57 /dev/video3
これを見て、ThinkPad 25 には赤外線カメラも付いてるし、マトリックス状態になるのは赤外線カメラが選択されているからでは?と試してみたら、video2 を指定することで正常に動きました!

以上、どなたかのご参考に。
人気ブログランキングへ にほんブログ村 IT技術ブログへ