*** SUMMARY *** Thinkpad T580, OpenBSD amd64 7.3-stable, twm window manager. Prior to today, I had a window-manager keybinding for "F1". Starting today, I need to hold down the "Fn" key and press "F1" to get the "F1" keybinding; if I just press "F1" I get the Lenovo-defined system action (in this case muting the audio volume). What caused the change, and how can I revert to the old behavior?
*** DETAILS *** I have a Thinkpad T580 (dmesg below) running amd64 7.3-stable, currently with syspatches 001-015 inclusive. I normally use ctwm (ports) as a window manager, but all the behavior I describe in this message persists when I switch back to twm (in base). I setup various keybindings in my ~/.twmrc and ~/.ctwmrc (given in full below), including that pressing the "F1" key raises the current window to be on top in the window-stacking order: "F1" = : window : f.raise "F1" = : title : f.raise I don't set any keybinding for "Fn/F1" (i.e., pressing the "F1" key while holding down the "Fn" key), so this invokes Lenovo's default action for F1, i.e., muting the audio output (the F1 keycap has an icon of a speaker with a line through it). I've been using this setup for many years on a variety of Thinkpads and OpenBSD releases, and it has all worked fine. A few weeks ago I had a repair shop replace the T580's keyboard after a keyspring started failing; the above function-key bindings all worked fine with the new keyboard. But starting today I see a new behavior: pressing "F1" now gives the behavior I used to get with "Fn/F1" (mute the audio volume), and pressing "Fn/F1" now gives the behavior I used to get with plain "F1" (raise the current window). More generally, for any x in the range 1 through 12 inclusive, "Fx" now invokes the Lenovo default action, while "Fn/Fx" invokes my keybinding (if any). (For example, "F5" and "F6" now decrease and increase the screen brightness.) The new behavior has persisted through a cold boot, and (as noted above) is identical for ctwm (ports) and twm (in base). The new behavior does *NOT* occur for a Thinkpad T530 with an identical software setup (amd64 7.3-stable, same set of syspatches, same ~/.twmrc and ~/.ctwmrc). That is, on the T530 I see the same behavior I saw prior to today on the T580, namely that for any x in the range 1 through 12 inclusive, "Fx" invokes my keybinding for "Fx" (if any), while "Fn/Fx" invokes the Lenovo default action. (For example, on the T530 "F1" invokes the raise-window keybinding, while "Fn/F8" and "Fn/F9" decrease and increase the screen brightness.) The twm and ctwm binaries have identical checksums between the T530 and T580, as do ~/.ctwmrc and ~/.twmrc % cksum `which ctwm` `which twm` ~/.ctwmrc ~/.twmrc 1100362473 518296 /usr/local/bin/ctwm 998664569 202936 /usr/X11R6/bin/twm 931165269 5767 /home/jonathan/.ctwmrc 3395929888 5551 /home/jonathan/.twmrc % My basic question is, can anyone suggest what the cause of this change might be (apart from "wierd hardware failure in new T580 keyboard"), and/or what I might do on the T580 to revert to the old behavior? One possible workaround is to modify the key bindings in ~/.twmrc and ~/.ctwmrc, but I'd prefer to understand the cause of the change before I start trying workarounds. Here is the T580 dmesg: --- begin /var/run/dmesg.boot --- OpenBSD 7.3 (GENERIC.MP) #3: Tue Jul 25 08:20:26 MDT 2023 r...@syspatch-73-amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP real mem = 33922605056 (32351MB) avail mem = 32875106304 (31352MB) random: good seed from bootblocks mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 3.0 @ 0xa86db000 (62 entries) bios0: vendor LENOVO version "N27ET43W (1.29 )" date 08/13/2021 bios0: LENOVO 20L9001GUS acpi0 at bios0: ACPI 5.0 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP SSDT SSDT TPM2 UEFI SSDT SSDT HPET APIC MCFG ECDT SSDT SSDT BOOT BATB SLIC SSDT SSDT SSDT LPIT WSMT SSDT SSDT SSDT DBGP DBG2 MSDM DMAR ASF! FPDT UEFI acpi0: wakeup devices GLAN(S4) XHC_(S3) XDCI(S4) HDAS(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) RP06(S4) PXSX(S4) RP07(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpihpet0 at acpi0: 23999999 Hz acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1793.87 MHz, 06-8e-0a cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 4-way L2 cache, 8MB 64b/line 16-way L3 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges cpu0: apic clock running at 24MHz cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1.1.1, IBE cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1794.25 MHz, 06-8e-0a cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu1: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 4-way L2 cache, 8MB 64b/line 16-way L3 cache cpu1: smt 0, core 1, package 0 cpu2 at mainbus0: apid 4 (application processor) cpu2: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1795.82 MHz, 06-8e-0a cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu2: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 4-way L2 cache, 8MB 64b/line 16-way L3 cache cpu2: smt 0, core 2, package 0 cpu3 at mainbus0: apid 6 (application processor) cpu3: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1795.82 MHz, 06-8e-0a cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN cpu3: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 4-way L2 cache, 8MB 64b/line 16-way L3 cache cpu3: smt 0, core 3, package 0 ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 120 pins acpimcfg0 at acpi0 acpimcfg0: addr 0xf0000000, bus 0-127 acpiec0 at acpi0 acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus 2 (RP01) acpiprt2 at acpi0: bus -1 (RP02) acpiprt3 at acpi0: bus -1 (RP03) acpiprt4 at acpi0: bus -1 (RP04) acpiprt5 at acpi0: bus -1 (RP05) acpiprt6 at acpi0: bus -1 (RP06) acpiprt7 at acpi0: bus 4 (RP07) acpiprt8 at acpi0: bus -1 (RP08) acpiprt9 at acpi0: bus 7 (RP09) acpiprt10 at acpi0: bus -1 (RP10) acpiprt11 at acpi0: bus 64 (RP11) acpiprt12 at acpi0: bus -1 (RP12) acpiprt13 at acpi0: bus -1 (RP13) acpiprt14 at acpi0: bus -1 (RP14) acpiprt15 at acpi0: bus -1 (RP15) acpiprt16 at acpi0: bus -1 (RP16) acpiprt17 at acpi0: bus -1 (RP17) acpiprt18 at acpi0: bus -1 (RP18) acpiprt19 at acpi0: bus -1 (RP19) acpiprt20 at acpi0: bus -1 (RP20) acpiprt21 at acpi0: bus -1 (RP21) acpiprt22 at acpi0: bus -1 (RP22) acpiprt23 at acpi0: bus -1 (RP23) acpiprt24 at acpi0: bus -1 (RP24) acpipci0 at acpi0 PCI0: 0x00000010 0x00000011 0x00000000 acpithinkpad0 at acpi0: version 2.0 acpiac0 at acpi0: AC unit online acpibat0 at acpi0: BAT0 model "00UR891" serial 10036 type LiP oem "SMP" acpibat1 at acpi0: BAT1 model "01AV452" serial 1658 type LiP oem "SMP" "LEN0100" at acpi0 not configured "INT3403" at acpi0 not configured "INT3403" at acpi0 not configured "INT3403" at acpi0 not configured "INT3403" at acpi0 not configured "INT3403" at acpi0 not configured "INT3403" at acpi0 not configured "INT3403" at acpi0 not configured acpicmos0 at acpi0 acpibtn0 at acpi0: SLPB "PNP0C14" at acpi0 not configured "INT33A1" at acpi0 not configured acpibtn1 at acpi0: LID_ "PNP0C14" at acpi0 not configured "PNP0C14" at acpi0 not configured "PNP0C14" at acpi0 not configured "INT3400" at acpi0 not configured tpm0 at acpi0 TPM_ 2.0 (TIS) addr 0xfed40000/0x5000, device 0x0000104a rev 0x4e "USBC000" at acpi0 not configured acpicpu0 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu1 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu2 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu3 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpipwrres0 at acpi0: PUBS, resource for XHC_ acpitz0 at acpi0: critical temperature is 98 degC acpivideo0 at acpi0: GFX0 acpivout0 at acpivideo0: DD1F cpu0: using VERW MDS workaround (except on vmm entry) cpu0: Enhanced SpeedStep 1793 MHz: speeds: 2101, 2100, 1900, 1800, 1700, 1600, 1500, 1400, 1200, 1100, 1000, 800, 700, 600, 500, 400 MHz pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel Core 8G Host" rev 0x08 inteldrm0 at pci0 dev 2 function 0 "Intel UHD Graphics 620" rev 0x07 drm0 at inteldrm0 inteldrm0: msi, KABYLAKE, gen 9 "Intel Core 6G Thermal" rev 0x08 at pci0 dev 4 function 0 not configured "Intel Core GMM" rev 0x00 at pci0 dev 8 function 0 not configured xhci0 at pci0 dev 20 function 0 "Intel 100 Series xHCI" rev 0x21: msi, xHCI 1.0 usb0 at xhci0: USB revision 3.0 uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 addr 1 pchtemp0 at pci0 dev 20 function 2 "Intel 100 Series Thermal" rev 0x21 "Intel 100 Series MEI" rev 0x21 at pci0 dev 22 function 0 not configured ppb0 at pci0 dev 28 function 0 "Intel 100 Series PCIE" rev 0xf1: msi pci1 at ppb0 bus 2 ppb1 at pci0 dev 28 function 6 "Intel 100 Series PCIE" rev 0xf1: msi pci2 at ppb1 bus 4 iwm0 at pci2 dev 0 function 0 "Intel Dual Band Wireless-AC 8265" rev 0x78, msi ppb2 at pci0 dev 29 function 0 "Intel 100 Series PCIE" rev 0xf1: msi pci3 at ppb2 bus 7 ppb3 at pci0 dev 29 function 2 "Intel 100 Series PCIE" rev 0xf1: msi pci4 at ppb3 bus 64 nvme0 at pci4 dev 0 function 0 vendor "Samsung", unknown product 0xa80c rev 0x00: msix, NVMe 2.0 nvme0: Samsung SSD 990 PRO 2TB, firmware 1B2QJXD7, serial S73WNJ0W400838L scsibus1 at nvme0: 2 targets, initiator 0 sd0 at scsibus1 targ 1 lun 0: <NVMe, Samsung SSD 990, 1B2Q> sd0: 1907729MB, 512 bytes/sector, 3907029168 sectors pcib0 at pci0 dev 31 function 0 "Intel 200 Series LPC" rev 0x21 "Intel 100 Series PMC" rev 0x21 at pci0 dev 31 function 2 not configured azalia0 at pci0 dev 31 function 3 "Intel 200 Series HD Audio" rev 0x21: msi azalia0: codecs: Realtek ALC257, Intel/0x280b, using Realtek ALC257 audio0 at azalia0 ichiic0 at pci0 dev 31 function 4 "Intel 100 Series SMBus" rev 0x21: apic 2 int 16 iic0 at ichiic0 em0 at pci0 dev 31 function 6 "Intel I219-LM" rev 0x21: msi, address 48:2a:e3:1b:f6:6b isa0 at pcib0 isadma0 at isa0 pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard pms0 at pckbc0 (aux slot) wsmouse0 at pms0 mux 0 wsmouse1 at pms0 mux 0 pms0: Synaptics clickpad, firmware 8.16, 0x1e2b1 0x940300 0x33cc40 0xf01fa3 0x12e800 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 vmm0 at mainbus0: VMX/EPT uvideo0 at uhub0 port 8 configuration 1 interface 0 "Azurewave Integrated Camera" rev 2.01/17.11 addr 2 video0 at uvideo0 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets sd1 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006> sd1: 65538MB, 512 bytes/sector, 134222419 sectors root on sd1a (bebcaf82143ab665.a) swap on sd1b dump on sd1b drm:pid0:intel_ddi_sanitize_encoder_pll_mapping *NOTICE* [drm] [ENCODER:102:DDI B/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it drm:pid0:intel_ddi_sanitize_encoder_pll_mapping *NOTICE* [drm] [ENCODER:116:DDI C/PHY C] is disabled/in DSI mode with an ungated DDI clock, gate it inteldrm0: 1920x1080, 32bpp wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0 wsdisplay0: screen 1-5 added (std, vt100 emulation) iwm0: hw rev 0x230, fw ver 36.ca7b901d.0, address 18:56:80:24:28:40 --- end /var/run/dmesg.boot --- And here is the ~/.twmrc --- begin ~/.twmrc --- # .twmrc -- set twm(1) defaults # # # Colors # Color { BorderColor "white" BorderTileForeground "white" BorderTileBackground "black" TitleForeground "white" TitleBackground "black" MenuForeground "white" MenuBackground "black" MenuTitleForeground "black" MenuTitleBackground "white" MenuShadowColor "white" IconForeground "white" IconBackground "black" IconBorderColor "white" IconManagerForeground "white" IconManagerBackground "black" ##PointerForeground "Red" ##PointerBackground "Red" } Monochrome { BorderColor "white" BorderTileForeground "white" BorderTileBackground "black" TitleForeground "white" TitleBackground "black" MenuForeground "white" MenuBackground "black" MenuTitleForeground "black" MenuTitleBackground "white" MenuShadowColor "white" IconForeground "white" IconBackground "black" IconBorderColor "white" IconManagerForeground "white" IconManagerBackground "black" } # # Fonts # MenuFont "9x15bold" TitleFont "7x14" IconFont "7x14" ResizeFont "7x14" IconManagerFont "7x14" # # Other window appearance stuff # BorderWidth 4 FramePadding 2 ClientBorderWidth UsePPosition "on" RandomPlacement OpaqueMove DontMoveOff Zoom NoRaiseOnMove NoRaiseOnResize DecorateTransients # # Icon manager stuff # IconManagerGeometry "=100x10-0+271" NoTitle { "TWM" "xclock" "xbatt" "temp" ##"xmeter" "xcpu" "console" } NoHighlight { "xclock" "xbatt" "temp" "xmeter" } AutoRaise { ###"nothing" # I don't like auto-raise ##"xclock" ##"xbatt" ##"temp" ##"xmeter" } DefaultFunction f.menu "default-menu" #Button = KEYS : CONTEXT : FUNCTION #---------------------------------- Button1 = : root : f.menu "button1" Button1 = : title : f.menu "button1" Button1 = : title : f.raiselower Button1 = : frame : f.raiselower Button1 = : icon : f.iconify Button1 = m : icon : f.raise Button2 = : root : f.menu "TwmWindows" Button2 = : title : f.move Button2 = : frame : f.move Button2 = : icon : f.move Button2 = m : icon : f.move Button3 = : root : f.menu "button3" Button3 = : title : f.menu "button3" ## do NOT raise on right-click so I can click to recover from "mouse grab" ##Button3 = : frame : f.raiselower Button3 = : icon : f.raiselower Button3 = : iconmgr : f.function "de-raise-n-focus" Button3 = c : root : f.function "beep-beep" Button3 = m : icon : f.lower "F1" = : window : f.raise "F1" = : title : f.raise "F2" = : window : f.raise "F2" = : title : f.raise "F9" = : window : :!"$HOME/bin/fsel" "F9" = : title : :!"$HOME/bin/fsel" "F11" = : window : f.lower "F11" = : title : f.lower "F12" = : window : f.lower "F12" = : title : f.lower Function "beep-beep" { f.beep f.beep f.beep f.beep f.beep } Function "de-raise-n-focus" { f.deiconify f.raise f.focus } Function "raise-n-focus" { f.raise f.focus } menu "button1" { "Web Browsers" f.title " firefox (X, different user)" !"(chdir /tmp; $HOME/bin/firefox-via-X &)" "" f.nop " iridium" !"(chdir /tmp; iridium --user-data-dir=$HOME/.config/iridium &)" "" f.nop " chromium" !"(chdir /tmp; chrome --user-data-dir=$HOME/.config/chromium&)" "" f.nop " firefox (ssh, different user)" !"(chdir /tmp; $HOME/bin/firefox-via-ssh &)" " firefox (jonathan, raw)" !"(chdir /tmp; firefox -P firefox-raw &)" "" f.nop " epiphany [Ctrl-q exits]" !"(chdir /tmp; epiphany &)" ## midori infinite-loops creating new windows over & over again :( ##" midori [Ctrl-shift-Q exits]" !"(chdir /tmp; midori &)" "" f.nop " netsurf [NO JAVASCRIPT]" !"(chdir /tmp; netsurf-gtk &)" " surf [NO JAVASCRIPT]" !"(chdir /tmp; surf &)" " dillo [NO JAVASCRIPT]" !"(chdir /tmp; dillo &)" } menu "button3" { "Window Ops" f.title " Refresh" f.refresh " Resize Window" f.resize "forceMove Window" f.forcemove " Raise or Lower" f.raiselower " Magnify" !"xmag -source 128x128 &" " Dump >/tmp/bkis.xwd --> .pnm" !"(xwd -out /tmp/bkis.xwd; xwdtopnm /tmp/bkis.xwd >/tmp/bkis.pnm; /bin/rm -f /tmp/bkis.xwd) &" "Dump >/tmp/bkis.xwd --> .png" !"(xwd -out /tmp/bkis.xwd; xwdtopnm /tmp/bkis.xwd | pnmtopng >/tmp/bkis.png; /bin/rm -f /tmp/bkis.xwd) &" "" f.nop "Default Menu" f.menu "default-menu" "" f.nop "sync; suspend (NO LOCK)" !"sync; sleep 1; sync; sleep 2; zzz" "sync; blank screen (NO LOCK)" !"sync; xlock -nolock -mode blank -delay 250000 &" "" f.nop "sync; lock screen" !"sync; xlock -mode blank -delay 250000 &" "" f.nop ## this doesn't work reliably -- sometimes it locks, sometimes it doesn't :( ##"sync; lock screen ; suspend" !"sync; (xlock -mode blank -delay 250000 &); sleep 2; sync; sleep 3; zzz" "" f.nop "*** Kill Window ***" f.destroy "" f.nop "" f.nop "*** Kill twm ***" f.quit } menu "Icon" { "Show Icon Mgr" f.showiconmgr "Hide Icon Mgr" f.hideiconmgr "(De)Iconify" f.iconify "DeIconify" f.deiconify } menu "default-menu" { "Default Menu" f.title "Refresh" f.refresh "Refresh Window" f.winrefresh "Zoom" f.zoom "Icon actions" f.menu "Icon" "twm Version" f.version "Focus on Root" f.unfocus "Source .twmrc" f.twmrc "Cut File" f.cutfile "(De)Iconify" f.iconify "DeIconify" f.deiconify "Move Window" f.move "Resize Window" f.resize "Raise Window" f.raise "Lower Window" f.lower "Focus on Window" f.focus "Raise-n-Focus" f.function "raise-n-focus" "Destroy Window" f.destroy "Zoom Window" f.zoom "FullZoom Window" f.fullzoom "Kill twm" f.quit } --- end ~/.twmrc --- Thanks for any insights anyone can offer, -- -- "Jonathan Thornburg [remove -color to reply]" <dr.j.thornb...@gmail-pink.com> currently on the west coast of Canada "!07/11 PDP a ni deppart m'I !pleH" -- slashdot.org page footer, 2022-10-16 "eHpl !'I mrtpaep dnia P PD1 /107" -- slightly more plausible message given the PDP-11's little-endian byte order