~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/SLOF/slof/fs/usb/dev-keyb.fs

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
new-device
 
2
 
 
3
VALUE sudev
 
4
false VALUE usb-keyb-debug?
 
5
 
 
6
s" slofdev.fs" included
 
7
sudev slof-dev>port l@ dup set-unit encode-phys " reg" property
 
8
sudev slof-dev>udev @ VALUE udev
 
9
 
 
10
s" usb-keyboard" device-name
 
11
s" keyboard" device-type
 
12
s" EN" encode-string s" language" property
 
13
s" keyboard" get-node node>path set-alias
 
14
 
 
15
s" dev-parent-calls.fs" included
 
16
 
 
17
0 VALUE open-count
 
18
 
 
19
: open   ( -- true | false )
 
20
    usb-keyb-debug? IF ." USB-KEYB: Opening (count is " open-count . ." )" cr THEN
 
21
    open-count 0= IF
 
22
        udev USB-HID-INIT 0= IF
 
23
            ." USB keyboard setup failed " pwd cr false EXIT
 
24
        THEN
 
25
    THEN
 
26
    open-count 1 + to open-count
 
27
    true
 
28
;
 
29
 
 
30
: close
 
31
    usb-keyb-debug? IF ." USB-KEYB: Closing (count is " open-count . ." )" cr THEN
 
32
    open-count 0> IF
 
33
        open-count 1 - dup to open-count
 
34
        0= IF
 
35
            my-phandle set-node
 
36
            udev USB-HID-EXIT drop
 
37
            0 set-node
 
38
        THEN
 
39
    THEN
 
40
;
 
41
 
 
42
\ method to check if a key is present in output buffer
 
43
\ used by 'term-io.fs'
 
44
: key-available? ( -- true|false )
 
45
    udev USB-KEY-AVAILABLE IF TRUE ELSE FALSE THEN
 
46
;
 
47
 
 
48
: read                     ( addr len -- actual )
 
49
    0= IF drop 0 EXIT THEN
 
50
    udev USB-READ-KEYB ?dup IF swap c! 1 ELSE 0 swap c! 0 then
 
51
;
 
52
 
 
53
."     USB Keyboard " cr
 
54
finish-device